当您说 ARP 请求不是针对特定子网的“广播 IP 地址”时,您是对的。因此,您的 ARP“广播”决不会以 0.7 或 0.15 为目标。
让我试着解释为什么我说需要代理 ARP 才能工作。让我们假设一切都已正确配置,我们将使用 9.9.9.0/28 网络作为示例:
你的防火墙拥有IP 9.9.9.2,该的9.9.9.0/28网络。您的防火墙的默认网关是9.9.9.1,它归上游路由器所有。您为防火墙后面的服务器配置了三个静态 NAT,它们每个都拥有 IP 9.9.9.3、.4和.5。服务器的内部 IP 地址分别为10.0.0.3、.4、.5。要使这一切正常工作,必须在您的防火墙上启用代理 ARP。这是为什么。
您的防火墙 (9.9.9.2) 可以响应 ping。这是因为当我 ping 防火墙的 IP 时,Routing 会将其带到上游路由器,然后上游路由器检查其路由表并意识到 9.9.9.0/28 网络是直接连接的。因此,它会针对 9.9.9.2 地址发出 ARP 请求,您的防火墙以作为 9.9.9.2 地址的“所有者”的 MAC 地址回复该请求。
现在如果我 ping 你的服务器,在 IP 9.9.9.5,同样的路由也会把它作为上游路由器,它会再次注意到 9.9.9.0/28 网络是直接连接的。因此,路由器发出 ARP 请求,寻找“拥有”IP 地址 9.9.9.5 的 MAC 地址。
您的服务器既不在此网络上也未针对此地址进行配置,无法响应此 ARP 请求。 其他东西必须代表服务器响应这个 ARP,服务器确实是这个 IP的真正所有者。您的防火墙现在来救援,并使用 ARP 响应来回答上游路由器的 ARP 请求,提供防火墙的 MAC 地址作为 9.9.9.5 的所有者。这允许路由器以某种方式将数据包封装到防火墙,然后防火墙可以将其转发到服务器的真实地址 (10.0.0.5)。
如果防火墙没有发出代理 ARP 来响应上游路由器的 ARP 请求,路由器就无法知道将目的地为9.9.9.5的数据包发送到防火墙。
我最初打算发布这个,但是当你说现在一切都在禁用代理 ARP 的情况下工作时,我很困惑。因为事实上,它不应该是。您能否发布路由器的防火墙和服务器 IP 地址的“show arp”条目的相关部分?与上面示例中的9.9.9.2、.3、.4和.5地址相同的地址。