巧用Shadowsocks Replay
使用 Shadowsocks 有一段时间了,基本上也找到了比较靠谱的使用方法。
除了基本的优化方法之外,还有一些其他的用法。
这里我们介绍利用 Haproxy 来做 Shadowsocks 中继来实现加速的效果。
很多时候,我们自己的网络直连国外的 Shadowsocks 服务器由于各种的网络原因,国际出口带宽限制等,速度会比较慢。这时,某些情况下,我们可以试试曲线救国。利用国内某个网络比较好的主机做中继,利用他的优秀的网络,连接上国外。实现总体加速的效果。
之所以想尝试这种方式,是因为自己手上管理着国内校园网的一台主机,并且可以使用 IPv6。我的 DO 主机都是默认开启了 IPv6 支持的,我们学校的 IPv6 管理不严,几乎没有什么限制,国际出口带宽,通过下载测试文件,达到过 50 M 带宽。而且这个校园网的主机,在全国大部分地方的网络还是比较通畅的。
首先,Shadowsocks 官方是有介绍 Relay 的文档的。
这里我们简要的介绍一下。
官方文档里,最先介绍的是利用 iptables 做的转发。但是这种方法不够直观,而且不利于调优。我们比较推荐利用 Haproxy 的方式。
Haproxy 本来是一个 4/7 层的负载均衡软件,这里,我们可以利用他来实现中继或者负载均衡的效果。
首先要在国内的主机上安装 Haproxy。如果需要 IPv6 的支持的话,你需要安装 Haproxy 1.5 版本。
然后是配置文件/etc/haproxy/haproxy.cfg
。
1 | global |
上面是 Haproxy 1.4 的配置文件,到 1.5 版本之后,contimeout、clitimeout、srvtimeout 官方建议改成timeout connect
、timeout client
和timeout server
。
timeout connect
在 shadowsocks 的官方文档里写的是1000毫秒,但是在实际使用过程中发现,这样子经常会出现连接断掉的情况,建议改成10000,也就是10秒。
在backend
里面,写上你的 shadowsocks 的地址即可。IPv6 也一样写法。
然后运行即可haproxy -f /etc/haproxy/haproxy.cfg
。
同时,如果你有多个 Shadowsocks 的话,还可以继续写在backend
里面,可以起到负载均衡的作用。但是这样的话,就建议,这多个 Shadowsocks 的密码得是相同的,要不然本机的 shadowsocks 就不好处理了。