invisprints
Jul 23, 2017 · 6 min read

基本上算作官网文档的补充,官网很多东西散落在各个角落,不太好找,本文稍微归纳了一下。

技术发展日新月异,随着时间的流逝文中的一些东西可能会过时,请注意更新时间。

最后修改: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 服务端安装教程

配置

初始配置在安装中已经说明得很清楚了,关于配置文件的细节则在下面文件找到。
配置文件各项说明

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 #重启防火墙

invisprints

Written by

已迁移到语雀平台https://www.yuque.com/u174839/ip259g,偶尔发些墙内不能发的文章

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade