我想使用 iptables 将来自某个端口的所有传入流量转发到另一个端口。问题是预路由不适用于来自本地主机的流量。这话题建议一个解决方案:
iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 443 -j REDIRECT --to-ports 8080
此解决方案在大多数情况下都有效。但是,当我连接到http://我的服务器:443其中 myserver 解析为本地计算机上托管的 IP 地址,但不是 127.0.0.1,它似乎绕过了这两条规则。
有没有办法可以捕获从本地机器到 eth0 ip 地址的转发请求?
答案1
除了-d 127.0.0.1
在 OUTPUT 规则上执行 之外,您还可以执行-o lo
。这将匹配通过环回接口的任何流量,无论目的地是什么。
附注:即使你发送至'http://我的服务器:443',流量仍然是本地的,因此它仍然会通过环回接口,即使它没有解析为“127.0.0.1”。