如何让 Linux 内核向具有重叠子网的多个网络接口发送 ARP 请求?

如何让 Linux 内核向具有重叠子网的多个网络接口发送 ARP 请求?

我有一台 Linux PC,具有以下物理网络接口:

  1. 用于大多数流量的主 LAN/以太网端口。
  2. 以太网(从外部设备)到 USB(进入我的 PC),用于连接到具有静态 IP 的单个外部设备。PC 的网络接口也被赋予静态 IP(因为外部设备没有 DHCP 服务器)。

之所以有第二个接口,是因为外部设备的 IP 地址是静态的,并且通常与 LAN 上运行的其他类似设备发生冲突。因此,我们使用这些以太网转 USB 适配器将这些外部设备隔离到各个 PC。

理想情况下,办公室 LAN 应该在与外部设备不同的子网上运行(我认为这可以缓解我遇到的问题),但不幸的是,这是不可行的。

在 Windows PC 上,如果有两个网络接口位于同一子网中,则运行起来似乎相对顺畅。特别是,当与外部设备(从 PC)通信时,我可以看到(使用 Wireshark)ARP 请求最初在主网络接口上发出,然后 Windows NT 移动到辅助接口,并在那里找到外部设备。

在我的 Linux PC 上,Linux 内核似乎不遵循将 ARP 请求发送到所有网络接口的相同行为。ARP 请求似乎只会发送到主网络接口。如果我使用以下命令:

ping -I secondaryNetInterface staticIPOfExternalDevice

...通讯按预期进行。

我的问题是:我能让 Linux 内核以与 Windows NT 类似的方式运行吗?

为了让事情更加清楚,这是我的 Linux PC 的路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 eno2
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 eno2
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 eno2
192.168.0.0     0.0.0.0         255.255.255.0   U     101    0        0 eno3

...其中eno2是主接口,eno3是辅助接口。

相关内容