使用 HAProxy 加速 Shadowsocks

最近用 ss 上网的速度越来越慢,工作日晚上 Google 都很难连上。ping 了下服务器,发现都在 300、400 ms,或者 time_out,得想些方法加速一下。
后来发现 ss 支持中继,那么只要有一个服务器,连接自己电脑和 ss 服务器都很快的话就能实现加速。下面选了阿里云作为中继服务器进行实践。

1
客户端 < - > 中继服务器 < - > Shadowsocks 服务器

在自己电脑上 ping 中继服务器,中继服务器 ping ss 服务器,延迟分别为 10+ ms、60+ ms。阿里云的出口带宽果然不一样。加速条件满足,开始进入安装配置。

HAProxy

简单介绍下 HAProxy,HAProxy 是一个高效的负载均衡软件,可以实现 TCP/HTTP 的代理。这里使用它将我们发给它的请求转发给 ss 服务器。

安装

1
2
// 以 CentOS 7 为例
yum install haproxy

配置

编辑 /etc/haproxy/haproxy.cfg,保存以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
global
ulimit-n 51200

defaults
log global
mode tcp
option dontlognull
contimeout 1000
clitimeout 150000
srvtimeout 150000

frontend ss-in
bind *:8388
default_backend ss-out

backend ss-out
server server1 222.222.222.222:2222 maxconn 20480

其中,*:8388 中的 8388 是中继服务器接受请求的端口,222.222.222.222:2222 是 ss 服务器的 IP 地址加端口号。
然后执行

1
service haproxy restart

HAProxy 就会在后台进行启动。可以使用 ps -ef 查看进程,lsof -i 查看端口占用情况来验证 HAProxy 是否已经运行。若无法连接中继服务器,使用 iptables -L 查看防火墙规则是否有问题。

客户端的配置,只要将原来配置的 ip 地址和端口更换成中继服务器的 ip 地址和端口号就可以了。

未解之迷

加速之后,公司电脑和手机使用都没问题,个人电脑却死活连不上去,一直显示 ERR_CONNECTION_CLOSED,将原来的 Shadowsocks Mac 客户端替换成 Shadowsocks-libev 之后才行,但明明公司电脑使用的客户端是一样的。

其他加速方法

除 HAProxy 加速之外,还可以使用微林加速,具体可以参考代码家的提速 Shadowsocks。还有个更偷懒的方法,直接购买 CN2 线路的 Shadowsocks。

参考