Linux 如何或在哪里确定网络设备的分配?特别wlan0
是wlan1
对于无线 USB 设备。
我前段时间插了一个TP USB无线,就分配了wlan0
。我把它去掉了。本周我插入了 Edimax USB 无线设备,它显示为wlan1
。我今天将其取下来尝试第二个 Edimax USB 无线设备(我买了两个),现在它又出现了wlan2
。
我对 Unix/Linux 有足够的了解,知道这是在某处配置的,如果我删除未使用的配置文件,我可以使最新的 Edimax 成为wlan0
.但如何/在哪里?
答案1
乌德夫是决定 Linux 下设备名称的系统组件 - 主要是 下的文件名/dev
,但也包括网络接口的名称。
从 099 到 196 的 udev 版本都有记录网络接口名称的规则,并且对于同一设备始终使用相同的编号。从 udev 174 开始,这些规则默认被禁用,但您的发行版仍然可以启用(例如 Ubuntu 保留它们)。一些发行版提供不同的规则集。
记录和保留接口名称以供将来使用的脚本是
/lib/udev/rules.d/75-persistent-net-generator.rules
。它在 中编写规则
/etc/udev/rules.d/70-persistent-net.rules
。因此,从您的 中删除现有的wlan0
和条目,然后更改为.运行(或您找到与您的设备匹配的任何参数)以将规则重新应用到已插入的设备。wlan1
/etc/udev/rules.d/70-persistent-net.rules
wlan2
wlan0
udevadm --trigger --attr-match=vendor='Edimax'
--attr-match
答案2
自systemd
v197 起,通过引入网络设备持久命名,此问题已得到解决。
根据freedesktop可预测的网络接口名称页上,内核只是根据相关驱动程序探测名称的顺序来分配名称:
内核应用的网络接口的经典命名方案是简单地将以“eth0”、“eth1”等开头的名称分配给驱动程序探测的所有接口。由于现代技术的驱动程序探测通常是不可预测的,这意味着一旦多个网络接口可用,名称“eth0”、“eth1”等的分配通常不再固定,并且很可能会发生“一次启动时的“eth0”在下一次启动时最终会变为“eth1”。
如果您的发行版使用 systemd,您可以使用可预测分配但可能难以使用的名称,例如,wlp0s11
或者您可以编写一条udev
规则来给它们一个您更舒服的名称,例如wifi1
基于 mac 地址...
/etc/udev/rules.d/
在名为 的文件中包含一个文件10-network-device.rules
:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"