基本上算作官网文档的补充,官网很多东西散落在各个角落,不太好找,本文稍微归纳了一下。
技术发展日新月异,随着时间的流逝文中的一些东西可能会过时,请注意更新时间。

最后修改:2017–07–23。
目前主流的 shadowsocks 分为 shadowsocks-libev 和 shadowsocks-rss 两大类,shadowssocks-libev 速度快,官方,占用资源小,但是对多用户支持不是很好,配置较复杂;shadowsocks-rss 是@breakwa11从原版中 fork 出来,增加许多易用特性,同时资源占用较高。
首先你要有台用于搭建 ss 的服务器。另外本教程适合用户个人使用,如果想建站,请自行查阅其他资料。本文以 Centos 7 服务器举例。
shadowsocks-libev
安装
按官网说明安装软件,建议采用手动方法,原因一是能保证用的是最新版,二是出了问题容易上网搜索解决。
Installation
不过官网上写得有些混乱,如果看不懂的话直接无脑进行如下操作即可:
yum install epel-release -y
yum install gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto udns-devel libev-devel libsodium-devel mbedtls-devel -y
git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd shadowsocks-libev
git submodule update --init --recursive
./autogen.sh && ./configure && make
sudo make install配置
安装完成后官网就啥都没说了,我曾陷入很长一段迷茫当中,后来发现了继续前进的方法。
添加配置文件:
cp ./rpm/SOURCES/etc/init.d/shadowsocks-libev /etc/init.d/shadowsocks-libev
cp ./debian/config.json /etc/shadowsocks-libev/config.json
chmod +x /etc/init.d/shadowsocks-libev然后
vim /etc/shadowsocks-libev/config.json修改里面的配置,这里给个 demo,具体每个参数什么意思在官网了解吧:
{
"server":["[::0]","0.0.0.0"],
"server_port":8388,
"local_port":1080,
"password":"barfoo!",
"timeout":60,
"method":"chacha20-ietf-poly1305"
}该配置同时支持 Ipv6 和 Ipv4,并采用 ss3.0 支持的 AEAD 加密方式。
接下来我们要修改 /etc/init.d/shadowsocks-libev,由于历史原因这里面有点问题。
把文件中的DAEMON=/usr/bin/ss-server改成DAEMON=/usr/local/bin/ss-server
修改完成后修改文件权限
chmod 755 /etc/init.d/shadowsocks-libev启动 shadowsocks-libev
/etc/init.d/shadowsocks-libev start设置开机启动
chkconfig --add shadowsocks
service shadowsocks start开启防火墙白名单
很多人按照教程的配置完后,发现并不能使用,原因是端口被防火墙关闭了。
输入如下代码开启防火墙端口白名单:
vim /etc/firewalld/zones/public.xml在文件中适当位置添加下面代码:
<port protocol="tcp" port="[server port]"/>
<port protocol="udp" port="[server port]"/>[server port] 填你的端口号。
重启防火墙
firewall-cmd --complete-reload客户端
在这里面找适合自己版本的吧
GitHub
shadowsocks-rss
安装
普通用户使用下面的安装方法即可,该方法的特点是修改容易,可以给不同端口分配不同密码。
官方教程:ShadowsocksR 服务端安装教程
配置
初始配置在安装中已经说明得很清楚了,关于配置文件的细节则在下面文件找到。
配置文件各项说明
开启防火墙白名单
很多人按照教程的配置完后,发现并不能使用,原因是端口被防火墙关闭了。
输入如下代码开启防火墙端口白名单:
vim /etc/firewalld/zones/public.xml在文件中适当位置添加下面代码:
<port protocol="tcp" port="[server port]"/>
<port protocol="udp" port="[server port]"/>[server port] 填你的端口号。
重启防火墙
firewall-cmd --complete-reload客户端
看这个吧GitHub 主页
下载地址在这里:
Releases Page
使用iptables 统计各端口流量
例子
统计5902端口上的出网流量(这里统计的是用户下载流量):
iptables -A OUTPUT -p tcp --sport 5902-A OUTPUT 表示在OUTPUT上增加一条规则
-D OUTPUT 表示在OUTPUT上删除一条规则
-p tcp 表示指定tcp协议
–sport 5902 表示出网的端口号为5902
统计5902端口上的进网流量(这里统计的是用户上传流量):
iptables -A INPUT -p tcp --dport 5902-A INPUT表示在INPUT上增加一条规则
-D INPUT表示在INPUT上删除一条规则
-p tcp 表示指定tcp协议
–dport 5902 表示入网的端口号为5902
添加完成之后就可以通过下面命令查看流量信息
iptables -vnL
iptables -vnL>/home/iptables.log #输出内容到文件在INPUT下面的就是入网流量,OUTPUT里面的是出网流量,默认是使用易读的单位,也就是自动转化成M,G。如过需要Bytes做单位,则增加一个-x参数:
iptables -n -v -L -t filter -x流量信息自添加规则之后开始统计,无法显示之前的流量信息。 重启防火墙,流量统计数据将会被重置
pkts一列是包的数量 bytes一列是流量统计结果
最后:
一般重启后iptables规则会丢失,因此需要进行保存操作。
service iptables save #保存防火墙配置
vi /etc/sysconfig/iptables #编辑防火墙配置
service iptables restart #重启防火墙