最近终于忍受不了访问Google速度慢,搜索东西时url改变了,但还是停在Google首页!!!!,还有atom插件老奔溃,插件一奔溃就检查是否有更新。然而一更新半年都没反应。

偶然间读到一篇关于Google BBR拥塞算法,他是一个TCP加速优化工具,用于优化 TCP 连接,听说最近挺火的。有不少人用来优化Shadowsocks的TCP连接,翻墙的速度翻了倍。(聪明的你发现了这个标题不符啊,这个下面来详述。)这使我燃起了购买海外VPS的欲望,遂买了搬瓦工https://bandwagonhost.com/一年的VPS(他家支持支付宝,运气好的话还可以买到3.99$/year。)

Shadowsocks

在安装好系统后,(我这安装的是Ubuntu16.04,搬瓦工默认是centOS6) 搬瓦工贴心的给你设置了不好记的密码,常用服务端口号也改成了不常用的了,所以我修改Root密码,更改了SSH端口号,方便自己。

创建Shadowsocks服务

Shadowsocks服务端有不同的语言版本的,Shadowsocks服务端主流有:

  • shadowsocks-nodejs
  • shadowsocks-libev
  • shadowsocks-python
  • shadowsocks-go

我选择了python版的,因为刚刚安装的系统,python没有包管理pip,先要安装pip

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

安装Shadowsocks

pip install shadowsocks

然后创建一个shadowsocks配置文件。个人习惯使用nano而不是vi或vim,vi的操作繁琐,在加上ssh连接有延迟,修改文本很难操作。一般nano不是默认都有的,所以先安装上。

apt-get isntall nano
touch /etc/shadowsocks.json
nano /etc/shadowsocks.json

根据自己的服务器输入如下内容:

{
    "server" : "server_ip",
    "server_port" : "8388",
    "password" : "password",
    "method":"aes-256-cfb",
}

配置文件中个字段的含义:

  • server: 服务器ip地址
  • server_port: 绑定shadowsocks端口,注意不要设置已经使用了的端口
  • possword: 设置shadowsocks连接密码
  • method: 加密方式

如果有多个账号来使用Shadowsocks服务,该这样来配置

{
    "server" : "server_ip",
    "port_password" : {
        "8388" : "password1",
        "8389" : "password2",
        "8390" : "password3",
    },
    "method":"aes-256-cfb",
}

每个端口有一个密码,配置项由password改为port_password
注意,当开启使用多用户时,server项的值必须为0.0.0.0,否则不能启动多个端口

启动或关闭Shadowsocks服务

启动

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

关闭为

ssserver -c /etc/shadowsocks.json -d stop

Shadowsocks服务我想开机自动启动。所以把启动的命令加入了开机启动中。编辑/etc/rc.local,将ssserver -c /etc/shadowsocks.json -d start添加到exit 0;之前就可以了。

Shadowsocks提速

配置好Shadowsocks后,测试成功了,该使用BBR来为Shadowsocks提速了,BBR是Google的一个开源项目,在Google的github官方项目下。github地址https://github.com/google/bbr
但是注意了在项目的README文件中有 “This is not an official Google product.” 。这就搞不懂,你自己放自己官方项目下,但又写上这么一句😂。

BBR在2016年9月20号加入到Linux内核中去了,所以只要是去年9月以后更新Linux内核,都自带了BBR。查看自己的内核版本

root@localhost:~# uname -r
2.6.32-042stab116.2

我的搬瓦工上的Ubuntu16.04内核为2.6.32,去年10月更新的Linux内核版本为4.9rc1。所以超过这个就可以了。现在2017年
3月最新的Linux内核稳定版为4.10.1。
下载安装最新的内核,我的系统为64位操作系统,所以

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-headers-4.10.1-041001_4.10.1-041001.201702260735_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-headers-4.10.1-041001-generic_4.10.1-041001.201702260735_arm64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.1/linux-image-4.10.1-041001-generic_4.10.1-041001.201702260735_arm64.deb
dpkg -i *.deb

安装完成以后重启就好了。

但是万万没想到,我的重启以后查看内核版本,发现没有丝毫的变化还是2.6.32-042stab116.2。但是我是安装成功了的啊。
使用dpkg查看我安装内核。

dpkg -l | grep "linux-image"

也只看到了linux-image-4.10.1-041001,说明内核安装成功了的,但是现在正在使用的内核版本又看不见,上网Google下。

在Google上补课后发现,VPS分为OpenVZ、Xen和KVM,OpenVZ平台的VPS不能对Linux内核进行更新!!! 而搬瓦工的又给了上古的Linux内核,所以BBR我是没法体验了。所以以后又同学买VPS,可以注意自己的使用环境,买合适的VPS。

虽然不能使用BBR,但是我在补课时发现还有其他的几种加速方式,Finalspeed、Kcptun和锐速。
锐速是收费的,网上有破解版,但是锐速要求内核版本最低为3.13 ×
Finalspeed是在搬瓦工上使用比较多,但是有反应内存占用多的情况 ×
所以我使用了Kcptun

Kcptun

Kcptun 是 KCP 协议的一个简单应用,它可以将 TCP 转换为 KCP + UDP。由于 Kcptun 使用 Go 语言编写,内存占用低
KCP 协议一个快速可靠协议,能以 TCP 浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。KCP协议是我知乎唯一关注的程序猿韦易笑开发的 😊。
KCP 协议项目地址: https://github.com/skywind3000/kcp
Kcptun项目地址:https://github.com/xtaci/kcptun

部署Kcptun

Kcptun的安装部署比较简单了。因为已经有人编写了一键部署脚本,所以安装步骤 链接,我就不重复一遍了。

但是在我安装的时候出错了。

Traceback (most recent call last):
  File "/usr/bin/easy_install", line 7, in <module>
  ****
  File "/usr/lib/python2.7/bin/easy_install", line 1, in <module>
from pkg_resources.extern import VendorImporter
ImportError: No module named extern

在检查后发现Python正常,extern模块是存在的。仔细阅读错误信息后发现。前后easy_install不是同一个文件。回想起来,我中途使用了

apt-get update
apt-get dist-upgrade

来更新所有的包。导致了python的路径改变。手动做一个软链接后正常。

rm /usr/bin/easy_install
ln -s /usr/lib/python2.7/bin/easy_install /usr/bin/easy_install

最后附上一张youtube效果图 可以看到youtube连接已经到了9Mbps,所以youtube 4K画质也不是问题
youtube