在 CentOS 7 中,网络接口的命名由 ​udev​ 设备管理器管理。以下是详解 udev 规则如何控制网卡命名的流程:


​核心机制​

  1. ​udev 规则目录​

    • 规则文件:/usr/lib/udev/rules.d/60-net.rules(系统默认)
    • 自定义文件:/etc/udev/rules.d/70-persistent-net.rules(优先级更高)
  2. ​命名过程​

    • 系统启动时,udev 根据规则文件匹配网卡的硬件属性(如 MAC 地址、PCI 位置),赋予设备名称(如 eth0)。

​自定义网卡命名步骤​

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"

​重要注意事项​

  1. ​禁用 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
    
  2. ​重启生效规则​

    reboot
    
  3. ​避免多规则冲突​
    确保 /etc/udev/rules.d/ 中无其他规则覆盖自定义命名。


​常见问题排查​

  1. ​规则未生效?​

    • 检查 MAC 地址是否匹配(字母小写)
    • 确认规则文件权限:644
    • 重启 udev 服务:
      udevadm control --reload
      udevadm trigger
      
  2. ​网卡名称未变​

    • 检查是否启用 Predictable Names:
      cat /sys/class/net/ens192/uevent | grep ID_NET_NAME_PATH
      
    • 确保 GRUB 参数 net.ifnames=0 已生效。

​恢复默认规则​

删除自定义文件后重启:

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 的网卡命名,适配传统或自定义需求。

posted on 2025-06-09 14:24  LeeHang  阅读(236)  评论(0)    收藏  举报