同一子网上具有 2 个 NIC 的设备可实现冗余,并可连接到其他网络

同一子网上具有 2 个 NIC 的设备可实现冗余,并可连接到其他网络

我有一台基于 Linux 的设备,带有两个 NIC:

NIC1eth0:192.168.1.100/24;网关:192.168.1.1

NIC2eth1:192.168.1.101/24;未设置网关

此设备与应用服务器 (IP:10.1.1.1) 通信。应用逻辑将设备与其两个 IP 关联,因此可以使用主 IP 访问设备,如果失败则切换到辅助 IP。这应该在设备 NIC 级别提供冗余。我不能在这里使用绑定,因为服务器希望设备有 2 个 IP 地址。

如果没有进一步的配置,如果我拔掉 NIC1,设备就无法再与服务器通信,这是预料之中的,因为 NIC2 没有关联的网关。

但是,如果我通过 NIC2 向服务器网络添加静态路由,则路由表将是

Destination       Gateway         Genmask           Int
0.0.0.0           192.168.1.1     255.255.255.0     eth0
192.168.1.0       0.0.0.0         255.255.255.0     eth0
10.1.1.0          192.168.1.1     255.255.255.0     eth1

我期待以下行为

  1. 当两个网卡都连接时,由于路由更具体,可以通过 eth1 访问服务器
  2. 如果仅拔下 NIC1,则由于静态路由,可以通过 eth1 访问服务器
  3. 如果仅拔掉 NIC2,则静态路由应从路由表中消失,并且由于默认网关,应通过 eth0 访问服务器

1 和 2 符合预期。相反,当拔下 NIC2 时,无法访问服务器。

为什么?如果我将 NIC1 和 NIC2 放在不同的子网上,第 3 点不会失败,即无论我拔掉哪条电缆,设备始终可以在另一个 NIC 上访问。当两个 NIC 都设置在同一个子网上时,阻止这种情况发生的技术原因是什么?

编辑

我查看了 ARP 流量问题,它似乎更像是应用程序级别的问题,但这里的情况并非如此。ARP 流量似乎不会阻止主机通信,因此无法解释为什么在拔下 NIC2 时 ping NIC1 会失败。

答案1

声誉不足以发表评论,所以我把这个写成答案。我建议你采用绑定或组合方式。你试图给出的解决方案非常尴尬。设置一个包含 2 个物理网卡(主动/主动或主动/被动)的虚拟绑定/组合接口,然后在虚拟绑定/组合接口上添加 2 个 IP,以便应用程序认为是冗余的。

相关内容