1. udev 网卡规则加载顺序
1.1 udev 配置文件
| 路径 | 作用 |
|---|---|
| /lib/udev/rules.d | 包含 udev 默认配置文件(不要修改) |
| /etc/udev/rules.d/*.rules | 包含 udev 自定义 配置文件 |
| /dev/.udev/rules.d/*.rules | 包含 udev 临时配置文件(不要修改) |
1.2 udev 网卡规则文件及顺序
从 /lib/udev/rules.d 可提取出网卡名称相关的配置文件:
- /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
60-net.rules
使用/lib/udev/rename_device这个程序,去查询/etc/sysconfig/network-scripts/下所有以ifcfg-开头的文件
如果在ifcfg-xx中匹配到HWADDR=xx:xx:xx:xx:xx:xx参数的网卡接口
则选取DEVICE=yyyy中设置的名字作为网卡名称。
71-biosdevname.rules
如果系统中安装了biosdevname,且内核参数未指定biosdevname=0,且上一步没有重命名网卡,则按照biosdevname的命名规范,从BIOS中取相关信息来命名网卡。
主要是取SMBIOS中的type 9 (System Slot) 和 type 41 (OnboardDevices Extended Information)
不过要求SMBIOS的版本要高于2.6,且系统中要安装biosdevname程序。
75-net-description.rules
udev通过检查网卡信息,填写如下这些udev的属性值
ID_NET_NAME_ONBOARD
ID_NET_NAME_SLOT
ID_NET_NAME_PATH
ID_NET_NAME_MAC
80-net-name-slot.rules
如果在60-net.rules ,71-biosdevname.rules这两条规则中没有重命名网卡,且内核未指定net.ifnames=0参数
则udev依次尝试使用以下属性值来命名网卡,如果这些属性值都没有,则网卡不会被重命名。
ID_NET_NAME_ONBOARD
ID_NET_NAME_SLOT
ID_NET_NAME_PATH
2. 测试
2.1 测试环境
硬件:戴尔服务器
系统: Centos 7
千兆网卡:1,(4个接口)
万兆网卡:1(2个接口)
网卡 1 mac:00:0c:29:6e:8e:40
2.2 测试用例及结果
1 .网卡重命名测试
测试用例:修改网卡1 的配置文件,步骤为添加文件/etc/sysconfig/network-scripts/ifcfg-eth0
# filename: ifcfg-eth0
DEVICE="eth-config"
HWADDR=00:0c:29:6e:8e:40
TYPE="Ethernet"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR=****
NETMASK=****
GATEWAY=****
在上面的条件下,分别使用不同只的 biosdevname和net.ifnames ,然后重启查看网卡名称
测试结果:
| biosdevname | net.ifnames | 网卡名称 |
|---|---|---|
| 1 | 1 | eth-conifg |
| 1 | 0 | eth-config |
| 0 | 1 | eth-config |
| 0 | 0 | eth-config |
2. 网卡乱序测试
测试用例:
- 分别配置 6 个接口的配置文件的
DEVICE和HWADDR - 在 1 的条件下, 修改
biosdevname=1、net.ifnames=1。 重启 5 次 查看网卡名称是否与ifcfg-*配置的一样 - 在 1 的条件下, 修改
biosdevname=0、net.ifnames=0。 重启 5 次 查看网卡名称是否与ifcfg-*配置的一样
测试结果
| biosdevname | net.ifnames | 网卡名称是否与 ifcfg-* 一样 |
|---|---|---|
| 1 | 1 | 是 |
| 0 | 0 | 是 |
结论
在不修改 udev 规则的条件下,/etc/sysconfig/network-scripts/的 ifcfg-* 文件的优先最高。在ifcfg-*文件中将DEVICE 和 mac 绑定后重命名网卡名称和避免网卡乱序。
参考文档: