过程比想象的繁琐,记录一下。
首先要安装 Shadowsocks 的 Linux 客户端。这个用 pip 直接安装就行:
[code lang=shell]
pip install setuptools # 安装依赖
pip install wheel # 安装依赖
pip install -U git+https://github.com/shadowsocks/shadowsocks.git@master
[/code]
安装完了敲 sslocal
命令就是客户端,而 ssserver
是服务器端。
建立了一个ss配置文件用于 sslocal
命令,语法如下:
[code lang=js]
{
"server":"my_server_ip",
"server_port":8388,
"local_port":1080,
"password":"barfoo!",
"timeout":600,
"method":"chacha20-ietf-poly1305"
}
[/code]
然后 sslocal -c /path/to/conf.json
就跑起来了。但是有2个问题:
ssserver
相当不稳定,说不定 sslocal
也有这个问题,我需要一个守护进程于是要弄个 Supervisor 来守护 sslocal
。
安装 Supervisor :
[code lang=shell]
easy_install supervisor
[/code]
然后用 echo_supervisord_conf
命令生成个 Supervisor 的配置文件。在配置文件中增加如下配置:
[code lang=text]
[program:sslocal]
command=/usr/bin/sslocal -c /root/_pea3nut/ss/ss.conf
stdout_logfile=~/_pea3nut/ss/stdout.log
autostart=true
autorestart=true
startsecs=5
priority=1
stopasgroup=true
killasgroup=true
[/code]
使用 supervisord -c supervisord.conf
让 Supervisor 跑起来。查看跑的状态输入 supervisorctl
进入交互面板,输入 help
有命令列表。
接下来是 sock5 -> http。我用了 privoxy。CentOS直接
[code lang=text]
yum install privoxy
service privoxy [start|stop|restart]
[/code]
改配置文件 /etc/privoxy/config
。配置文件有点啰嗦,我直接去掉所有注释
[code lang=text]
mv /etc/privoxy/config /etc/privoxy/config.origin
cat /etc/privoxy/config.origin | grep ^[^#] > /etc/privoxy/config
[/code]
然后干净清爽的配置文件大概这样:
[code lang=text]
confdir /etc/privoxy
logdir /var/log/privoxy
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action # Main actions file
actionsfile user.action # User customizations
filterfile default.filter
filterfile user.filter # User customizations
logfile logfile
listen-address 127.0.0.1 :8116
toggle 1
enable-remote-toggle 0
enable-remote-http-toggle 0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 4096
enable-proxy-authentication-forwarding 0
forward-socks5 / 127.0.0.1:3127 .
forwarded-connect-retries 0
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 5
tolerate-pipelining 1
socket-timeout 300
[/code]
关键点在于上面的
[code lang=text]
listen-address 127.0.0.1 :8116
forward-socks5 / 127.0.0.1:3127 .
[/code]
然后 service privoxy restart
后应该就通了
[code lang=text]
http_proxy=127.0.0.1:8116 curl www.google.com
[/code]
过程真是又麻烦又啰嗦,中间py2和py3问题不断,而且 Supervisor 还没设置开机自启。先这么凑合一阵吧,过段时间上Docker就好了。