为了防止在链接公司wifi上网的时候,公司轻易知道访问了什么网站(至少也让他费点劲儿吧),决定在家的服务器上搭建一套ss,平时ss全局代理使用,这样公司的网关只能监控到和某个国内陌生ip有大量加密的数据交换。
另外搜了一下发现咱们站好像ss文章会被屏蔽,所以记录中你懂的
本来想采用xchacha20-ietf-poly1305,最后用了aes-256-cfb。
首先配置ss:
一般的服务器都有python2.7吧,没有的话可以用这个确定一下
python --version
应该返回2.7.x,然后更新软件源并安装如下包:
sudo apt-get upgrade
# 更新软件源
apt-get install python-gevent python-pip
# 安装依赖,视情况加sudo,gevent是个多协程并发框架
pip install #ss的全称,防屏蔽#
# 安装ss
apt-get install python-m2crypto
# 安装加密方式
接着创建config.json
{
"server":"服务器地址,如果就在本地就是0.0.0.0",
"server_port":14780, ##默认端口
"local_port":14780,
"password":"搞个密码",
"timeout":600,
"method":"选择你的加密方式" ##加密方式
}
我将json放在了我的用户/software/#ss全称#/下,然后直接在这个目录里运行ssserver,发现报错,理由是
……
AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol
原因据说是这个问题是由于在openssl1.1.0版本中,废弃了EVP_CIPHER_CTX_cleanup函数
然后去找openssl.py,找不到可以看一下上面的报错信息里的openssl.py在何处,因为实际上每个人装python的位置可能不一样?我反正就和教程不太一样
找到了之后改这两个地方:
……
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
……
libcrypto.EVP_CIPHER_CTX_cleanup
……
改成
……
libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)
……
libcrypto.EVP_CIPHER_CTX_reset
……
(其实就是搜索所有的 cleanup 改成 reset 即可)
然后ssserver并测试,跑通,关掉之后用nohup启动,完事儿。