Linux系统修改网卡名为eth0、eth1

在Linux中,可以通过以下步骤将网卡名修改为 eth0eth1 等传统命名方式:

方法一:通过修改 GRUB 配置和创建 Udev 规则

  1. 修改 GRUB 配置文件 : 打开 /etc/default/grub 文件,添加以下内容到 GRUB_CMDLINE_LINUX 行:

    ini 复制代码
    net.ifnames=0 biosdevname=0

    执行以下命令:

    arduino 复制代码
    # Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、Kylin Server、Uos Server
    sed -ri.bak '/^GRUB_CMDLINE_LINUX=/s@"$@ net.ifnames=0 biosdevname=0"@' /etc/default/grub
    ​
    # Ubuntu、Debian
    sed -ri.bak '/^GRUB_CMDLINE_LINUX=/s@"[email protected]=0 biosdevname=0"@' /etc/default/grub

    然后更新 GRUB 配置

    bash 复制代码
    # Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、Kylin Server、Uos Server
    grub2-mkconfig -o /boot/grub2/grub.cfg
    ​
    # Ubuntu、Debian
    grub-mkconfig -o /boot/grub/grub.cfg

    如果是 UEFI 引导系统,更新命令为:

    bash 复制代码
    # Rocky
    grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
    ​
    # Almalinux
    grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg
    ​
    # CentOS
    grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
    ​
    # openEuler
    grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg
    ​
    # AnolisOS
    grub2-mkconfig -o /boot/efi/EFI/anolis/grub.cfg
    ​
    # OpenCloudOS
    grub2-mkconfig -o /boot/efi/EFI/opencloudos/grub.cfg
    ​
    # Kylin Server
    grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg
    ​
    # Uos Server
    grub2-mkconfig -o /boot/efi/EFI/uos/grub.cfg
    ​
    # Ubuntu
    grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
    ​
    # Debian
    grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg

    UEFI 引导系统可以直接执行下面命令:

    bash 复制代码
    EFI_DIR=`find /boot/efi/ -name "grub.cfg" | awk -F"/" '{print $5}'`
    ​
    # Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、Kylin Server、Uos Server
    grub2-mkconfig -o /boot/efi/EFI/${EFI_DIR}/grub.cfg
    ​
    # Ubuntu、Debian
    grub-mkconfig -o /boot/efi/EFI/${EFI_DIR}/grub.cfg
  2. 创建 Udev 规则文件 : 创建 /etc/udev/rules.d/10-network.rules 文件,并添加以下内容:

    ini 复制代码
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="<网卡MAC地址>", NAME="eth0"

    <网卡MAC地址> 替换为实际网卡的 MAC 地址。

    ini 复制代码
    [root@anolis8 ~]# ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:c5:38:3b brd ff:ff:ff:ff:ff:ff
        altname enp2s1
        inet 172.31.7.15/21 brd 172.31.7.255 scope global dynamic noprefixroute ens33
           valid_lft 1590sec preferred_lft 1590sec
        inet6 fe80::20c:29ff:fec5:383b/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    ​
    # 在Rocky 9、Almalinux 9、CentOS 9和10、AnolisOS 8和23、OpenCloudOS 9系统上执行下面操作
    [root@anolis8 ~]# cat >> /etc/udev/rules.d/10-network.rules << EOF
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:c5:38:3b", NAME="eth0"
    EOF
    ​
    # 也可以执行下面命令
    ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
    ETHMAC=`ip addr show ${ETHNANME} | awk -F' ' '/ether/{print $2}'`
    cat >> /etc/udev/rules.d/10-network.rules << EOF
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="${ETHMAC}", NAME="eth0"
    EOF
  3. 修改网卡配置文件 : 创建 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,并配置网卡参数,例如:

    bash 复制代码
    # 在Rocky 9、Almalinux 9、CentOS 9和10、AnolisOS 23、OpenCloudOS 9系统上执行下面操作
    cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-EOF
    BOOTPROTO=static
    NAME=eth0
    DEVICE=eth0
    ONBOOT=yes
    IPADDR=172.31.0.9
    NETMASK=255.255.248.0
    GATEWAY=172.31.0.2
    DNS1=223.5.5.5
    DNS2=114.114.114.114
    EOF
    ​
    # 在Rocky 8、Almalinux 8、CentOS 7和8、AnolisOS 8、OpenCloudOS 8、Kylin Server v10和Uos Server v20系统上执行下面操作
    ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
    mv /etc/sysconfig/network-scripts/ifcfg-${ETHNAME} /etc/sysconfig/network-scripts/ifcfg-eth0
    sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/sysconfig/network-scripts/ifcfg-eth0
    ​
    # Ubuntu 22.04和24.04
    ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
    sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/netplan/50-cloud-init.yaml
    ​
    # Ubuntu 20.04
    ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
    sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/netplan/00-installer-config.yaml
    ​
    # Ubuntu 18.04
    ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
    sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/netplan/01-netcfg.yaml
    ​
    # Debian
    ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
    sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/network/interfaces
  4. 重启系统

    复制代码
    reboot

    重启后,网卡名称将变为 eth0

