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
绑定后重命名网卡名称和避免网卡乱序。
参考文档: