我使用带有 DD-WRT v24-sp2(10/10/09)std(SVN 修订版 13064)的 Linksys WRT54GL 路由器,我试图将所有 HTTP 和 HTTPS 流量转发到端口 8888 上名为 Fiddler(用作代理)的外部应用程序。
在对本网站、dd-wrt 论坛、dd-wrt.com 和 WWW 进行了大量挖掘之后,我找到了以下可以运行的代码(感谢 dd-wrt 支持人员提供此信息),但仅用于转发 HTTP 流量(端口 80):
#!/bin/sh
PROXY_IP=1234567890
PROXY_PORT=8888
LAN_IP=`nvram get lan_ipaddr`
LAN_NET=$LAN_IP/`nvram get lan_netmask`
iptables -t nat -A PREROUTING -i br0 -s $LAN_NET -d $LAN_NET -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i br0 -s ! $PROXY_IP -p tcp --dport 80 -j DNAT --to $PROXY_IP:$PROXY_PORT
iptables -t nat -I POSTROUTING -o br0 -s $LAN_NET -d $PROXY_IP -p tcp -j SNAT --to $LAN_IP
iptables -I FORWARD -i br0 -o br0 -s $LAN_NET -d $PROXY_IP -p tcp --dport $PROXY_PORT -j ACCEPT
我尝试编辑上面的代码,得到了以下结果,但仍然无法转发HTTPS只是HTTP交通:
#!/bin/sh
PROXY_IP=1234567890
PROXY_PORT=8888
LAN_IP=`nvram get lan_ipaddr`
LAN_NET=$LAN_IP/`nvram get lan_netmask`
iptables -t nat -A PREROUTING -i br0 -s $LAN_NET -d $LAN_NET -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -t nat -A PREROUTING -i br0 -s ! $PROXY_IP -p tcp -m multiport --dports 80,443 -j DNAT --to $PROXY_IP:$PROXY_PORT
iptables -t nat -I POSTROUTING -o br0 -s $LAN_NET -d $PROXY_IP -p tcp -j SNAT --to $LAN_IP
iptables -I FORWARD -i br0 -o br0 -s $LAN_NET -d $PROXY_IP -p tcp --dport $PROXY_PORT -j ACCEPT
我不确定是否还可以通过使用路由器来转发 HTTPS 流量,因此如果有人能在这里分享他对这个问题的想法和/或例子我将不胜感激。
谢谢!