redsocks是一款tcp -> 代理服务器的透明代理,使用它结合iptables,可以实现Linux下的全局代理。
1 安装
sudo apt-get install redsocks
2 配置
- /etc/redsocks.conf
- 修改redsocks下的local_ip, local_port,这两个是本地映射出的tcp端口
- 修改redsocks下的ip, port, type,这三个是远程代理服务器的配置
3 iptable规则:redsocks.rules
# Transparent SOCKS proxy # See: http://darkk.net.ru/redsocks/ *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :REDSOCKS - [0:0] # Redirect all output through redsocks -A OUTPUT -p tcp -j REDSOCKS # Whitelist LANs and some other reserved addresses. # https://en.wikipedia.org/wiki/Reserved_IP_addresses#Reserved_IPv4_addresses -A REDSOCKS -d 0.0.0.0/8 -j RETURN -A REDSOCKS -d 10.0.0.0/8 -j RETURN -A REDSOCKS -d 127.0.0.0/8 -j RETURN -A REDSOCKS -d 169.254.0.0/16 -j RETURN -A REDSOCKS -d 172.16.0.0/12 -j RETURN -A REDSOCKS -d 192.168.0.0/16 -j RETURN -A REDSOCKS -d 224.0.0.0/4 -j RETURN -A REDSOCKS -d 240.0.0.0/4 -j RETURN # Redirect everything else to redsocks port -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345 COMMIT
4 应用
sudo iptables-restore ./redsocks.rules
5 恢复(假设没有其他nat规则)
sudo iptables -t nat -F