方法二:使用 systemd 链接文件

这种方法只适合于Rocky Linux 9、Almalinux 9、CentOS Stream 9和10、AnolisOS 23、OpenCloudOS 9系统。

  1. 创建 systemd 链接文件 : 创建 /etc/systemd/network/70-eth0.link 文件,内容如下:

    ini 复制代码
    [Match]
    MACAddress=<网卡MAC地址>
    ​
    [Link]
    Name=eth0

    <网卡MAC地址> 替换为实际网卡的 MAC 地址。

    csharp 复制代码
    [root@rocky9 ~]# mkdir -p /etc/systemd/network/
    [root@rocky9 ~]# touch /etc/systemd/network/70-eth0.link
    ​
    [root@rocky9 ~]# ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:f8:60:8f brd ff:ff:ff:ff:ff:ff
        altname enp3s0
        inet 172.31.7.16/21 brd 172.31.7.255 scope global dynamic noprefixroute ens160
           valid_lft 1791sec preferred_lft 1791sec
        inet6 fe80::20c:29ff:fef8:608f/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    ​
    [root@rocky9 ~]# cat > /etc/systemd/network/70-eth0.link << EOF
    [Match]
    MACAddress=00:0c:29:f8:60:8f
    ​
    [Link]
    Name=eth0
    EOF
  2. 修改 NetworkManager 配置文件 : 如果使用 NetworkManager 管理网络,需要修改 /etc/NetworkManager/system-connections 下的配置文件,例如:

    bash 复制代码
    mv /etc/NetworkManager/system-connections/原网卡名.nmconnection /etc/NetworkManager/system-connections/eth0.nmconnection

    然后编辑文件,将其中的 interface-name 修改为 eth0

    sql 复制代码
    [root@rocky9 ~]# ls /etc/NetworkManager/system-connections/ens160.nmconnection 
    /etc/NetworkManager/system-connections/ens160.nmconnection
    [root@rocky9 ~]# mv /etc/NetworkManager/system-connections/ens160.nmconnection /etc/NetworkManager/system-connections/eth0.nmconnection
    ​
    [root@rocky9 ~]# sed -i.bak 's/'ens160'/eth0/' /etc/NetworkManager/system-connections/eth0.nmconnection
  3. 重启系统

    复制代码
    reboot

    重启后,网卡名称将变为 eth0

可以使用下面脚本执行:

bash 复制代码
[root@rocky9 ~]# cat rename_eth.sh 
#!/bin/bash
ETHNAME=`ip addr | awk -F"[ :]" '/^2/{print $3}'`
ETHMAC=`ip addr show ${ETHNANME} | awk -F' ' '/ether/{print $2}'`
​
mkdir /etc/systemd/network/
touch /etc/systemd/network/70-eth0.link
cat > /etc/systemd/network/70-eth0.link << EOF
[Match]
MACAddress=${ETHMAC}
​
[Link]
Name=eth0
EOF
​
mv /etc/NetworkManager/system-connections/${ETHNAME}.nmconnection /etc/NetworkManager/system-connections/eth0.nmconnection
sed -i.bak 's/'${ETHNAME}'/eth0/' /etc/NetworkManager/system-connections/eth0.nmconnection

注意事项

  • 修改网卡名称后,可能需要删除旧网卡的配置文件,以避免冲突。
  • 如果系统中存在多个网卡,可以按照类似的方式为每个网卡创建对应的 Udev 规则或 systemd 链接文件
相关推荐
饺子大魔王的男人21 分钟前
Docker环境下FileRise私有云盘在飞牛NAS的部署与穿透实践
运维·docker·容器
lyh134424 分钟前
【Ubuntu崩溃修复】
linux·运维·服务器
不爱学英文的码字机器1 小时前
持续交付的进化:从DevOps到AI驱动的IT新动能
运维·人工智能·devops
什么半岛铁盒2 小时前
【Linux系统】Linux环境变量:系统配置的隐形指挥官
linux
炎码工坊2 小时前
API网关Envoy的鉴权与限流:构建安全可靠的微服务网关
网络安全·微服务·云原生·系统安全·安全架构
炎码工坊2 小时前
从零掌握微服务通信安全:mTLS全解析
安全·网络安全·云原生·系统安全·安全架构
Lw老王要学习2 小时前
Linux容器篇、第一章_02Rocky9.5 系统下 Docker 的持久化操作与 Dockerfile 指令详解
linux·运维·docker·容器·云计算
橙子小哥的代码世界2 小时前
【大模型RAG】Docker 一键部署 Milvus 完整攻略
linux·docker·大模型·milvus·向量数据库·rag
斯普信专业组3 小时前
Kafka主题运维全指南:从基础配置到故障处理
运维·分布式·kafka
倔强的石头1063 小时前
【Linux指南】用户与系统基础操作
linux·运维·服务器