Linux 下代理一般是通过 http_proxy 和 https_proxy 这两个环境变量, 但是很多软件并不使用这两个变量, 导致流量无法走代理。 在不使用 vpn 的前提下, linux 并没有转发所有流量的真全局代理。但是可以用 proxychains-ng 为程序指定走代理, proxychains-ng 是 proxychains 的新版. ng 含义是 new generation
项目地址: rofl0r/proxychains-ng
主要有以下功能
- 支持 HTTP 或者 SOCKS4a/5 代理
- 认证
- 远端 dns 查询
- 多种代理模式
缺点
- 仅支持 TCP, 不支持 UDP/ICMP 转发
- 少部分程序和在后台运行的可能无法代理
安装 ProxyChains-NG
wget https://github.com/rofl0r/proxychains-ng/archive/v4.13.tar.gz -O Proxychains-ng-4.13.tar.gz
tar xzf Proxychains-ng-4.13.tar.gz
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
# 如果不是 root 用户
./configure --prefix=$HOME/proxychains --sysconfdir=$HOME/proxychains
make
make install
make install-config
# 如果不是 root 用户, 设置别名
alias pc='$HOME/proxychains/bin/proxychains4 -q'
配置 ProxyChains-NG
编辑配置文件 /etc/proxychains.conf
vim /etc/proxychains.conf
在文件最后将 socks4 127.0.0.1 9095
改为 socks5 127.0.0.1 1080
代理模式
Proxychains-ng支持多种代理模式:
- dynamic_chain : 按照代理列表顺序自动选取可用代理
- strict_chain : 按照代理列表顺序使用代理, 所有代理必须可用
- round_robin_chain : 轮询模式, 自动跳过不可用代理
- random_chain : 随机模式
使用方法
可以用 proxychains4 代理一个 shell, 在 shell 中执行的命令就会自动使用代理了, 例如
proxychains4 -q /bin/bash