RHEL7网卡命名方式解析
2018-11-20阅读 4881

RHEL7系统中,udev规则支持不同的设备命名方案,默认会根据固件、拓扑以及位置信息等使用一致且可预期的网络设备命名,不会像传统命名那样出现重复枚举的情况,不过也使得与传统的eth0eth1命名相比,这种命名方式相对会比较难理解,如enp2s0

这里解读一下RHEL7可预期的名称含义,一般分为两大组成部分:

第一部分是根据接口类型进行的设定:

en代表以太网

w1代表无线局域网

ww代表无线广域网

第二部分是设备名称类型:

o为板载设备,后边会接设备索引

s 为热插拔槽,后边会接位置或索引号

p 为对PCI类型的支持

默认情况下,systemd会采用支持的命名方案为接口命名:

在固件或BIOS信息可用时,使用整合了板载设备提供索引号的固件或BIOS名称,如eno1

否则,使用整合了PCI快速热插拔槽提供索引号的固件或BIOS名称,如ens33

如果硬件连接器物理位置可用,则使用整合该信息的名称,如enp2s0

如果是内核无法识别的命名方案,则在其他方法都不可用时使用传统命名方案,如eth0

不过如果系统启用biosdevname的话,即安装biosdevname软件包,biosdevname程序会使用来自系统BIOS的信息,会使用此方案命名:

内嵌网络接口会被命名为em[123…]

PCI卡网络接口会被命名类似为p3p4

虚拟功能的接口会被命名类似为p3p4_1p3p4_2…

如果用户添加udev规则,则该规则的优先级会更高。RHEL7中与网卡设备命名相关的udev规则文件有:

/usr/lib/udev/rules.d/60-net.rules

/usr/lib/udev/rules.d/71-biosdevname.rules

/lib/udev/rules.d/75-net-description.rules

/usr/lib/udev/rules.d/80-net-name-slot.rules

那么我们就可以使用如下方式控制网卡设备命名:

1.根据网络接口设备识别

ifcfg 文件中使用 HWADDR 指令设定 MAC 地址,这样就可由 udev 识别。会从 DEVICE 指令提供的字符串中提取该名称,按惯例名称应使用与 ifcfg 相同的后缀,如:ifcfg-ens33

2. 通过打开或关闭 biosdevname

如果 biosdevname 可确定,可使用由 biosdevname 提供的名称。

3. 通过打开或关闭 systemd-udev 的命名方式

如果 systemd-udev 可确定,可使用由systemd-udev提供的名称。