CentOS7 开启 BBR 加速与 SS 搭建

Posted by JenI on 2018-01-31 00:00:00+08:00

前言

因为平时有爬墙出去查资料的需求,所以买了个VPS,搭了梯子。VPS买的Woothosting的年付15刀方案,KVM架构,搭了SS,做了BBR加速,整体速度还可以,Youtube 1080P 没什么压力,只是不定期某个时段会出现大量丢包情况,持续几秒,出现频率不高,倒是不影响使用。Woothosting 对外宣布成立于 2007 年,但也有人说它实际上成立于 2016 年,毕竟在 2016 年之前基本上没人听说过它。公司虽然没什么名气,但是服务还算到位,刚买的 VPS 出现了问题,我用蹩脚的 Chinglish 联系了他们的技术人员,技术人员十分热情的给我解决了问题,怕我玩不太转,还附上了截图和使用方法。

言归正传,下面是针对 CentOS7 系统的梯子搭建过程,我也编写了相应的自动化脚本,如果不想一步一步自己搭建的同学可以直接使用下面的脚本。

https://github.com/jenihk/SS-auto-deploy-on-CentOS7

搭建过程

由于 OpenVZ 虚拟化架构不支持定制内核,所以请先确认自己的 VPS 是 KVM 架构,并且系统为 CentOS 7

首先更新系统版本

yum -y update

查看此时的系统版本号

cat /etc/redhat-release

目前的最新版本号是 7.4.1708 ,所以上面的命令执行完应该会有如下显示:

[root@CentOS7 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

安装 elrepo 并升级内核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y
elrepo

查看当前已安装的内核

egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
menuentry_grub2

从中找到新安装的内核,确定新内核的序号,序号如上图所示,从 0 开始计算。

更新 grub 的配置文件,并重启系统,下面的第一条命令后面的数字就是新内核的序号,我这里是 0

grub2-set-default 0
reboot

此时系统会默认使用新的内核,如下图所示

start

但是这幅图正常情况下我们并看不到,所以在开机之后我们需要使用 uname -r 命令确定当前的内核版本。

[root@CentOS7 ~]# uname -r
4.15.0-1.el7.elrepo.x86_64

确定使用了新版本的内核之后则可以开启 BBR,修改 /etc/sysctl.conf 文件

vi /etc/sysctl.conf

添加如下内容

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

加载系统参数

sysctl -p

输入下面的命令,如果返回结果中存在 bbr 算法,则说明已成功开启 BBR

[root@CentOS7 ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic bbr

接着就可以安装 Shadowsocks 了,由于最小化安装的 CentOS 系统内没有 pip 工具,所以还需要先安装 pip

yum install -y python-setuptools && easy_install pip
pip install shadowsocks

创建 Shadowsocks 的配置文件,名字随意,例如

vi /etc/shadowsocks/config.json

添加以下内容到文件内,其中 server 要改成自己 VPS 的 IP 地址,server_port 改成 1024-65535 之间未被使用的任意数字,密码也设置为自己的

{
    "server":"0.0.0.0",
    "server_port":9999,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"ChangeMe",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

启动 Shadowsocks 服务

ssserver -c /etc/shadowsocks/config.json -d start

配置防火墙,允许 Shadowsocks 服务所在端口被访问

# 端口改成自己的
firewall-cmd --zone=public --add-port=9999/tcp --permanent

到这里使用 SS 客户端进行连接应该就可以了。下图为 YouTube 1080P 视频测试图

youtube

如果对速度不太满意,也可以参考 Shadowsocks 官方的优化方法

https://github.com/shadowsocks/shadowsocks/wiki/Optimizing-Shadowsocks


作者:   JenI   转载请注明出处,谢谢


Comments !