Shadowsocks,Vultr,IPV6搭建校园网免流量环境

胡说八道

原因

由于校园网不够用且资费太贵,看到可以通过IPv6实现免流量上网,所以决定试一下。

其实大可不必那么麻烦(有其它的更方便的方式实现翻墙+免流量,而且免费),只是感觉作为一个程序员还是需要弄一个VPS玩玩的,否则出去说都没弄过VPS多可笑,嗯,弄一下,长长见识。

ShadowSocks

ShadowSocks是一个安全的socks5代理,它通过客户端以指定的密码、加密方式和端口连接服务器,成功连接到服务器后,客户端在用户的电脑上构建一个本地socks5代理。使用时将流量分到本地socks5代理,客户端将自动加密并转发流量到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网。

VPS

不多说了,防和&*%¥#谐。

服务器端

这里假设你已经购买并部署好了VPS(如果要通过IPv6实现免流量上网,你的VPS需要有IPv6地址),可以接着往下看。

注意:这里OSCentOS 6 x64,以下操作也是在这个环境下进行的。

初始设置

如果第一次登陆,输入下面命令更改密码:

1
2
$ passwd
# 输入新密码两次

安装各种配置工具:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 一些安装包需要的编译工具
$ yum install gcc
$ yum install libevent
$ yum install python-devel

# 安装python的pip包管理
$ yum install python-setuptools && easy_install pip
$ pip install gevent

# 安装加密工具
$ yum install openssl-devel
$ yum install swig
$ pip install M2Crypto

# 安装shadowsocks服务器端
$ pip install shadowsocks

服务器配置

自定义配置文件

1
2
# 使用vi新建shadowsocks.json配置文件
$ vi /etc/shadowsocks.json

直接输入:set paste, 然后输入i进入Paste insert状态

1
2
3
4
5
6
7
8
9
# 粘贴下列数据到配置文件中
{
"server":"::",
"server_port":9999,
"local_port":1080,
"password":"password",
"timeout":300,
"method":"aes-256-cfb"
}

其中"server"一栏之所以填"::"是为了同时监听IPv4/v6两个端口,因为本文的需求中我们需要双栈连接,如果VPS没有IPv6功能或仅是为了搭梯子用,这里面填写一个IPv4的地址就可以了。"password"栏填写自己要设置的密码。至于"method"加密方式一栏,主流的有rc4-md5aes-256-cfb等等,据说前者速度快,后者更安全,可以根据个人喜好自行权衡。

如果有多个用户需要使用而不想都使用一套端口和密码,可以如下写成多端口配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 粘贴下列数据到配置文件中
{
"server":"::",
"port_password":
{
"8388":"pwd",
"8389":"pwd",
"8340":"pwd"
},
"local_port":1080,
"timeout":300,
"method":"aes-256-cfb"
}

启动服务

注意:

  1. 必须关闭IPv4IPv6的防火墙,它俩的防火墙是独立的所以都要关闭,否则客户端连接不上的。网上的教程都没说,捣鼓了半天看了别人的评论才想到的防火墙也要关闭。

Redhat使用了SELinux来增强安全,关闭的办法为:

  1. 永久有效
    修改 /etc/selinux/config 文件中的 SELINUX=""disabled,然后重启。
  2. 即时生效
    setenforce 0

关闭防火墙的方法为:

  1. 永久性生效
    开启:chkconfig iptables on
    关闭:chkconfig iptables off
  2. 即时生效,重启后失效
    开启:service iptables start
    关闭:service iptables stop

需要说明的是对于 Linux 下的其它服务都可以用以上命令执行开启和关闭操作

补充:
a. 防火墙还需要关闭ipv6的防火墙:
chkconfig ip6tables off
并且可以通过如下命令查看状态:
chkconfig --list iptables
b. selinux状态可以通过以下命令查看:
sestatus

保存配置文件后就可以通过以下命令启动和停止ShadowSocks服务了:

1
2
3
4
5
# start
ssserver -c /etc/shadowsocks.json -d start

# stop
ssserver -d stop

客户端

参考其它博客内容即可。如果提示端口冲突,可以把本地端口改成其它的,然后重启即可。

参考

主要参考前两篇文献