文档首页/ 弹性云服务器 ECS/ 常见问题/ 网络配置/ 如何解决多网卡的Linux弹性云服务器变更规格后网卡漂移?
更新时间:2024-11-01 GMT+08:00
分享

如何解决多网卡的Linux弹性云服务器变更规格后网卡漂移?

问题描述

绑定了多个网卡的Linux系统弹性云服务器,如果在变更规格后执行ifconfig(或ip addr)命令时出现网卡设备名称与网卡MAC地址对应不一致的情况,则表明云服务器变更规格后发生了网卡漂移。

如下图所示,变更规格前后,分别在云服务器中执行ip addr命令。从执行结果可以看到eth1和eth2对应的网卡MAC地址发生了变化,该情况即为发生了网卡漂移。

图1 变更规格前
图2 变更规格后

可能原因

在Linux操作系统的云服务器中,与网卡相关的信息保存在/etc/udev/rules.d/70-persistent-net.rules文件中,当该文件不存在或者文件内容和Linux操作系统云服务器的实际信息不一致时,就可能导致出现网卡漂移现象。

处理方法

  1. 远程登录出现网卡漂移的云服务器
  2. 执行以下命令,修改“/boot/grub2/gurb.cfg”文件。

    在“/boot/grub2/gurb.cfg”文件中,增加biosdevname=0, net.ifnames=0,如果文件中已经有该配置项,则跳过本步骤,不用添加。

    cat /boot/grub2/grub.cfg I grep linux I grep net.ifnames

          1inux /boot/vmlinuz-5.10.0-60.18.0.50.r865_35.hce2.x86_64 root=UUID=bb9f8e28-4582-48d5-9fe8-d76d32466d03 ro biosdevname=0 net.ifnames=0 consoleblank=600 console=tty0 console=ttyS0,115200n8 nohz=off mitigations=off crashkernel=512M crash_kexec_post notifiers panic=3 nmi_watchdog=1 selinux=0 rd.shel1=0
          1inux /boot/vmlinuz-0-rescue root=UUID=bb9f8e28-4582-48d5-9fe8-d76d32466d03 ro biosdevname=0 net.ifnames=0 consoleblank=600 console=tty0 console=ttyS0, 115200n8 nohz=off mitigations=off crashkernel=512M crash_kexec_post_notifiers panic=3 nmi_watchdog=1 selinux=0 rd.shel1=0
  3. 执行以下命令,添加udev规则,在“/etc/udev/rules.d/”下创建一个MAC地址和网卡名称的映射规则,并给予可执行权限。

    为了保序,建议网卡名称命名采用非eth开头命名方式。

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

    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="fa:16:3e:79:5f:a1", ATTR{type}=="1", KERNEL=="eth*", NAME="net_eth0"
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="fa:16:3e:79:5c:1b", ATTR{type}=="1", KERNEL=="eth*", NAME="net_eth1"
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="fa:16:3e:79:58:78", ATTR{type}=="1", KERNEL=="eth*", NAME="net_eth2"
  4. 执行以下命令,给予映射规则可执行权限。

    #chmod +x /etc/udev/rules.d/70-persistent-net.rules

  5. 执行以下命令,修改“/etc/sysconfig/network-scripts/ifcfg-$name”下网卡配置文件名和文件中“DEVICE=$name”字段对应值的名字一一对应。
    cat /etc/sysconfig/network-scripts/ifcfg-net_eth0
    DEVICE="net_eth0"
    B00TPROTO="dhcp"
    ONBO0T="yes"
    TYPE="Ethernet"
    PERSISTENT_DHCLIENT="yes"
  6. 执行以下命令,重新生成grub配置并更新内核参数。

    不同操作系统的grub代次有差异,例如update-initramfs和mkinitrd。

    grub2-mkconfig -o /boot/grub2/grub.cfg

    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-5.10.0-60.18.0.50.r865_35.hce2.x86_64
    Found initrd image: /boot/initramfs-5.10.0-60.18.0.50.r865_35.hce2.x66_64.img
    Found linux image: /boot/vmlinuz-0-rescue
    Found initrd image: /boot/initramfs-0-rescue.img
    Adding boot menu entry for UEFI Firmware Settings ...
    done
  7. 执行以下命令,重启云服务器即可使配置生效。

    reboot

  8. 执行以下命令,查看网卡设备名称与网卡MAC地址的映射关系。
    ip addr
    图3 查看结果

相关文档