Shadowsocks 安装与配置教程

由于某些原因原作者删除了在 GitHub 上 Shadowsocks 的代码仓库并且停止对代码的维护,但是这并不妨碍SS在服务器上的安装。wiki 上的资料都还在,我在安装过程中根据 Shadowsocks 官网以及在 Github 上的资料完成本次安装。

一台 VPS

我推荐两家我用过的服务商吧,一家是Vultr,也是我正在使用的,没有信用卡的话也可以使用PayPal支付;另一家是搬瓦工(Bandwagon)

搬瓦工有低配且便宜的选择,如果只是用于科学上网也还可以,目前在亚洲没有机房。Vultr相比搬瓦工费用能高一丢丢,最低配置(15GB SSD,1CPU,768MB Memory,1000GB Bandwidth)也不算差,除了科学上网放个网站也足矣。目前我使用东京节点的机子,进行路由跟踪你会发现会绕道美国,也有绕道香港的,这和当前所处的网络环境也有一定的关系。

现在Vultr正在做活动,使用我的Vultr邀请链接注册购买,你可获20美元而我可以拿30美元,前提是你往账户里充上10美元哈。不多说了,下面的内容才是重点。

安装 Shadowsocks

CentOS:

1
2
# yum install python-setuptools && easy_install pip
# pip install shadowsocks

Debian / Ubuntu:

1
2
# apt-get install python-pip
# pip install shadowsocks

服务器系统一般默认安装了 Python ,查看当前版本:

1
2
# python --version
Python 2.7.5

确保服务器安装的是 Python 2.6 or 2.7

配置 Shadowsocks

创建一份配置文件/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
}

参数:

server:服务器IP地址
server_port:SS服务指定端口
local_address:本地服务地址,默认127.0.0.1
local_port:本地服务端口,常用1080
password:SS服务密码,禁止使用默认密码mypassword
timeout:服务超时,单位秒s
method:加密方式,默认aes-256-cfb
fast_open:TCP Fast Open ,true or false

配置多用户账号:

1
2
3
4
5
6
7
8
9
10
11
{
"server":"my_server_ip",
"port_password":{
"8388":"mypassword",
"8389":"mypassword",
"8390":"mypassword"
},
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

配置大同小异,如果文件写错运行会有错误提示。

使用 Shadowsocks

安装并写好配置后即可运行:

1
# ssserver -c /etc/shadowsocks.json

如果你通过SSH终端成功运行该命令,当关掉终端窗口服务随即终止。所以需要执行SS服务后台运行:

1
2
# ssserver -c /etc/shadowsocks.json -d start
# ssserver -c /etc/shadowsocks.json -d stop

如果要检查日志:

1
# less /var/log/shadowsocks.log

启动成功后,在各个平台设置好后即可使用。

某些情况导致 Shadowsocks 无法正常使用

防火墙禁止端口访问

SS 安装了也配置了,启动服务也没问题,但是在电脑或者手机连接上直接超时了。这可能是防火墙的问题,Vultr 的CentOS 7 默认打开了防火墙,而 Ubuntu 14.04 则没有。

可清空防火墙所有规则:

1
# iptables -F

个人觉得没必要清空规则,相反,我们可以手动添加规则确保 SS 所使用的端口能正常使用:

1
2
# firewall-cmd --zone=public --add-port=8088/tcp --permanent
# firewall-cmd --zone=public --add-port=8088/udp --permanent

port即在配置文件里写的端口,执行后规则立即生效。

也可以通过修改/etc/firewalld/zones/public.xml文件,增加所要使用的端口,比如增加8088端口:

1
2
<port protocol="tcp" port="8088"/>
<port protocol="udp" port="8088"/>

保存后,运行:

1
# firewall-cmd --complete-reload

配置生效。

socket.error: [Errno 99] Cannot assign requested address

在国内主机我尝试搭建 SS 也碰到过这个问题,具体解决办法是将 server 的 IP 设置为 0.0.0.0 即可解决上述问题,配置这样写:

1
2
3
4
5
6
7
8
9
10
{
"server":"0.0.0.0",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port:":1080,
"password":"mypassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

最后

感谢clowwindy的贡献,希望 Shadowsocks 能助你轻松科学上网。