SS安装配置笔记

挑选合适的 VPS

推荐使用 Vultr 日本的 5 美元一个月的 VPS,价格不错而且延迟是最低的。DigitalOcean 虽然没有日本区的 VPS,但是 Github 教育包提供了一张 DigitalOcean 50美元的优惠券,使用下面我的推广链接的话还可以再获得10美元,在加上激活账号充值的5美元,总共65美元,而 DigitalOcean 最低价的 VPS 是5美元一个月,也就是说花5美元可以使用一年的 VPS。使用下面提供的链接注册会有新用户代金券:

安装配置 Shadowsocks

如果使用的是 Ubuntu16.04 以及以上的系统,可以直接通过系统自带的源安装,如果低于 16.04 的版本,则需要去 Shadowsocks 的 github 上下载最新程序编译安装。

1
2
3
4
5
# 安装 shadowsocks-libev
sudo apt install shadowsocks-libev

# 启动 shadowsocks-libev 服务端
ss-server -c ./ss.json -u

配置文件格式如下,如果不清楚配置项的作用,那么可以直接用下面这份配置,修改密码即可:

1
2
3
4
5
6
7
8
9
10
{
"server": ["[::0]", ""0.0.0.0""],
"server_port": 8838,
"local_port": 1080,
"password": "123456",
"timeout": 300,
"method": "chacha20-ietf-poly1305",
"fast_open": true,
"workers": 1
}

使用 ChaCha20 加密算法

ChaCha 系列算法是 Bernstein 于 2008 年发布的与相关的 Salsa20 算法的一个变种,Google 采用带有 Poly1305 消息认证码的 ChaCha20 的作为 Chrome 和 Google 网站 TLS 中的加密算法,用来替代 OpenSSL 中 RC4。此后,ChaCha20 在 RFC 7539 中标准化,于是推出了 ChaCha20-IETF-Poly1305。Shadowsocks 在 SIP004 提出了采用 AEAD 算法取代原先的不安全的流加密 + OTA,并弃用了一次性验证(OTA)。当前配置默认使用 ChaCha20-IETF-Poly1305。

使用 v2ray-plugin 混淆

这一步是可选,用来伪装流量以免被运营商检测出来并 BAN 掉 IP。主要有两种混淆方式:HTTP 和 HTTPS,前者配置简单但是效果不好,后者需要注册域名,配置 SSL 证书,操作比较麻烦但是安全性比较高。具体使用方法参考 github 主页:v2ray-plugin

开启 BBR 模块

比起 Kcptun 或锐速,谷歌开源的 TCP 拥塞控制算法 BBR 更方便,而且加速效果不错,因此绝对是加速首选。由于 tcp_bbr 需要 Linux kernel 4.9+ 的内核提供支持,因此不满足要求的系统需要先升级内核。如果内核符合条件,执行 lsmod | grep bbr,如果结果中没有 tcp_bbr 的话就先执行:

1
2
modprobe tcp_bbr
echo "tcp_bbr" | sudo tee --append /etc/modules-load.d/modules.conf

然后执行:

1
2
3
echo "net.core.default_qdisc=fq" | sudo tee --append /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee --append /etc/sysctl.conf
sysctl -p

最后是验证:

1
2
3
4
5
# 显示结果为 net.ipv4.tcp_available_congestion_control = reno cubic bbr
sysctl net.ipv4.tcp_available_congestion_control

# 显示结果为 net.ipv4.tcp_congestion_control = bbr
sysctl net.ipv4.tcp_congestion_control

如果显示结果如上所示,则说明 BBR 已经开启

开启 TCP Fast Open(TFO)

TCP Fast Open 要求服务器和客户端(Openwrt/LEDE)都是 Linux 3.7+ 的内核,内核参数配置文件 /etc/sysctl.conf 增加一行:

1
net.ipv4.tcp_fastopen = 3

然后执行 sysctl -p 使之生效。服务端和客户端同时增加 Shadowsocks 配置项 "fast_open": true,然后重启服务即可。

