当两者都连接到同一网络时,Linux 如何确定使用哪个网络接口?
请注意,这不是一个关于路由的问题。我很熟悉它是如何运作的。例如,如果我的笔记本电脑通过以太网卡和无线卡连接到无线路由器,或者如果我有两个以太网卡都连接到同一路由器。
我可以根据经验说,就我而言,我的笔记本电脑似乎更喜欢以太网卡(eth0)而不是无线接口(eth1——我知道这不是无线接口的典型名称,但这就是我所拥有的),但我是想知道,它是如何决定的?如果它只是从编号最低的接口中进行选择,那么如果两个选择是 eth0 和 wlan0 呢?
编辑:@Nils 指出这仍然是一个路由问题,路由表提供了答案(请参阅他的答案)。这仍然留下了我原来的问题,但形式不同。 Linux 中路由表中条目的顺序由什么决定?例如,这是我连接到两个接口时的路由表:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.4.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
很明显,对于本地网络中的目标,表中 eth0 的优先级高于 eth1,但这在 Linux 中是由链路延迟、链路吞吐量、甚至接口名称还是什么决定的? (同样的问题也可能是为什么 eth0 是默认路由的接口。)
答案1
嗯 - 这是一个路由问题。
答案很简单:给出最佳路由条目的第一个条目是“获胜者”。所以先看看netstat -rn
是哪个接口。
更新:网络接口路由设置通常在系统启动期间设置。因此网络设备的启动顺序将是该表中的顺序。对于 PCI 设备,这些通常首先由最低插槽号进行处理。外部设备(例如 USB)通常稍后出现。
但确切的顺序取决于您的 Linux 风格的网络启动脚本(这是它们非常不同的地方)。
顺便说一句:如果你想利用你的两个链接,你应该去粘合。您可以在那里设置链接的使用顺序。