本文仅限技术交流使用,请勿用于违反法律的用途!

前几天折腾的产物,今天又用到了,特此记录。
原本以为没啥问题的,没想到Linux下问题还挺大,借此也学习了一番socks5的知识。

参考文章:
Ubuntu 14.04配置Shadowsocks和Privoxy实现浏览器和终端代理
Linux 配置SSR 客户端

配置SSR

虽然有electron-ssr的轮子,然而不知道为什么我这里没作用,还是老老实实用命令行配置吧。
经过测试这个版本是有用的:https://github.com/ssrbackup/shadowsocksr
下载下来:

git clone https://github.com/ssrbackup/shadowsocksr.git
cd shadowsocksr

然后生成配置文件:

bash initcfg.sh

复制一份到/etc并打开:

sudo cp user-config.json /etc/shadowsocks.json
sudo vim /etc/shadowsocks.json

然后自己改改参数吧,保存后测试一下:

cd shadowsocks/
python local.py -c /etc/shadowsocks.json

出现local start with xxxstarting local at xxx字样并且没有报错就说明成功了(先不要关掉终端

这个时候还不能用浏览器等访问404页面!

然后创建一个启动项以便自动打开:

vim ssr.sh

python /home/imwxz/shadowsocksr/shadowsocks/local.py -c /etc/shadowsocks.json

KDE下系统设置里面直接把这个加到启动项就行啦~

安装SwitchyOmega

因为我用的是chrome,就装SwitchyOmega这个插件把浏览器流量转到socks5上,其他浏览器请自行摸索。

请根据上面的配置做适当修改!

安装好crx后在proxy选项卡中设置Protocolsocks5Server127.0.0.1Port为1080。
如果想使用Pac代理可以在autoswitch中添加rule lists,这里推荐一个 https://github.com/gfwlist/gfwlist
重启一下chrome,切到对应模式,是不是可以了?

配置Privoxy终端代理

为什么终端需要单独代理呢?难道SSR不是“全局”代理么?这个问题当时困惑了我很久,最后一句话点醒了我。 SSR是一个使用SOCKS5(或者SOCK4之类)协议的代理,它只接受SOCKS5协议的流量,不接受HTTP或者HTTPS的流量。所以当你在Chrome上能穿墙的时候,是SwitchyOmega插件把HTTP和HTTPS流量转换成了SOCKS协议的流量,才实现了SSR的代理。而终端是没有这样的协议转换的,所以没法直接代理。这时候就需要一个协议转换器,这里我用了Privoxy。

sudo apt-get install privoxy

安装好后进行配置:

vim /etc/privoxy/config

找到4.1. listen-address这一节最后,确认listen-address的监听端口号。
找到5.2. forward-socks4, forward-socks4a, forward-socks5 and forward-socks5t这一节最后,加上:

forward-socks5 / 127.0.0.1:1080 .

注意最后有个点号。

重启一下

sudo /etc/init.d/privoxy restart

修改代理(每次新的终端都要输哦!如果懒得话看下面)

export http_proxy="127.0.0.1:8118"
export https_proxy="127.0.0.1:8118"

这个时候ping一下google应该就可以通了。

下方代码未经测试!!

设置自动代理,在/etc/rc.local中添加如下命令,注意在exit 0之前。

sudo /etc/init.d/privoxy start

/etc/profile的末尾添加如下两句。

export http_proxy="127.0.0.1:8118"
export https_proxy="127.0.0.1:8118"