由于GFW,需要google我们就必须得翻墙。相信程序猿都比较熟悉shadowsocks这款翻墙软件了。它非常轻量,而且配置机器简单,而且支持多平台运行。因为刚好有开通了AWS的EC2,所以就刚好搭建一个shadowsocks服务器。
下面就简单介绍一下在ubuntu下搭建shadowsocks服务器的方法。
安装
因为ss是python写的,所以需要先安装python的包管理工具pip。
1 | $ sudo apt-get install python-pip |
安装ss
1 | pip install shadowsocks |
没错,就是这么简单。ss已经安装完毕。
配置
启动ss服务器的方法也很简单。
1 2 3 4 | $ ssserver -p 443 -k password -m rc4-md5 -p 端口 -k 密码 -m 加密方式 |
后台运行
1 | sudo ssserver -p 443 -k password -m rc4-md5 --user nobody -d start |
停止
1 | sudo ssserver -d stop |
日志文件位于/var/log/shadowsocks.log。
当然,我更建议使用配置文件。创建配置文件/etc/shadowsocks.json。
单端口
1 2 3 4 5 6 7 8 9 10 | { "server":"my_server_ip", "server_port":8388, "local_address": "127.0.0.1", "local_port":1080, "password":"mypassword", "timeout":300, "method":"aes-256-cfb", "fast_open": false } |
多端口
1 2 3 4 5 6 7 8 9 10 | { "server":"0.0.0.0", "port_password": { "端口1": "连接密码1", "端口2" : "连接密码2" }, "timeout":300, "method":"aes-256-cfb", "fast_open": false } |
启停
1 2 | ssserver -c /etc/shadowsocks.json -d start ssserver -c /etc/shadowsocks.json -d stop |
加密方式AES更安全但是较慢。rc4-md5更快,但相对不安全。不过据说之所以不安全是因为 Shadowsocks 在每个连接上重复使用 key,没有使用 IV。现在已经重新正确实现,可以放心使用。更多可以看 issue。
根据以上步骤,ss服务器已经搭建好了。只要在自己的平台上,安装好ss的客户端,配置可以翻墙了。不过,如果需要看youtube等的话,速度还不是辣么的满意,所以需要做一些优化。
优化加速
网上查了一些优化的方式,一些几种是实践之后比较推荐的。
锐速 serverspeeder
锐速是一款tcp加速工具。网上也很多人推荐,不过好像现在是付费了。具体的方法及安装步骤请查看官网。
不过,还是有破解版的。安装也很方便。
1 2 | $ wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/serverspeeder/master/serverspeeder-all.sh $ sudo bash serverspeeder-all.sh |
不过,破解版对内核有要求,内核不匹配需要重装下内核。如果你按上述命令安装不成功,那恭喜你,请移步官网,找具体的解决方法。
netspeeder
net-speeder是在丢包状况下,多次发包来实现的。安装也及其方便,请参考官网。
不过,netspeeder容易被发现墙掉。
TFO
TCP Fast Open可以优化tcp的三次握手次数,加快速度。可以在配置文件中,将fast_open设为true。然后官网说通过下面命令,将fastopen数设置成3。
1 | echo 3 > /proc/sys/net/ipv4/tcp_fastopen |
但是,我的内核并不允许我修改此文件。其实我也不建议直接该这种内核文件。可以通过另一个配置方法。
修改/etc/sysctl.conf文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | # max open files fs.file-max = 51200 # max read buffer net.core.rmem_max = 67108864 # max write buffer net.core.wmem_max = 67108864 # default read buffer net.core.rmem_default = 65536 # default write buffer net.core.wmem_default = 65536 # max processor input queue net.core.netdev_max_backlog = 4096 # max backlog net.core.somaxconn = 4096 # resist SYN flood attacks net.ipv4.tcp_syncookies = 1 # reuse timewait sockets when safe net.ipv4.tcp_tw_reuse = 1 # turn off fast timewait sockets recycling net.ipv4.tcp_tw_recycle = 0 # short FIN timeout net.ipv4.tcp_fin_timeout = 30 # short keepalive time net.ipv4.tcp_keepalive_time = 1200 # outbound port range net.ipv4.ip_local_port_range = 10000 65000 # max SYN backlog net.ipv4.tcp_max_syn_backlog = 4096 # max timewait sockets held by system simultaneously net.ipv4.tcp_max_tw_buckets = 5000 # TCP receive buffer net.ipv4.tcp_rmem = 4096 87380 67108864 # TCP write buffer net.ipv4.tcp_wmem = 4096 65536 67108864 # turn on path MTU discovery net.ipv4.tcp_mtu_probing = 1 # for high-latency network #net.ipv4.tcp_congestion_control = hybla # for low-latency network net.ipv4.tcp_congestion_control = htcp # turn on TCP Fast Open on both client and server side net.ipv4.tcp_fastopen = 3 |
然后,使配置生效。
1 | sudo sysctl -p |
我个人还是选择使用第三种方法。不安装更多第三方软件,而且速度相对还算可以。看下图:
参考
[1] 科学上网之EC2搭建shadowsocks
[2] github shadowsocks wiki
[3] Shadowsocks搭建以及用锐速加速
[4] 科学上网之 Shadowsocks 安装及优化加速