只是一个理论问题(出于好奇)。如果主机向其默认网关发送了一个数据包,并且该数据包的目标地址在子网的 IP 范围内,那么网关在这种情况下应该做什么?任何 RFC 中都有相关规则吗?
答案1
路由器应该将其路由回正确的接口。
答案2
网关应具有与主机相同的规则来确定数据包目的地。因此,如果主机位于同一子网中,通常不会将数据包发送到网关。术语“网关”意味着“访问外部”。如果您可以直接发送到目标,则无需通过网关。因此,即使您的主机有规则并且确实将该数据包发送到网关,网关也会有正确的规则,即“任何目的地位于此接口子网上的数据包都将转到该接口”。在这种情况下,只要配置正确,它就会直接转发它。
答案3
数据包从主机到达路由器,而主机始终不知道路由器的 IP 地址。它们不一定知道有更短的路径,因为它们不一定知道路由器和目的地位于同一个子网上。这是我们ICMP 重定向消息。
这只是发生这种情况的一种方式,请考虑是否可以通过 VPN 暂时访问主机。路由器必须为主机执行代理 ARP 才能将数据包发送到路由器。如果主机稍后直接连接到网络(或通过 VPN 连接到其他主机),数据包可能会到达路由器,路由器必须将其放回 LAN 才能到达目的地。
另一种常见情况是两个不同的 IP 范围共享同一个物理网络。路由器可能有两个不同的 IP 地址,每个范围一个。主机可能只通过路由器的一个 IP 地址知道该路由器。如果它发出一个数据包,发往另一个 IP 范围内的路由器以外的目的地,就会发生这种情况。