Raspberry PI+Shadowsocks+Polipo实现科学上网
Step1:安装Shadowsocks客户端
6 min readJan 19, 2018
执行:
sudo apt-get install python-pip python-m2cryptosudo pip install shadowsocks
Step2:配置Shadowsocks客户端
执行:
sudo nano /etc/shadowsocks.json
输入如下内容:
{ "server":"xxx.xxx.xxx.xxx", "server_port":xxx, "local_address": "127.0.0.1", "local_port":1080, "password":"xxx", "timeout":600, "method":"aes-256-cfb", "fast_open": false,}
- “server”:填入你的Shadowsocks服务器IP
- "server_port":填入你的Shadowsocks服务器用于SS的端口号
- “password”:填入你的Shadowsocks账户密码
- “method”:填入你的Shadowsocks服务器使用的加密方法(一般默认为aes-256-cfb)
- 其余的不用修改
Step3:添加开机启动
执行:
sudo nano /etc/rc.local
在最后一行 exit 0 上面添加如下语句:
/usr/local/bin/sslocal -c /etc/shadowsocks.json -d start
检查能否正确运行:
sudo systemctl status rc-local.service
若正确运行,应输出类似结果:
注:shadowsocks无法运行错误解决方案
在执行上一条命令时可能会出现rc.local执行失败的问题,这是由于shadowsocks运行出错,单独执行下面的命令:
/usr/local/bin/sslocal -c /etc/shadowsocks.json -d start
若报如下的错误:
Traceback (most recent call last):
File "/usr/local/bin/sslocal", line 9, in
load_entry_point('shadowsocks==2.8.2', 'console_scripts', 'sslocal')()
....
....
....
AttributeError: /usr/local/lib/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup
则是由于Openssl库更新导致的方法名称变更问题,修复方法如下:
执行:
sudo nano /usr/local/lib/python2.7/distpackages/shadowsocks/crypto/openssl.py
将
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
覆写为
ibcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)
将
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (self._ctx)
覆写为
libcrypto.EVP_CIPHER_CTX_reset.argtypes = (self._ctx)
修改后重启树莓派,再次执行:
sudo systemctl status rc-local.service
应可得正确输出结果。
Step4:使用Polipo将Sock5流量转换为HTTP流量
- 关于Polipo:Github主页
- 安装Polipo:
sudo apt-get install polipo
- 编辑配置文件:
sudo nano /etc/polipo/config
输入如下内容:
# This file only needs to list configuration variables that deviate# from the default values. See /usr/share/doc/polipo/examples/config.sample# and "polipo -v" for variables you can tweak and further information.logSyslog = falselogFile = /var/log/polipo/polipo.logsocksParentProxy = "127.0.0.1:1080"socksProxyType = socks5chunkHighMark = 50331648objectHighMark = 16384serverMaxSlots = 64serverSlots = 16serverSlots1 = 32proxyAddress = "0.0.0.0"proxyPort = 8123
- 重启Polipo:
/etc/init.d/polipo restart
- 为当前终端设置全局代理:
export http_proxy=”127.0.0.1:8123”
撤销:
unset http_proxy
- 设置全局代理到终端默认配置:
sudo nano /etc/profile
添加如下语句:
export http_proxy=”127.0.0.1:8123”
- 测试:
curl www.google.com
若成功下载页面,则代理设置成功
Step5:配置chromium实现科学上网
- 下载SwitchyOmega:Github-Releases
- 安装SwitchyOmega:打开chromium的扩展程序页面,将下载的crx文件拖入
- 配置SwitchyOmega:Github-Wiki
The End