你知道为什么这会发生在我的外部接口上吗?(错误的子网,代理 arp)

网络工程 子网 arp 播送
2021-07-17 21:43:13

我的防火墙设备上的 OUTSIDE 接口分配了 IP 地址 .2

它连接到的路由器 (ISP) 是 .1

请记住,代理 ARP 已打开(不记得这样做了,但确实是这样),我不小心将防火墙(.2 设备)上的接口配置为 255.255.255.248 而不是 .240。

这会将可用 IP 的范围从 .0-15 限制到 .0-7

但是,我所有的流量(和 NAT)都是使用“小于 .7”的 IP 完成的。但是,一段时间后,如果代理 ARP 关闭,互联网连接就会丢失。重新打开代理 ARP 将再次提供互联网。

在将外部接口上的子网更改为正确的 (.240) 并关闭代理 ARP 后,一切都按预期进行。

所以一切正常 - 太好了。但是,考虑到我使用的是错误配置的子网中的所有 IP,为什么即使使用错误的子网它也不起作用?我能想到的唯一原因是 IP 广播地址已更改,但 ARP 是以太网而不是 IP,因此错误的 IP 广播地址毫无意义。

任何人都对出了什么问题有足够的洞察力,以获取学习价值?

1个回答

当您说 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地址相同的地址。