用proxychains-ng为程序设置代理
linux下代理一般是通过http_proxy和https_proxy这两个环境变量,但是很多软件并不使用这两个变量,导致流量无法走代理。在不使用vpn的前提下,linux并没有转发所有流量的真全局代理。但是可以用proxychains-ng为程序指定走代理,proxychains-ng是proxychains的加强版,主要有以下功能:
- 支持http/https/socks4/socks5
- 支持认证
- 远端dns查询
- 多种代理模式
不足:
- 不支持udp/icmp转发
- 少部分程序和在后台运行的可能无法代理
一、安装
下载源码:
git clone https://github.com/rofl0r/proxychains-ng
编译和安装:
./configure --prefix=/usr --sysconfdir=/etc
make
make install
make install-config
二、配置
proxychains-ng的配置非常简单,只需将代理加入[ProxyList]中即可,贴一份配置:
dynamic_chain
chain_len = 1 #round_robin_chain和random_chain使用
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 socks5.nixops.me 1080
socks4 socks4.nixops.me 1081
http http.nixops.me 3128
proxychains-ng支持多种代理模式:
- dynamic_chain :动态模式,按照代理列表顺序自动选取可用代理
- strict_chain :严格模式,严格按照代理列表顺序使用代理,所有代理必须可用
- round_robin_chain :轮询模式,自动跳过不可用代理
- random_chain :随机模式,随机使用代理
三、测试
proxychains4 curl ip.cn
四、使用
用法非常简单:
proxychains4 程序 参数
这样用每次都要在命令前输入proxychains4,比较麻烦,可以用proxychains4代理一个shell,在shell中执行的命令就会自动使用代理了,例如:
[root@nixops.me]# proxychains4 -q /bin/bash
可以把上面的命令加入到用户的.bashrc或者.bash_profile中,用户登录后自动代理一个bash shell,这就有点像全局代理了
[...]proxychains有四条链,每条链一种配置,我这里采用 strict_chain模式--严格按照代理列表顺序使用代理,所有代理必须可用,具体说明,请见链接地址https://opswill.com/articles/proxychains-ng-redirect-tcp-to-proxy.html[...]