搭建 Shadowsocks 服务器并开启 TCP BBR 加速
最近感觉自己搭的 SS 延迟高而且速度慢,尽管我装了一个 Net-Speeder 开启了无脑双倍 TCP 包发送,然而还是没有得到太多的缓解。
然后今天就买了一个新的 VPS 来搭 SS 服务器,顺手把 BBR 加速给开起来,测试了一下延迟确实有明显的缓解。
TCP BBR
先来简单说一下这个东西吧,就是 Google 开发的新的拥塞控制算法,据说是用在 YouTube 上,并且在去年 9 月开源并且现在已经集成到 Linux 4.9-rc8 之后版本 的内核中。
因此,我们这次很重要的一项步骤就是更换 Linux 的内核。这里要提醒的是,如果你的 VPS 使用的是OpenVZ的虚拟技术,是不能使用 BBR 的。并且,系统要求在 CentOS 6+,Debian 7+,Ubuntu 12+。
开始前先说一声,我使用的系统是 Ubuntu Server 14.04 x86-64,并且使用 root 用户操作
更换 Linux 内核
按照惯例我们先更新一下 apt 源:
apt-get update
然后我们要下载 Ubuntu 的内核,在这里我选择了比较新的 4.10.13 版本。 如果你要选择别的内核版本,可以浏览完整列表
我们把内核文件先下载到 /tmp
文件夹中
cd /tmp
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.13/linux-image-4.10.13-041013-generic_4.10.13-041013.201704290147_amd64.deb
然后使用dpkg -i
命令执行安装
文件名你可以只输入前几个字母然后按 tab 键自动补齐
dpkg -i linux-image-4.10.13-041013-generic_4.10.13-041013.201704290147_amd64.deb
装完以后,我们查看一下已安装的内核列表
dpkg -l | grep linux-image
如果列表中出现了你刚才安装的内核,那么证明已经安装成功了。
然后我们执行内核更新,完成后重启。
update-grub
## 等待输出 done 后重启系统
reboot
重启以后,我们检查一下系统内核是否正确切换
uname -a
如果输出的结果是你刚才安装的系统内核,则表示安装成功了。
开启 BBR
执行下面这两条脚本
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
保存生效
sysctl -p
执行脚本
sysctl net.ipv4.tcp_available_congestion_control
如果刚才的保存和执行脚本结果都有 bbr
那么代表你的内核已经开启了 BBR
执行脚本
lsmod | grep bbr
如果结果中有tcp_bbr
,则说明 bbr 已经启动。
安装 Shadowsocks
首先检查一下 python 运行环境,并且安装 pip。
python -V
apt-get install python-pip
然后安装 Shadowsocks 和可能用到的加密库
apt-get install python-m2crypto
pip install shadowsocks
在/etc
文件夹下新建一个配置文件
mkdir /etc/shadowsocks
cd /etc/shadowsocks
vim config.json
在config.json
中输入配置信息,例如
{
"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
}
编辑完后,保存退出。执行命令即可在后台开启 Shadowsocks 服务。为了避免由 root 用户启动带来的无法预知的错误,用 nobody 用户启动。
ssserver -c config.json --user nobody -d start
如果想要设置开机启动,可以把上面那一行命令添加到/etc/rc.local
文件中,注意要复制到exit 0
之前。