CentOS 6系统下出现双em1网卡的排查与解决方法

admin
CentOS 6系统出现双em1网卡会导致网络配置冲突,影响正常通信,排查时,可通过lspciifconfig确认网卡识别状态,重点检查/etc/udev/rules.d/70-persistent-net.rules文件是否存在重复网卡条目,并查看/etc/sysconfig/network-scripts/下ifcfg-em1配置文件是否冲突,解决方法为修改udev规则,删除重复条目,确保每个网卡有唯一标识,调整网卡顺序后重启网络服务或系统,即可消除双网卡问题,恢复网络正常。

在CentOS 6系统中,网络接口的命名通常基于硬件信息(如MAC地址、主板插槽等),但有时会出现同一个网卡被识别为多个相同名称(如双em1)的异常情况,这不仅会导致网络配置混乱,还可能引发IP冲突或无法联网的问题,本文将结合实际场景,分析双em1网卡的可能原因,并提供详细的排查与解决步骤。

双em1网卡的常见原因

双em1网卡的出现,本质上是系统对同一物理网卡的重复识别或错误命名,常见原因包括:

  1. udev规则配置错误:udev是Linux系统中的设备管理器,负责根据硬件信息动态生成设备名称,若/etc/udev/rules.d/下的网卡命名规则(如70-persistent-net.rules)存在重复或冲突条目,可能导致同一网卡被分配多个em1名称。
  2. 网卡配置文件残留:手动修改网卡配置后,若未清理旧配置文件,可能导致系统加载重复的网卡定义文件(如ifcfg-em1)。
  3. 驱动或硬件问题:网卡驱动加载异常(如驱动版本不兼容、驱动重复加载)或硬件故障(如网卡芯片松动、多端口网卡误识别),可能触发系统重复识别。
  4. 虚拟化环境干扰:在虚拟机(如KVM、VMware)中,若虚拟网卡配置与物理网卡冲突,或虚拟化平台错误映射网卡接口,也可能导致双em1问题。

双em1网卡的排查步骤

确认网卡实际状态

首先通过命令查看当前系统识别到的网卡信息,确认是否真的存在两个em1,或仅为命名重复:

CentOS 6系统下出现双em1网卡的排查与解决方法

# 查看所有网络接口
ip addr show
# 或使用ifconfig(CentOS 6默认安装)
ifconfig -a

若输出中存在两个em1接口(如em1:0em1:1或两个独立的em1),且MAC地址相同或相近(如仅末尾差异),则可判定为重复识别。

检查系统日志,定位识别过程

通过内核日志查看网卡启动时的识别信息,确认重复识别的触发点:

dmesg | grep -i "em1"
# 或查看网卡相关日志
tail -f /var/log/messages | grep -i "eth\|em"

重点关注日志中是否有“duplicate MAC address”“device already exists”等错误提示,或网卡被多次加载的记录。

检查udev命名规则

udev规则是CentOS 6网卡命名的核心配置文件,路径通常为/etc/udev/rules.d/70-persistent-net.rules,检查该文件是否存在重复的em1条目:

cat /etc/udev/rules.d/70-persistent-net.rules

若文件中存在多个NAME="em1"的规则(如下方示例),且对应的MAC地址相同或指向同一物理网卡,则说明udev规则冲突是主要原因:

# 错误示例:重复的em1命名
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:1a:2b:3c", ATTR{type}=="1", KERNEL=="eth*", NAME="em1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:1a:2b:3c", ATTR{type}=="1", KERNEL=="eth*", NAME="em1"

检查网卡配置文件

CentOS 6的网卡配置文件位于/etc/sysconfig/network-scripts/,命名格式为ifcfg-<接口名>,若存在多个ifcfg-em1文件或残留的旧配置文件,可能导致系统加载重复定义:

ls /etc/sysconfig/network-scripts/ | grep em1

若输出中存在ifcfg-em1ifcfg-em1.bakifcfg-em1:0等多个文件,需进一步检查文件内容是否重复。

排查驱动与硬件问题

若以上步骤未发现问题,需考虑驱动或硬件层面的问题:

  • 检查驱动状态:查看网卡驱动是否正常加载,是否存在重复模块:
    lsmod | grep -i "e1000\|igb"  # 根据网卡类型替换驱动名(如Intel网卡常用e1000/igb)

    若驱动模块被多次加载(如出现两个e1000),需尝试卸载重装驱动。

  • 硬件检测:对于物理服务器,可关机后检查网卡是否松动;对于虚拟机,检查虚拟网卡配置(如VMware的“虚拟网络编辑器”或KVM的virsh edit)是否存在映射冲突。

双em1网卡的解决方法

修复udev规则(最常见方案)

若udev规则存在重复条目,需清理冲突规则并重新生成:

  1. 备份原规则文件
    cp /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.bak
  2. 编辑规则文件:删除所有重复的NAME="em1"条目,仅保留一个正确的条目(确保MAC地址与实际网卡一致):
    vim /etc/sysconfig/network-scripts/70-persistent-net.rules

    修改后文件应类似:

    # 仅保留一个em1条目
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:1a:2b:3c", ATTR{type}=="1", KERNEL=="eth*", NAME="em1"
  3. 重启udev服务并触发网卡重新识别
    /etc/init.d/udev restart
    rm /etc/udev/rules.d/70-persistent-net.rules  # 删除规则,让系统重新生成
    echo "em1" > /sys/class/net/eth1/name  # 若原接口名为eth1,手动重命名为em1(可选)
  4. 重启系统
    reboot
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码