我有一台 Linux PC,具有以下物理网络接口:
- 用于大多数流量的主 LAN/以太网端口。
- 以太网(从外部设备)到 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
是辅助接口。