iptables:匹配系统自己的地址以进行发夹

iptables:匹配系统自己的地址以进行发夹

我正在尝试使用 iptables 为路由器实现 Hairpinning (又名 NAT Loopback)。

具体来说,我想要在 PREROUTING 链中匹配来自内部网络、发往路由器自己的 IP 地址的数据包,并对它们应用 DNAT,类似于:

iptables -t nat -A PREROUTING -i ens192 -d <self> -p tcp --dport 80 -j DNAT --to-destination 192.168.42.42

通常,你会<self>用路由器自己的 IP 地址替换它。但是,我不能/不想这样做,原因有二:

  • 路由器的公网IP地址不是静态的,而是通过DHCP获取的,并且可以随时改变。
  • 我不想对 IP 地址进行硬编码,因为这是一个稍后更改配置时的潜在错误源(并忘记相应地更新 iptables 规则)。

是否有其他方法来检查数据包在 PREROUTING 链中是否以本地机器作为目的地,而不使用静态地址?

相关内容