背景
有访问google或者其他海外网站需求的同学可能大都用过或者听过ss,在Windows、Mac、Android、IOS都有现成可用的客户端来协助实现科学上网。
但是Linux下的上网需求应该如何解决呢?
网上搜罗一番,有不少解决方案,这里选取ss-server+sslocal+polipo(proxychains)的方案进行实践,废话到此,开干!
准备工作
你需要有一台海外(可以正常访问互联网)的机器(云主机、vps等)用来搭建ss服务端;或者有可以正常使用的ss账号。
本例中将使用美西的云主机进行演示。
Server端
server端需要安装、配置shadowsocks,启动ss-server
1,安装shadowsocks
yum install python-pip pip install shadowsocks
2,配置shadowsocks
创建shadowsocks配置文件
[root@AliCloudInstance opt]# cat /etc/shadowsocks.json { "server":"47.91.1xx.1xx", "server_port":10666, "local_port":1080, "password":"MyPassWord", "timeout":600, "method":"aes-256-cfb" } [root@AliCloudInstance opt]#
3,启动ss-server
可以同步命令行使用ss-server指定配置文件直接启动
ssserver -c /etc/shadowsocks.json
不过还是推荐放到supervisor中启动,如果没有supervisor,通过yum或者pip安装下即可
[root@AliCloudInstance opt]# tail -7 /etc/supervisord.conf [program:shadowsocks] command=ssserver -c /etc/shadowsocks.json autostart=true autorestart=true user=root log_stderr=true logfile=/var/log/shadowsocks.log [root@AliCloudInstance opt]#
shadowsocks服务端到此配置结束,启动后会监听上面配置的端口,此时就可以通过各种ss客户端进行连接使用了。
[root@AliCloudInstance opt]# ss -lntup|grep ssserver udp UNCONN 0 0 *:56925 *:* users:(("ssserver",5497,6)) udp UNCONN 0 0 47.91.1xx.1xx:10666 *:* users:(("ssserver",5497,4)) tcp LISTEN 0 128 47.91.1xx.1xx:10666 *:* users:(("ssserver",5497,3)) [root@AliCloudInstance opt]#
Client端
cilent端需要安装、配置shadowsocks,启动sslocal,安装配置polipo或者proxychains
1,安装、配置shadowsocks(同server端)
yum install python-pip pip install shadowsocks
2,配置shadowsocks
创建shadowsocks配置文件
[root@thatsit opt]# cat /etc/shadowsocks.json { "server":"47.91.1xx.1xx", "server_port":10666, "local_port":1080, "password":"MyPassWord", "timeout":600, "method":"aes-256-cfb" } [root@thatsit opt]#
3,启动ss客户端
[root@thatsit polipo]# sslocal -c /etc/shadowsocks.json -d start INFO: loading config from /etc/shadowsocks.json 2017-02-28 23:06:48 INFO loading libcrypto from libcrypto.so.10 started [root@thatsit polipo]#
启动之后,本地会监听一个tcp的1080端口和一个udp的1080端口
[root@thatsit polipo]# ss -lntup|grep sslocal udp UNCONN 0 0 127.0.0.1:1080 *:* users:(("sslocal",24079,5)) tcp LISTEN 0 128 127.0.0.1:1080 *:* users:(("sslocal",24079,4)) [root@thatsit polipo]#
4,安装polipo将socks5协议转为http协议
Shadowsocks使用socks5协议,而终端很多工具目前只支持http和https等协议,所以我们为终端设置Shadowsocks的思路就是将socks5协议转换成http协议,然后为终端设置即可。
①安装polipo(github地址:https://github.com/jech/polipo)
git clone https://github.com/jech/polipo.git cd polipo make all make install
②配置polipo
[root@thatsit polipo]# cat /etc/polipo/config socksParentProxy = "127.0.0.1:1080" socksProxyType = socks5 logFile = /var/log/polipo logLevel = 99 logSyslog = true [root@thatsit polipo]#
polipo -v 可以查看支持的选项
③启动polipo:
/root/polipo/polipo -c /etc/polipo/config
polipo监听8123端口
[root@thatsit polipo]# ss -lntup|grep polipo tcp LISTEN 0 128 127.0.0.1:8123 *:* users:(("polipo",23399,5)) [root@thatsit polipo]#
④添加http_proxy环境变量,实现全局代理
当前会话生效
export http_proxy=http://localhost:8123
取消此环境变量,关闭代理
unset http_proxy
同时可以将下面环境变量设置的语句添加到/etc/profile、~/.bashrc等文件来实现更大的代理范围
export http_proxy=http://127.0.0.1:8123
⑤测试
[root@thatsit ~]# curl ip.gs 当前 IP:47.91.1xx.1xx 来自:美国加利福尼亚州圣克拉拉 阿里云 [root@thatsit ~]#
5,安装配置Proxychains实现更灵活的代理
相比较于上面polipo的全局代理的方式,proxychains可以实现更灵活的代理,安装配置也十分简单,记录如下:
①安装
git clone https://github.com/rofl0r/proxychains-ng cd proxychains-ng ./configure make && make install
②make install-config 生成配置文件
[root@thatsit proxychains-ng]# make install-config ./tools/install.sh -D -m 644 src/proxychains.conf /usr/local/etc/proxychains.conf [root@thatsit proxychains-ng]#
③编辑配置文件/usr/local/etc/proxychains.conf,更改socks配置
[root@thatsit proxychains-ng]# tail -2 /usr/local/etc/proxychains.conf #socks4 127.0.0.1 9050 #==> 原始配置 socks5 127.0.0.1 1080 [root@thatsit proxychains-ng]#
④测试
[root@thatsit ~]# unset http_proxy [root@thatsit ~]# [root@thatsit ~]# proxychains4 curl ip.cn [proxychains] config file found: /usr/local/etc/proxychains.conf [proxychains] preloading /usr/local/lib/libproxychains4.so [proxychains] DLL init: proxychains-ng 4.12 [proxychains] Strict chain ... 127.0.0.1:1080 ... ip.cn:80 ... OK 当前 IP:47.91.1xx.1xx 来自:美国加利福尼亚州圣克拉拉 阿里云 [root@thatsit ~]#
从此妈妈再也不用担心我的linux无法访问google了~
Good Night.
==== done ====
参考链接:http://droidyue.com/blog/2016/04/04/set-shadowsocks-proxy-for-
有访问google或者其他海外网站需求的同学可能大都用过或者听过ss,在Windows、Mac、Android、IOS都有现成可用的客户端来协助实现科学上网。
但是Linux下的上网需求应该如何解决呢?
网上搜罗一番,有不少解决方案,这里选取ss-server+sslocal+polipo(proxychains)的方案进行实践,废话到此,开干!
准备工作
你需要有一台海外(可以正常访问互联网)的机器(云主机、vps等)用来搭建ss服务端;或者有可以正常使用的ss账号。
本例中将使用美西的云主机进行演示。
Server端
server端需要安装、配置shadowsocks,启动ss-server
1,安装shadowsocks
yum install python-pip pip install shadowsocks
2,配置shadowsocks
创建shadowsocks配置文件
[root@AliCloudInstance opt]# cat /etc/shadowsocks.json { "server":"47.91.1xx.1xx", "server_port":10666, "local_port":1080, "password":"MyPassWord", "timeout":600, "method":"aes-256-cfb" } [root@AliCloudInstance opt]#
3,启动ss-server
可以同步命令行使用ss-server指定配置文件直接启动
ssserver -c /etc/shadowsocks.json
不过还是推荐放到supervisor中启动,如果没有supervisor,通过yum或者pip安装下即可
[root@AliCloudInstance opt]# tail -7 /etc/supervisord.conf [program:shadowsocks] command=ssserver -c /etc/shadowsocks.json autostart=true autorestart=true user=root log_stderr=true logfile=/var/log/shadowsocks.log [root@AliCloudInstance opt]#
shadowsocks服务端到此配置结束,启动后会监听上面配置的端口,此时就可以通过各种ss客户端进行连接使用了。
[root@AliCloudInstance opt]# ss -lntup|grep ssserver udp UNCONN 0 0 *:56925 *:* users:(("ssserver",5497,6)) udp UNCONN 0 0 47.91.1xx.1xx:10666 *:* users:(("ssserver",5497,4)) tcp LISTEN 0 128 47.91.1xx.1xx:10666 *:* users:(("ssserver",5497,3)) [root@AliCloudInstance opt]#
Client端
cilent端需要安装、配置shadowsocks,启动sslocal,安装配置polipo或者proxychains
1,安装、配置shadowsocks(同server端)
yum install python-pip pip install shadowsocks
2,配置shadowsocks
创建shadowsocks配置文件
[root@thatsit opt]# cat /etc/shadowsocks.json { "server":"47.91.1xx.1xx", "server_port":10666, "local_port":1080, "password":"MyPassWord", "timeout":600, "method":"aes-256-cfb" } [root@thatsit opt]#
3,启动ss客户端
[root@thatsit polipo]# sslocal -c /etc/shadowsocks.json -d start INFO: loading config from /etc/shadowsocks.json 2017-02-28 23:06:48 INFO loading libcrypto from libcrypto.so.10 started [root@thatsit polipo]#
启动之后,本地会监听一个tcp的1080端口和一个udp的1080端口
[root@thatsit polipo]# ss -lntup|grep sslocal udp UNCONN 0 0 127.0.0.1:1080 *:* users:(("sslocal",24079,5)) tcp LISTEN 0 128 127.0.0.1:1080 *:* users:(("sslocal",24079,4)) [root@thatsit polipo]#
4,安装polipo将socks5协议转为http协议
Shadowsocks使用socks5协议,而终端很多工具目前只支持http和https等协议,所以我们为终端设置Shadowsocks的思路就是将socks5协议转换成http协议,然后为终端设置即可。
①安装polipo(github地址:https://github.com/jech/polipo)
git clone https://github.com/jech/polipo.git cd polipo make all make install
②配置polipo
[root@thatsit polipo]# cat /etc/polipo/config socksParentProxy = "127.0.0.1:1080" socksProxyType = socks5 logFile = /var/log/polipo logLevel = 99 logSyslog = true [root@thatsit polipo]#
polipo -v 可以查看支持的选项
③启动polipo:
/root/polipo/polipo -c /etc/polipo/config
polipo监听8123端口
[root@thatsit polipo]# ss -lntup|grep polipo tcp LISTEN 0 128 127.0.0.1:8123 *:* users:(("polipo",23399,5)) [root@thatsit polipo]#
④添加http_proxy环境变量,实现全局代理
当前会话生效
export http_proxy=http://localhost:8123
取消此环境变量,关闭代理
unset http_proxy
同时可以将下面环境变量设置的语句添加到/etc/profile、~/.bashrc等文件来实现更大的代理范围
export http_proxy=http://127.0.0.1:8123
⑤测试
[root@thatsit ~]# curl ip.gs 当前 IP:47.91.1xx.1xx 来自:美国加利福尼亚州圣克拉拉 阿里云 [root@thatsit ~]#
5,安装配置Proxychains实现更灵活的代理
相比较于上面polipo的全局代理的方式,proxychains可以实现更灵活的代理,安装配置也十分简单,记录如下:
①安装
git clone https://github.com/rofl0r/proxychains-ng cd proxychains-ng ./configure make && make install
②make install-config 生成配置文件
[root@thatsit proxychains-ng]# make install-config ./tools/install.sh -D -m 644 src/proxychains.conf /usr/local/etc/proxychains.conf [root@thatsit proxychains-ng]#
③编辑配置文件/usr/local/etc/proxychains.conf,更改socks配置
[root@thatsit proxychains-ng]# tail -2 /usr/local/etc/proxychains.conf #socks4 127.0.0.1 9050 #==> 原始配置 socks5 127.0.0.1 1080 [root@thatsit proxychains-ng]#
④测试
[root@thatsit ~]# unset http_proxy [root@thatsit ~]# [root@thatsit ~]# proxychains4 curl ip.cn [proxychains] config file found: /usr/local/etc/proxychains.conf [proxychains] preloading /usr/local/lib/libproxychains4.so [proxychains] DLL init: proxychains-ng 4.12 [proxychains] Strict chain ... 127.0.0.1:1080 ... ip.cn:80 ... OK 当前 IP:47.91.1xx.1xx 来自:美国加利福尼亚州圣克拉拉 阿里云 [root@thatsit ~]#
从此妈妈再也不用担心我的linux无法访问google了~
Good Night.
==== done ====
参考链接:http://droidyue.com/blog/2016/04/04/set-shadowsocks-proxy-for-