假设我是一个主机,我了解 ARP 如何工作,以防我在我的子网内寻址 IP。每个 IP 地址都有一个对应的 MAC 地址,所有者响应我的广播 ARP 查询。但是,对于外部IP,我的ARP表其实不是一一对应的。
在这种情况下 ARP 是否以这种方式工作:1-主机向子网广播一个外部 IP 地址,询问这是谁,2-网关路由器以其 MAC 响应,3-对于另一个外部 IP,该过程一次又一次地重复......
在这种情况下,路由器如何知道它应该用自己的 MAC 响应所有这些不同的外部地址?
假设我是一个主机,我了解 ARP 如何工作,以防我在我的子网内寻址 IP。每个 IP 地址都有一个对应的 MAC 地址,所有者响应我的广播 ARP 查询。但是,对于外部IP,我的ARP表其实不是一一对应的。
在这种情况下 ARP 是否以这种方式工作:1-主机向子网广播一个外部 IP 地址,询问这是谁,2-网关路由器以其 MAC 响应,3-对于另一个外部 IP,该过程一次又一次地重复......
在这种情况下,路由器如何知道它应该用自己的 MAC 响应所有这些不同的外部地址?
你有一个误解:
在这种情况下 ARP 是否以这种方式工作:1-主机向子网广播一个外部 IP 地址,询问这是谁,2-网关路由器以其 MAC 响应,3-对于另一个外部 IP,该过程一次又一次地重复......
它不会那样工作。主机的通常情况要简单得多:它使用自己的 IP 地址和网络掩码来决定目标 IP 地址是否是本地的。如果是本地,则使用 ARP 来解析 MAC 地址,如果是远程,则使用 ARP 来解析默认网关的 MAC 地址。然后它发送数据包。(“使用 ARP” = 在缓存中查找,如果未找到,则发出 ARP 请求,等待 ARP 响应。)
具有许多接口的主机对每个接口进行“is-it-local”测试。具有许多路由的主机根据目标 IP 地址决定哪个网关是下一跳。
有一种技术就像您所想的那样,称为“代理 ARP”。其他人在评论中告诉我它仍然是最新的,但我个人已经 20 多年没有看到在愤怒中使用过。在这个方案中,您告诉网关响应其他主机的 ARP 请求。RFC 1027和Cisco 文档中的详细信息。
代理 ARP 通常由执行 NAT 的路由器在侦听不同子网中转发到 WAN 接口本身的 IP 块时使用。
例如,您的路由器可能具有1.1.1.1/30的公共 IP,而您的 ISP 已为您提供了1.3.1.1/28(1.3.1.1-1.3.1.14 或 14 个可用主机)作为 IP 块用于服务你的选择。然后,您的防火墙/路由器可能会促使代理 ARP 响应来自该块的转发流量,即使它是到 WAN 接口(1.1.1.1-1.1.1.2 或 2 个可用主机)的单独子网。
瞻博网络的示例类似于:
set security nat proxy-arp interface reth1.0 address 1.3.1.1/28
获取接口“reth1.0”(充当 WAN,使用 IP 1.1.1.1)来侦听/响应 1.3.1.1/28 范围的请求。