image

ShadowSocks是一种socks5的代理,而socks5的代理服务器则是把你的网络数据请求通过一条连接你和代理服务器之间的通道,由服务器转发到目的地。你没有加入任何新的网络,只是http/socks数据经过代理服务器的转发送出,并从代理服务器接收回应。下面就介绍一下如何搭建ShadowSocks,以及搭建完后的网速优化。

购买VPS服务器

如果你想拥有自己的专属网络用来科学上网,首先你需要购买一台VPS服务器。
市面上这样的产品也非常多,可以参考VPS优惠信息
VPS服务器的架构一般有两种OpenVZ和KVM,建议选择KVM服务器,比较稳定并且可定制化程度更高。

配置VPS服务器

购买服务器后,一般会收到关于服务器的基本信息(ip address, username, password等)。
然后通过ssh username@ip_address命令进入到我们的服务器,需要输入password。
首次进入到服务器后,建议通过passwd命令来修改初始password。
如果不想每次ssh进入服务器的时候都输入密码,可以把本机.ssh/id_rsa.pub公钥写入到服务器的.ssh/authorized_keys中(没有该文件就创建),然后修改本机的.ssh/config文件。

1
2
3
4
5
6
7
8
9
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa

Host server_name
Hostname ip_address
Port port
User username

完成之后,可以直接输入ssh server_name(不需要输入ip address)进入到服务器而不需要输入密码。

安装ShadowSocks

  • 下载并安装shell脚本

    1
    2
    3
    wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
    chmod +x shadowsocks.sh
    ./shadowsocks.sh 2>&1 | tee shadowsocks.log
    • 输入ShadowSocks密码,需要记住
    • 输入端口号,默认为8989
    • 选择加密方式,默认为aes-256-gcm,建议修改为7)aes-256-cfb
  • 常用命令

    启动:/etc/init.d/shadowsocks start
    停止:/etc/init.d/shadowsocks stop
    重启:/etc/init.d/shadowsocks restart
    状态:/etc/init.d/shadowsocks status
    卸载:./shadowsocks.sh uninstall

  • 配置文件

    配置文件路径:/etc/shadowsocks.json

  • 单用户配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {
    "server":"0.0.0.0",
    "server_port":8989,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"password",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
    }
  • 多用户配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {
    "server":"0.0.0.0",
    "local_address":"127.0.0.1",
    "local_port":1080,
    "port_password":{
    "8989":"password0",
    "9001":"password1",
    "9002":"password2"
    },
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
    }


安装ShadowSocks客户端

安装完ShadowSocks客户端,输入ip address、port、encryption、password就可以科学上网了。


测试VPS网速

现在我们可以科学上网了,但是我想知道我自己搭建的ShadowSocks的网速,那么就可以用speedtest来进行测试。

  • 安装speedtest脚本

    1
    2
    wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
    chmod +x speedtest.py
  • 运行脚本

    1
    ./speedtest.py

    系统会自动判断你服务器所在位置,并找到最近的节点进行测速。
    你的VPS服务器可能在国外,如果你想测试一下到中国的网速,可以使用--server参数来指定节点。
    搜索想要测试的节点地址,找到其中的节点id,加在--server参数后面就可以了。
    例:北京电信的id是4751,可以使用./speedtest.py --server 4751来测试。

如果你测试的网速不是很理想,可以查看下面的【优化VPS网速】。


优化VPS网速

Google已经开源了其TCP BBR拥塞控制算法,并提交到了Linux内核,从 4.9 开始,Linux内核已经用上了该算法。Github上有人已经开发了一键安装最新内核并开启TCP BBR的脚本,亲测可用。

  • 脚本适用环境

    1
    2
    3
    系统支持:CentOS 6+,Debian 7+,Ubuntu 12+
    虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware等
    内存要求:≥128M
  • 安装脚本

    1
    wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

    安装完成后,脚本会提示需要重启VPS,输入y并回车后重启。

  • 验证安装结果
    重启完成后,进入VPS,验证一下是否成功安装最新内核并开启TCP BBR。

    1
    uname -r

    查看内核版本,返回值含4.13或以上就表示OK了

    1
    sysctl net.ipv4.tcp_available_congestion_control

    返回值一般为:net.ipv4.tcp_available_congestion_control = bbr cubic reno

    1
    sysctl net.ipv4.tcp_congestion_control

    返回值一般为:net.ipv4.tcp_congestion_control = bbr

    1
    sysctl net.core.default_qdisc

    返回值一般为:net.core.default_qdisc = fq

    1
    lsmod | grep bbr

    返回值有 tcp_bbr 模块即说明 bbr 已启动。注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

安装完成之后,可以再次使用speedtest来测试一下网速,对比之前的测试结果,网速是不是有所提升呢?