1:1 NAT 和 ARP 问题 iptables

1:1 NAT 和 ARP 问题 iptables

网关机器有2个网卡,一个连接公网,一个连接私网。

网关:

eth0 4.xx3

以太坊1:10.10.11.3

有 5 台机器以此为网关,所有 IP 均为 10.10.11.5---9,网关为 10.10.11.3

DNAT:

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination       

DNAT       all  --  anywhere             4.x.x.5     to:10.10.11.5 

DNAT       all  --  anywhere             4.x.x.6     to:10.10.11.6 

DNAT       all  --  anywhere             4.x.x.7     to:10.10.11.7 

网关上的 SNAT

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination  

SNAT       all  --  10.10.11.5           anywhere            to:4.x.x.5 

SNAT       all  --  10.10.11.6           anywhere            to:4.x.x.6 

SNAT       all  --  10.10.11.7           anywhere            to:4.x.x.7 

直到我在接口上的网关上分配公共 IP 时,此规则才起作用,似乎是 ARP 的问题。

问题1 有没有办法避免在接口上分配公共 IP 来解决 ARP 问题

问题2:有人能解释一下 ARP 失败的原因吗,除了 ARP 是第 1 层,NAT 是第 3 层

答案1

它位于您的上行链路路由器中。4.xxx 网络 N 直接连接到您的路由器和提供商的路由器 R。每当 R 想要访问网络 N 中的任何内容时,它都知道它是本地连接的,并将为其发送 ARP 请求。

您可以在路由器 R 上设置更具体的路由(4.xx5/32 -> 4.xx3)(如果您的提供商允许您...)。或者使用您的路由器 4.xx3 来响应 ARP 请求。如果您的 Linux 机器不拥有 IP,它将不会响应线路上的本地 ARP 请求。配置 IP 将响应 ARP 请求并让上游路由器 R 将数据包转发到您的机器。最后,您的路由器可以转发和 NAT 数据包。在数据包到达您的机器之前,它们无法被转发。

这与层无关——该问题仅在第 3 层上运行。

相关内容