1. 搭建ss服务器端

1.1 前期准备工作

1.1.1 领抵金券

我们可以选用一家美国的代理商Digital Ocean

0

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
2
3
apt-get update # 更新软件源
apt-get install python-gevent python-pip python-m2crypto python-wheel python-setuptools # 安装pip以及包
pip install shadowsocks #安装shadowsocks

完成者一系列命令后,进入服务器参数阶段,搭建好后需要修改一下ss配置文件,(配置文件路径在 /etc/shadowsocks.json):

1
2
3
4
5
6
7
8
9
10
{
"server":"your_server_ip",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"yourPassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

注:如果你要使用chacha20作为加密方式,记得要安装 libsodium

1
2
apt-get update
apt-get install libsodium-dev

最后是启动:

1
2
ssserver -c /etc/shadowsocks.json -d start # 启动
ssserver -c /etc/shadowsocks.json -d stop # 停止(一般没有用到过)

提示started后,说明你已经可以科学上网了。

2. 校园网IPv6免流

在满足第一部分后,即可实现IPv6免流

搭建好后需要修改一下ss配置文件,一般ss的配置文件是这样的(配置文件路径在 /etc/shadowsocks.json):

1
2
3
4
5
6
7
8
9
10
{
"server":"your_server_ip",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"yourPassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

your_server_ip改成::即可,即:

1
2
3
4
5
6
7
8
9
10
{
"server":"::",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"yourPassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

::的意思是同时监听IPv4和IPv6。之后重启ss:ssserver -c /etc/shadowsocks.json -d restart

至此,服务器就支持ss的IPv6访问了。

还可以对相应的软件,去实现Socks5代理,IPv4IPv6代理免流。

支持的软件有:

  • 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
2
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

1

3.2 保存生效,配置内核

1
sysctl   -p

2

3.3 查看内核是否已开启BBR

1
sysctl net.ipv4.tcp_available_congestion_control

3

1
sysctl net.ipv4.tcp_congestion_control

4

3.4 验证BBR是否已经启动

1
lsmod | grep bbr

5

4. 问题解决方案:

在运行时:

1
ssserver -c /etc/shadowsocks.json -d start # 启动

出现以下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
INFO: loading config from ss.json 
2016-12-14 22:47:50 INFO loading libcrypto from libcrypto.so.1.1
Traceback (most recent call last):
File “/usr/local/bin/sslocal”, line 11, in
sys.exit(main())
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/local.py”, line 39, in main
config = shell.get_config(True)
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py”, line 262, in get_config
check_config(config, is_local)
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py”, line 124, in check_config
encrypt.try_cipher(config[‘password’], config[‘method’])
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py”, line 44, in try_cipher
Encryptor(key, method)
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py”, line 83, in init
random_string(self._method_info[1]))
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py”, line 109, in get_cipher
return m[2](method, key, iv, op)
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py”, line 76, in init
load_openssl()
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py”, line 52, in load_openssl
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
File “/usr/lib/python2.7/ctypes/init.py”, line 375, in getattr
func = self.getitem(name)
File “/usr/lib/python2.7/ctypes/init.py”, line 380, in getitem
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/lib/x86_64-Linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

这个问题是由于在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 解决方法

  1. 用vim打开文件:vim /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py (该路径请根据自己的系统情况自行修改,如果不知道该文件在哪里的话,可以使用find命令查找文件位置)
  2. 跳转到52行(shadowsocks2.8.2版本,其他版本搜索一下cleanup)
  3. 进入编辑模式
  4. 将第52行libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,) 改为libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)
  5. 再次搜索cleanup(全文件共2处,此处位于111行),将libcrypto.EVP_CIPHER_CTX_cleanup(self._ctx)
  6. 改为libcrypto.EVP_CIPHER_CTX_reset(self._ctx)
  7. 保存并退出
  8. 启动shadowsocks服务:ssserver -c /etc/shadowsocks.json -d start
  9. 问题解决

5. 参考链接

  1. DigitalOcean+Shadowsocks VPS搭建 | Mac端+iOS端全自动科学上网方案
  2. Shadowsocks 服务器搭建比较全的纪录
  3. Ubuntu 18.04开启TCP网络协议BBR加速的方法(Google BBR 拥塞控制算法)
  4. vps+ss实现校园网IPv6免流

评论