1:1 NAT和ARP问题iptables

网关机器有2个网卡,一个连接公用networking,另一个连接专用networking。

网关:

eth0 4.xx3

ETH1: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.xx5 to:10.10.11.5 DNAT all -- anywhere 4.xx6 to:10.10.11.6 DNAT all -- anywhere 4.xx7 to:10.10.11.7 

网关上的SNAT

 Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT all -- 10.10.11.5 anywhere to:4.xx5 SNAT all -- 10.10.11.6 anywhere to:4.xx6 SNAT all -- 10.10.11.7 anywhere to:4.xx7 

这个规则是不工作,直到我分配公网IP在接口上的网关,似乎问题与ARP。

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

问题2:有人可以解释一下,除ARP之外的ARP失败的原因是第一层,NAT是第三层

它都在你的上行路由器中。 4.xxxnetworkingN直接连接到您的路由器和您的提供商的路由器R.每当R想要达到networkingN中的任何东西,它知道它是本地连接,并将发送它的ARP请求。

您可以在路由器R上设置更具体的路由(4.xx5 / 32 – > 4.xx3)(如果您的提供商允许您…)。 或者把你的路由器4.xx3回答ARP请求。 如果您的Linux机器不拥有IP,它将不会回应电线上的本地ARP请求。 configurationIP将回答ARP请求,并让上游路由器R将数据包转发到您的盒子。 最后有你的路由器可以转发的数据包和NAT。 直到数据包没有到达你的盒子,它们不能被转发。

与图层无关 – 这个问题只在layer3上运行。