网络接口首选项


8

当两个都连接到同一网络时,Linux如何确定要使用哪个网络接口?

请注意,这不是路由问题。我对它的工作方式很熟悉。举例来说,这是因为我的笔记本电脑既通过以太网卡又通过无线卡连接到了无线路由器,或者如果我有两个以太网卡都同时连接到同一路由器。

我可以说,从我的经验来看,我的笔记本电脑似乎比无线网卡更喜欢以太网卡(eth0)(我知道这不是无线接口的典型名称,但这就是我的名字),但是我想知道,它如何决定呢?如果只是从编号最小的接口中选取,那么两个选项分别是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是默认路由的接口,也会出现相同的问题。)

Answers:


6

好吧-这是一个路由问题。

答案很简单:第一个将给出最佳路由输入的条目是“获胜者”。因此netstat -rn,请查看第一个是哪个接口。

更新:通常在系统启动期间设置网络接口路由设置。因此,网络设备的启动顺序将是该表中的顺序。对于PCI设备,通常会先按最低的插槽号对其进行处理。外部设备(例如USB)通常会稍后出现。

但是确切的顺序取决于Linux风格的network-startup-script(这在它们之间有很大的不同)。

顺便说一句:如果您想使用两个链接,则应该进行绑定。您可以在此处设置链接的使用顺序。


1
这就说得通了。当我说路由时,我的意思不是简单地选择将哪个接口(直接或间接)连接到目标网络,因为两者都是。我应该更加谨慎地使用术语。感谢您的有用提示(尤其是关于绑定)。但是,这仍然使我最初的问题略有不同。在Linux中如何确定路由条目的顺序(我编辑了原始问题)?
多米尼克·帕斯托

@Dominick我相应地更新了我的答案。您正在使用什么发行版和哪个主要版本?
尼尔斯2012年

啊。我没有意识到发行版之间的差异可能很大。我四处寻找有关此问题的信息,但是发现的只是关于如何设置路由条目的文章,而不是有关如何确定原始路由条目的文章。我正在使用Xubuntu 12.04。这确实提出了另一个问题(尽管很小;您的回答让我感到非常启发:-))。如果我通过无线(eth1)连接,后来又通过以太网(eth0)连接,则路由表中的默认路由和顶部条目将回到eth0。这似乎与您的答案背道而驰。我是误解了,还是NetworkManager特质,还是什么?
Dominick Pastore

@Dominick Ubuntu非常特别。插入/拔出网络设备时,它会在后台执行一些魔术操作。我猜它会重新启动整个网络堆栈。(我通常使用SLES / RH,并且对Ubuntu不太了解)
Nils

-3

并不是要冒犯您,但是,如果您熟悉任何Linux机器上TCP / IP通信堆栈的路由部分,则还应该知道,将两个网络接口连接到同一网络的结果充其量是不可预测的。如果您是我,则可以禁用笔记本电脑上的无线功能,也可以运行ifconfig eth0 down命令(假设eth0是您的有线以太网连接)将其关闭。Linux可能具有对每个数据包进行相同选择的智能,但是在某些时候出现网络故障的情况下,可能会导致意外结果。我的2美分。


1
这不是不可预测的。如@Nils所述,使用路由表中的第一个匹配项。
gertvdijk 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.