在 CentOS 7 中,网络接口的命名由 udev 设备管理器管理。以下是详解 udev 规则如何控制网卡命名的流程:
核心机制
-
udev 规则目录
- 规则文件:
/usr/lib/udev/rules.d/60-net.rules(系统默认) - 自定义文件:
/etc/udev/rules.d/70-persistent-net.rules(优先级更高)
- 规则文件:
-
命名过程
- 系统启动时,udev 根据规则文件匹配网卡的硬件属性(如 MAC 地址、PCI 位置),赋予设备名称(如
eth0)。
- 系统启动时,udev 根据规则文件匹配网卡的硬件属性(如 MAC 地址、PCI 位置),赋予设备名称(如
自定义网卡命名步骤
1. 创建持久化规则文件
vim /etc/udev/rules.d/70-persistent-net.rules
2. 编写规则格式
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:xx:xx:xx", NAME="eth0"
- 关键字段
ATTR{address}:网卡的 MAC 地址(通过ip link查看)NAME:自定义名称(如eth0)
3. 示例规则
# 规则1:将 MAC 为 00:0c:29:aa:bb:cc 的网卡命名为 eth0
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:aa:bb:cc", NAME="eth0"
# 规则2:将另一张网卡命名为 eth1
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:dd:ee:ff", NAME="eth1"
重要注意事项
-
禁用 Predictable Network Interface Names
若需完全使用传统命名(eth0而非ens192),修改 GRUB 配置:vim /etc/default/grub添加参数:
GRUB_CMDLINE_LINUX="... net.ifnames=0 biosdevname=0"更新 GRUB:
grub2-mkconfig -o /boot/grub2/grub.cfg -
重启生效规则
reboot -
避免多规则冲突
确保/etc/udev/rules.d/中无其他规则覆盖自定义命名。
常见问题排查
-
规则未生效?
- 检查 MAC 地址是否匹配(字母小写)
- 确认规则文件权限:
644 - 重启
udev服务:udevadm control --reload udevadm trigger
-
网卡名称未变
- 检查是否启用 Predictable Names:
cat /sys/class/net/ens192/uevent | grep ID_NET_NAME_PATH - 确保 GRUB 参数
net.ifnames=0已生效。
- 检查是否启用 Predictable Names:
恢复默认规则
删除自定义文件后重启:
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot
总结
-
核心控制文件:
/etc/udev/rules.d/70-persistent-net.rules -
关键字段:
ATTR{address}(MAC 地址)、NAME(自定义名称) -
禁用新命名:GRUB 参数
net.ifnames=0 biosdevname=0
通过正确配置 udev 规则,可灵活管理 CentOS 7 的网卡命名,适配传统或自定义需求。
浙公网安备 33010602011771号