Vultr VPS搭建ShadowSocks教程

安装依赖包

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py

安装ShadowSocks

pip install --upgrade pip
pip install shadowsocks

创建ShadowSocks配置文件

单端口

vi /etc/shadowsocks.json

输入以下内容,然后点ESC后输入:wq保存退出

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

多端口

(可选,配置了单端口就不要配置这个)多端口的配置文件如下:

{
    "server": "0.0.0.0",
    "port_password": {
        "8381": "password1",
        "8382": "password2",
        "8383": "password3",
        "8384": "password4"
    },
    "timeout": 300,
    "method": "aes-256-cfb"
}

配置防火墙

防火墙配置ShadowSocks端口允许外部访问。

启动ShadowSocks服务

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

Tip: openssl升级到1.1.0以上版本,导致shadowsocks启动报undefined symbol: EVP_CIPHER_CTX_cleanup错误。这个问题是由于在openssl1.1.0版本中,废弃了EVP_CIPHER_CTX_cleanup函数,如官网中所说:

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.
EVP_CIPHER_CTX_init() remains as an alias for EVP_CIPHER_CTX_reset().

修改方法:
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)
改为libcrypto.EVP_CIPHER_CTX_reset(self._ctx)
6. 保存并退出
7. 启动shadowsocks服务,问题解决

关闭ShadowSocks服务

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

发表评论