我有一台 WRT54GL 家用路由器,我希望将发送到路由器公共 IP 地址 97 端口的请求重定向到外部 IP 和端口,例如 209.85.148.99(google.com)和端口 80。
路由器的外部接口称为vlan1
。
我试过了iptables -t nat -A PREROUTING -d <router_ip> -i vlan1 -p tcp -m tcp --dport 97 -j DNAT --to-destination 209.85.148.99:80
,但是没有用。
我该怎么做?另外,我如何查看此规则是否有效?iptables -L
似乎没有列出。
rinetd
我设法在我的计算机(位于 DMZ 中)上使用以下配置规则解决了我的问题:
# bindaddress bindport connectaddress connectport
0.0.0.0 97 209.85.148.99 80
但我想在路由器中执行重定向。
答案1
这是设计问题,据说两个 IP 都应该使用相同的网关 IP 地址,也就是运行的防火墙iptables
,我过去曾尝试过做和你完全相同的事情,但同样失败。你需要在同一个 nat 上使用反向规则来重写数据包,以便源端正确理解它,通过将其发送到另一个网络,这种情况不会发生。
重定向到另一个外部站点的唯一方法是使用弹跳器或代理引擎(如 squid、varnish 或 nginx),或者用您选择的语言编写您自己的非常短的弹跳器代码。