linux网卡名漂移

若使用 Linux 系统的云主机配备了多块网卡,则在重启主机后可能出现网卡名称与网卡 MAC 地址不对应的问题,即网卡漂移问题。

需使用udev规则进行重命名网卡,udev规则是在系统启动时触发,而不是网络连接时!!!

centos默认的net网络规则文件: /etc/udev/rules.d/70-persistent-net.rules

文件名解析

  • 规则优先级:如果存在多个规则匹配同一个设备,udev 会按照规则文件的命名顺序(数字越小优先级越高)和规则内的条件来决定最终应用的规则。

查看网络设备的udev规则配置

1
2
[root@master ~]# cat /etc/udev/rules.d/70-persistent-net.rules 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:b4:84:b0", NAME="eth0"
  • SUBSYSTEM=="net":此条件用于筛选出网络子系统的设备。在 Linux 系统里,各种设备都被归类到不同的子系统,网络设备就属于 net 子系统。这意味着这条规则仅对网络设备生效。

  • ACTION=="add":表示当设备被添加到系统时触发该规则。例如,在系统启动时检测到网络设备,或者在运行过程中插入新的网络设备,就会执行此规则。

  • DRIVERS=="?":? 是通配符,这一条件表示匹配任何驱动程序。也就是说,不管该网络设备使用何种驱动,只要满足前面的条件,就会继续判断后续条件。

  • ATTR{address}=="52:54:00:b4:84:b0":ATTR{address} 代表设备的 MAC 地址。此条件用于匹配 MAC 地址为 52:54:00:b4:84:b0 的网络设备。

  • NAME="eth0":若前面的所有条件都满足,那么系统会将这个网络设备命名为 eth0。

更新加载udev规则

1
2
3
4
5
#通知udev 的守护进程udev进程,重新加载 /etc/udev/rules.d/ 和 /lib/udev/rules.d/ 目录下的所有 udev 规则文件(默认扩展名:rules)
udevadm control --reload-rules

#遍历系统中所有已存在的设备,并根据最新加载的 udev 规则对这些设备重新触发 udev 规则事件
udevadm trigger