armbian版本:ARMBIAN 5.44 user-built Ubuntu 18.04.2 LTS 3.14.29
一、安装SS客户端
1、安装pip
apt install python-gevent python-pip
2、安装ss
pip install shadowsocks
3、生成配置文件
vi /etc/shadowsocks.json
{
"server":"your_server_ip", #ss服务器IP
"server_port":your_server_port, #端口
"local_address": "127.0.0.1", #本地ip
"local_port":1080, #本地端口
"password":"your_server_passwd", #连接ss密码
"timeout":300, #等待超时
"method":"rc4-md5", #加密方式
"fast_open": false,
# true 或 false。如果你的服务器 Linux 内核在3.7+,可以开启 fast_open 以降低延迟。开启方法: echo 3 > /proc/sys/net/ipv4/tcp_fastopen 开启之后,将 fast_open 的配置设置为 true 即可
"workers": 1 # 工作线程数
}
4、后台运行
nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
5、验证Shadowsocks客户端服务是否正常运行
curl --socks5 127.0.0.1:1080 http://httpbin.org/ip
出现SS服务器IP地址即运行正常
二、设置代理
1、安装privox
apt-get install privoxy -y
启动privoxy服务
systemctl enable privoxy
systemctl start privoxy
systemctl status privoxy
2、配置privoxy
vi /etc/privoxy/config 添加socks5代理,如下:
listen-address 127.0.0.1:8118 # 8118 是默认端口,不用改
forward-socks5t / 127.0.0.1:1080 . #转发到本地端口,注意最后有个点
3、设置http、https代理
vi /etc/profile 在最后添加如下信息
PROXY_HOST=127.0.0.1
export all_proxy=http://$PROXY_HOST:8118
export ftp_proxy=http://$PROXY_HOST:8118
export http_proxy=http://$PROXY_HOST:8118
export https_proxy=http://$PROXY_HOST:8118
export no_proxy=localhost,172.16.0.0/16,192.168.0.0/16.,127.0.0.1,10.10.0.0/16
重载环境变量
source /etc/profile
遇到的坑:
1、pip安装ss报错解决
vi /usr/bin/pip
解决方案:
原:from pip import main
修改后:from pip._internal import main
2、SS报错1
AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol
解决方案:
修改/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
替换成
libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)
libcrypto.EVP_CIPHER_CTX_cleanup
替换成
libcrypto.EVP_CIPHER_CTX_reset
3、SS报错2
解决方案:
vi /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
改成:
libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)
libcrypto.EVP_CIPHER_CTX_cleanup(self._ctx)
改成:
libcrypto.EVP_CIPHER_CTX_reset(self._ctx)
取消代理命令
while read var; do unset $var; done < <(env | grep -i proxy | awk -F= '{print $1}')