配置Linux客户端使用socks5代理上网

背景

有访问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端)

扫描二维码关注公众号,回复: 4942744 查看本文章
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-

猜你喜欢

转载自www.cnblogs.com/abner28/p/10278799.html