所以我今天开始思考,因为我正在处理一项任务,系统需要知道一个网关,将发往非本地网络的数据包转发到该网关。
然后我回忆起,在以前的生活中,我们习惯于静态分配我们的工作站 IP,并将默认网关设置为相同的 IP。
这就是让我想知道的原因……为什么会这样?
所以我今天开始思考,因为我正在处理一项任务,系统需要知道一个网关,将发往非本地网络的数据包转发到该网关。
然后我回忆起,在以前的生活中,我们习惯于静态分配我们的工作站 IP,并将默认网关设置为相同的 IP。
这就是让我想知道的原因……为什么会这样?
总之一句话:proxy-arp
在今天的网络中,这是一个坏词™,但在过去的几年里,这是在使用“默认网关”之前完成的工作方式 - 当Internet小得多并且没有人担心ARP 表增长到数千个条目时。机器会对任何地址进行ARP 解析,就好像它连接到本地 LAN 一样。LAN 上具有到主机路径的(“任何”)路由器将以其地址进行响应。它今天仍然有效......如果你忽略了巨大的安全漏洞。(谁先回答谁就赢了,现在正在接收流量。又名即时中间人攻击。)
[我实际上是在我们的 OpenStack 测试实验室中这样做的。它允许在每个堆栈后面细分 (/24) 网络。因为每个主机都会为那个存根代理 arp,所以主网络中的机器仍然可以在没有任何明确路由的情况下到达那里。]
只有在路由表中没有到目标网络的更好路由时,设备才会使用默认网关。如果设备不与不在路由表中的网络通信,则永远不会使用默认网关。
可以通过静态更改或使用动态路由协议来更新设备上的路由表。静态条目不能很好地扩展并且维护起来可能有问题,因此最常使用动态路由协议。
充当网络网关的路由器可以通告它们有权访问的网络(可能包括“默认”网络 0.0.0.0/0)。配置为侦听这些广告的客户端设备可以了解这些网络并相应地更新其路由表。
不了解您提到的特定环境的更多信息,我怀疑 Ricky 对 proxy-arp 的回答更有可能,但我想我也会将其添加为一种可能性。
它之所以有效,只是因为您实际上并不需要网关,因为您正在与同一本地子网上的其他系统进行通信。如果您试图访问外部系统,它应该会失败。
一旦流量从源到目标源 PC 运行 ANDing 过程以检查源和目标是同一网络还是不同网络
如果源 PC 在同一网络上找到目标,则检查 PC 中的 ARP 表并选择目标 Mac 地址并将数据包转发到第 2 层交换机,在第 2 层交换机 mac 地址表中检查并将帧转发到特定目的地..
如果源 PC 在不同网络上发现该目的地,则数据包将直接从网关转发到网关,再次根据路由表将数据包转发到目的地。