系统参数优化

修改文件句柄数限制

增加进程打开文件句柄数量,以便更好的处理大量的 TCP 连接。

1
2
3
4
5
vi /etc/security/limits.conf

# 增加以下两行
* soft nofile 51200
* hard nofile 51200

接下来,在开启 Shadowsocks 服务之前,先设置 ulimit

1
ulimit -n 51200

内核参数优化

/etc/sysctl.conf 的配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla

修改完后使用 sysctl -p 重载配置。

多用户管理服务

首先根据官网教程在服务端/客户端的服务器上进行安装Shadowsocks-manager,然后需要分别配置服务端和客户端,该软件的好处是可以通过客户端可以管理多台服务器。

服务端配置

在服务端服务器上新建一个 ssmgr.yml 文件,输入:

1
2
3
4
5
6
7
type: s
shadowsocks:
address: 127.0.0.1:1080
manager:
address: 0.0.0.0:6000
password: '123456'
db: 'db.sqlite'

需要注意的是,无论把这个配置文件放在哪里,软件真正的配置数据在 /root/.ssmgr 文件中。

然后在 /lib/systemd/system(Ubuntu 18.04)中新建两个文件 ss-manager.servicessmgr-server.service

  1. ss-manager.service:
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Shadowsocks-libev multi-user controller
Documentation=man:ss-manager(1)
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/ss-manager -c /etc/shadowsocks-manager/config.json --manager-address 127.0.0.1:1080

[Install]
WantedBy=multi-user.target

注意:

  • ss-manager 的安装位置可能不在 /usr/bin 下面,请确认并修改;
  • /etc/shadowsocks-manager/config.json 是我的 Shadowsocls 配置文件,根据自己的配置文件位置进行修改;
  • --manager-address 127.0.0.1:1080 后面的地址端口要和上面 ssmgr.yml 中设置的一致。
  1. ssmgr-server.service
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Shadowsocks management server
After=network.target ss-manager.service

[Service]
Type=simple
ExecStart=/usr/bin/ssmgr -c /etc/ssmgr/ssmgr.yml

[Install]
WantedBy=multi-user.target

注意:

  • ssmgr 的安装位置可能不在 /usr/bin 下面,请确认并修改;
  • /etc/ssmgr/ssmgr.yml 是我的配置文件,根据自己的配置文件位置进行修改。

然后输入下列命令开启服务:

1
2
sudo systemctl start ss-manager.service
sudo systemctl start ssmgr-server.service

如果需要开机自启动,则输入以下命令:

1
2
sudo systemctl enable ss-manager.service
sudo systemctl enable ssmgr-server.service

客户端配置

在客户端服务器上新建一个 webgui.yml 文件,根据注释输入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
type: m
manager:
address: 服务器IP地址:6000 # 注意端口和服务端配置一致
password: '123456' # 注意密码和服务端配置一致
plugins:
flowSaver:
use: true
user:
use: true
account:
use: true
email:
use: true
type: 'smtp'
username: '邮箱用户名'
password: '邮箱密码'
host: 'smtp.163.com' # 根据自己使用的邮箱服务填写
webgui:
use: true
host: '0.0.0.0'
port: '80'
site: 'http://自定义域名或者IP地址'
giftcard:
use: true # 开启礼品卡服务以免订单无法加载,可以根据官方文档添加支付宝等
db: 'webgui.sqlite'
redis: # 记得安装 Redis,使用默认配置即可
host: '127.0.0.1'
port: 6379
password: ''
db: 0

然后运行客户端:

1
ssmgr -c /xxx/webgui.yml

之后根据自己设置的域名或者IP访问网站,注册的第一个用户即为管理员,然后进行进一步的管理,可在服务器页面添加额外的 Shadowsocks 服务器。


SS安装配置笔记
https://infiniture.cn/2019/10/03/SS安装配置笔记/
作者
NickHopps
发布于
2019年10月3日
许可协议