有时候需要在 ECS 上访问 Github 的服务,那个速度,真是惨不忍睹啊,正好前几天通过Vultr 搞了一个私人的 SS 服务,上个 Google、看个油管什么的再也没问题了,于是动了在 ECS 上部署 SS Client 的念头。

说动手就动手,SS Client 安装最方便的就是通过pip了,简简单单的使用:

1
pip install shadowsocks

就搞定了,不过这边有个坑,如果你使用的加密协议是aes-256-gcm的话,你就需要用下面这种方式来升级一下才能支持aes-256-gcm方法来源):

1
pip install --upgrade git+https://github.com/shadowsocks/shadowsocks.git@master

然后创建 shadowsocks 的配置文件/etc/sslocal.json,下面是配置模板:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "server": "YOUR_SS_SERVER_IP",
  "server_port": "YOUR_SS_SERVER_PORT",
  "local_address": "127.0.0.1",
  "local_port": YOUR_LOCAL_PORT,
  "password": "YOUR_SS_SERVER_PASSWORD",
  "timeout": 100,
  "method": "aes-256-gcm",
  "fast_open": false
}

接着就让sslocal依据配置文件/etc/sslocal.json在后台运行就可以了,这里用到了nohup,同时将输出清理掉:

1
nohup sslocal -c /etc/sslocal.json /dev/null 2>&1 &

为了方便起见,还可以在开机启动文件/etc/rc.local中加入以上内容,方便以后重启以后自动开启sslocal

好了,开启sslocal后,运行一下:

1
curl --socks5 127.0.0.1:YOUR_LOCAL_PORT ipinfo.io

如果一切正常,你可以看到包含你 SS Server IP 的运行结果:

1
2
3
4
5
{
  "ip": "YOUR_SS_SERVER_IP",
  "hostname": "YOUR_SS_SERVER_HOSTNAME",
  ...
}#

不过 SS 走的是 Socket5,平时我们用到最多的还是 HTTP(s),这时候需要再安装一个Privoxy用于将 Socket5 转到 HTTP(s)上。

一般yum中会自带 Privoxy,如果没有的话,你可以先安装一下EPEL 扩展

1
yum install epel-release -y

然后再安装 Privoxy:

1
yum install privoxy -y

修改 Privoxy 配置文件/etc/privoxy/config中的相关内容,增加转发规则:

1
2
# 注意别忘了结尾那个.
forward-socks5t / 127.0.0.1:YOUR_LOCAL_PORT .

运行 Privoxy,并将它列入开机启动项:

1
2
systemctl start privoxy
systemctl enable privoxy

最后别忘了,在.bashrc或者.zshrc中加入http_proxyhttps_proxy的设置:

1
2
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118

8118是 Privoxy 默认的监听端口,你也可以自行设定。

参考资料

  1. https://github.com/shadowsocks/shadowsocks/issues/986
  2. https://brickyang.github.io/2017/01/14/CentOS-7-%E5%AE%89%E8%A3%85-Shadowsocks-%E5%AE%A2%E6%88%B7%E7%AB%AF/
  3. https://www.loyalsoldier.me/fuck-the-gfw-with-my-own-shadowsocks-server/