我如何才能将所有发往某个端口的流量从任意 IP 到任意 IP 重定向到本地计算机并保留源 IP?

我如何才能将所有发往某个端口的流量从任意 IP 到任意 IP 重定向到本地计算机并保留源 IP?

我想要获取从任意 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

相关内容