Centos 7 中网卡重命名及网乱序解决方案

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 可提取出网卡名称相关的配置文件:

  1. /usr/lib/udev/rules.d/60-net.rules
  2. /usr/lib/udev/rules.d/71-biosdevname.rules
  3. /lib/udev/rules.d/75-net-description.rules
  4. /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.rules71-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=****

在上面的条件下,分别使用不同只的 biosdevnamenet.ifnames ,然后重启查看网卡名称

测试结果

biosdevname net.ifnames 网卡名称
1 1 eth-conifg
1 0 eth-config
0 1 eth-config
0 0 eth-config

2. 网卡乱序测试

测试用例

  1. 分别配置 6 个接口的配置文件的 DEVICEHWADDR
  2. 在 1 的条件下, 修改biosdevname=1net.ifnames=1。 重启 5 次 查看网卡名称是否与 ifcfg-* 配置的一样
  3. 在 1 的条件下, 修改biosdevname=0net.ifnames=0。 重启 5 次 查看网卡名称是否与 ifcfg-* 配置的一样

测试结果

biosdevname net.ifnames 网卡名称是否与 ifcfg-* 一样
1 1
0 0

结论

在不修改 udev 规则的条件下,/etc/sysconfig/network-scripts/ifcfg-* 文件的优先最高。在ifcfg-*文件中将DEVICEmac 绑定后重命名网卡名称和避免网卡乱序。

参考文档:

  1. udev 相关
  2. http://blog.sina.com.cn/s/blog_704836f40102w36n.html
  3. Linux – Biosdevname & net.ifnames
  4. redhat 7 网络设备命名(官方文档)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容