OpenWrt Socket全局代理

相信很多人使用过Socket代理,例如SSH代理、Shadowsocks代理。但是,Socket代理的一个缺点是,需要配置浏览器并只能代理浏览器的网络流量,如果想代理非浏览器的软件的网络流量或代理所有的网络流量,简单的Socket代理就无能为力了。

如果你使用的是Linux系统或OpenWRT的路由系统,我推荐使用Redsocks软件。Redsocks可以把系统的TCP连接重定向到Socket通道。
Redsocks安装方法:

sudo apt-get install iptables git-core libevent-1.4-2 libevent-dev
git clone http://github.com/darkk/redsocks.git cd redsocks/ make echo 'base{log_debug = on; log_info = on; log = "file:/tmp/reddi.log";
daemon = on; redirector = iptables;}
redsocks { local_ip = 127.0.0.1; local_port = 31338; ip = 127.0.0.1;
port = 31337; type = socks5; }' > redsocks.conf
./redsocks -c redsocks.conf

其中local_ip和local_port是Redsocks软件监听的ip和端口,稍后会介绍,ip和port是Socket代理监听的本地ip和端口。

接下来,需要配置iptables,iptables把系统tcp连接重定向到Redsocks监听端口,然后Redsocks会把连接重定向到socket通道。

sudo iptables -t nat -N REDSOCKS sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN sudo iptables -t nat -A REDSOCKS -p tcp -o eth0 -j DNAT --to 127.0.0.1:31338 sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS

如果你使用的是OpenWRT系统,交叉编译并安装Redsocks后,iptables的配置最后两条需要修改为:

iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-port 31338
iptables -t nat -A PREROUTING -p tcp -i br-lan -j REDSOCKS

经过上述的配置,系统所有的tcp连接都会被重定向到Socket通道,如果你熟悉iptables,还有更高级的玩法:

1.使用国 外代理,指定的ip地址或ip地址段的连接重定向到Socket通道,其他的走本地路由。

2.使用国 外代理,非亚洲的ip地址段的连接重定向到Socket通道,亚洲的ip地址段走本地路由。

本文章由作者:佐须之男 整理编辑,原文地址: OpenWrt Socket全局代理
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