1. 搭建ss服务器端
1.1 前期准备工作
1.1.1 领抵金券
我们可以选用一家美国的代理商Digital Ocean
Q: 为什么选这家?
A: 因为如果你是学生,你可以上GitHub领取你的student pack,送你免费50
🔪
你注册需要验证你的校园邮箱,验证这个步骤相信会点英文都能搞定,不废话,
注册好后,可以下拉找到合作伙伴Digital Ocean
领取50$
的抵金券。
1.1.2 注册Digital Ocean
注册一个账户,这个过程中有个验证身份环节。
需要你用信用卡 / PayPal 付5$
来说明自己不是个褥羊毛的。
所以,建议你绑定一张卡到PayPal上。完成。
进入界面后,点击Billing
,会有输入promote code
这里,
贴上GitHub
的抵金券,你会发现你的账户余额有55$
。
我们只需要最便宜的服务器,即5$
/m,所以够你用11个月。
1.2 搭建步骤
1.2.1 配置选择
选择Ubuntu 18.04 - 64位系统
5$
/m的最低配置选择
San Francisco
节点勾选
IPv6
(ssh免密登录,看自己有没有这个需求)
1.2.2 服务器配置参数
打开你的终端(macOS/Linux:Terminal,Windows:自己找,似乎有个叫Putty很好用)
1 | ssh -p 22 hostname@host # 替换hostname和host成你自己的 |
首次登陆,会提示你载入你的ipconfig list,输入yes
就行。
接着,输入密码后,进入服务器,身份是root。
接着,输入一系列命令:
1 | apt-get update # 更新软件源 |
完成者一系列命令后,进入服务器参数阶段,搭建好后需要修改一下ss配置文件,(配置文件路径在 /etc/shadowsocks.json):
1 | { |
注:如果你要使用chacha20
作为加密方式,记得要安装 libsodium
1 | apt-get update |
最后是启动:
1 | ssserver -c /etc/shadowsocks.json -d start # 启动 |
提示started
后,说明你已经可以科学上网了。
2. 校园网IPv6
免流
在满足第一部分后,即可实现IPv6
免流
搭建好后需要修改一下ss配置文件,一般ss的配置文件是这样的(配置文件路径在 /etc/shadowsocks.json):
1 | { |
将your_server_ip
改成::
即可,即:
1 | { |
::
的意思是同时监听IPv4和IPv6。之后重启ss:ssserver -c /etc/shadowsocks.json -d restart
。
至此,服务器就支持ss的IPv6访问了。
还可以对相应的软件,去实现Socks5
代理,IPv4
转IPv6
代理免流。
支持的软件有:
- TIM
- 网易云音乐
- 迅雷
- 百度网盘
- etc
都可以在设置中,照上面的配置填入即可。
3. BBR加速
TCP BBR 是Google给出的一个改良版的tcp网络协议,相当于在已有TCP协议的基础上打了个补丁的意思,这个改良版TCP协议对拥塞控制有很好的支持,对于网络较差的环境有不错的应用场景。
因为bbr协议仅支持Linux系统内核版本大于4.9,而Ubuntu18.04的内核是4.15,已满足条件,比起之前的Ubuntu LTS
版本需要更换内核,18.04
可以直接启用bbr功能。
3.1 修改系统变量
1 | echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf |
3.2 保存生效,配置内核
1 | sysctl -p |
3.3 查看内核是否已开启BBR
1 | sysctl net.ipv4.tcp_available_congestion_control |
1 | sysctl net.ipv4.tcp_congestion_control |
3.4 验证BBR是否已经启动
1 | lsmod | grep bbr |
4. 问题解决方案:
在运行时:
1 | ssserver -c /etc/shadowsocks.json -d start # 启动 |
出现以下错误:
1 | INFO: loading config from ss.json |
这个问题是由于在openssl1.1.0版本中,废弃了EVP_CIPHER_CTX_cleanup函数,如官网中所说:
1 | EVP_CIPHER_CTX was made opaque in OpenSSL 1.1.0. As a result, EVP_CIPHER_CTX_reset() appeared and EVP_CIPHER_CTX_cleanup() disappeared. |
替换了部分函数:
1 | EVP_CIPHER_CTX_init() remains as an alias for EVP_CIPHER_CTX_reset(). |
4.1 解决方法
- 用vim打开文件:vim /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py (该路径请根据自己的系统情况自行修改,如果不知道该文件在哪里的话,可以使用find命令查找文件位置)
- 跳转到52行(shadowsocks2.8.2版本,其他版本搜索一下cleanup)
- 进入编辑模式
- 将第52行libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,) 改为libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)
- 再次搜索cleanup(全文件共2处,此处位于111行),将libcrypto.EVP_CIPHER_CTX_cleanup(self._ctx)
- 改为libcrypto.EVP_CIPHER_CTX_reset(self._ctx)
- 保存并退出
- 启动shadowsocks服务:
ssserver -c /etc/shadowsocks.json -d start
- 问题解决