我想要获取从任意 IP 地址到任意 IP 地址、源自接口enp4s5
、目的地为端口的所有流量80
,并将其重定向到本地计算机(运行 iptables 的路由器)。
在本地计算机的 80 端口上运行的服务(如果从端口看不出来,则是 Web 服务器)需要能够知道连接的原始源 IP。
用例是针对强制 WiFi 门户,它将所有 HTTP(我知道这对 HTTPS 不起作用)页面替换为重定向到在路由器上运行的登录页面,他们必须使用该登录页面进行身份验证(然后添加 iptables 规则或将其地址添加到绕过此重定向的 ipset)。
我很确定 DNAT 完成了所需设置的一半,将数据包重定向到本地机器,但我遇到的问题是我需要一个匹配的 SNAT 将回复数据包发送回最初发送它们的机器 - 但我不能这样做,因为我不知道在 --to-source 中为 SNAT 规则提供的源 IP。
答案1
最终,我满足了上述所有要求的是一个REDIRECT
规则:iptables -t nat -A PREROUTING -i enp4s5 -p tcp --dport 80 -j REDIRECT --to-port 80