Udev规则区分无线和有线接口

Udev规则区分无线和有线接口

我正在尝试在 USB 拇指驱动器上设置 Arch 安装,并且希望无论我将拇指驱动器插入哪台机器(物理或虚拟),我的网络接口名称都保持不变。

为此,我想udev根据接口是有线还是无线来编写规则。我尝试了以下规则,但未能重命名接口:

SUBSYSTEM=="net",ACTION=="add",ATTR{ifindex}==2,NAME=eth0
SUBSYSTEM=="net",ACTION=="add",ATTR{ifindex}==3,NAME=wlan0

当然,这是基于一个天真的假设,即有线接口将列在第二位,无线接口列在第三位(在环回之后)。

我的问题是:

  1. 为什么规则无法重命名接口?我该如何调试这个故障?
  2. 有没有更可靠的方法来检测接口是有线还是无线
  3. 奖金:为了简单起见,我假设我连接的任何机器每种类型最多有一个接口。有没有办法处理多个有线/无线接口?

答案1

/etc/udev/rules.d/70-persistent-net.rules如果有帮助,则完全用于该目的的文件(如果使用不同的命名方案,现在已弃用)与 MAC 地址匹配,而不是与索引匹配。而我真的真的不会依赖索引,有保证网络接口以任何特定顺序创建。这是我的机器上的样子:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="11:22:33:44:55:66", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

该文件是自动创建的,我不知道为什么它们包含eth0.根据您的系统的需要进行修改。正如上面的评论中提到的,使用udevadm info -p /sys/class/net/wlan0etc. 来获取完整的属性列表。

相关内容