在Linux中,可以通过以下步骤将网卡名修改为 eth0
、eth1
等传统命名方式:
方法一:通过修改 GRUB 配置和创建 Udev 规则
-
修改 GRUB 配置文件 : 打开
/etc/default/grub
文件,添加以下内容到GRUB_CMDLINE_LINUX
行:ininet.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 引导系统可以直接执行下面命令:
bashEFI_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
-
创建 Udev 规则文件 : 创建
/etc/udev/rules.d/10-network.rules
文件,并添加以下内容:iniSUBSYSTEM=="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
-
修改网卡配置文件 : 创建
/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
-
重启系统:
reboot
重启后,网卡名称将变为
eth0
。
方法二:使用 systemd 链接文件
这种方法只适合于Rocky Linux 9、Almalinux 9、CentOS Stream 9和10、AnolisOS 23、OpenCloudOS 9系统。
-
创建 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
-
修改 NetworkManager 配置文件 : 如果使用 NetworkManager 管理网络,需要修改
/etc/NetworkManager/system-connections
下的配置文件,例如:bashmv /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
-
重启系统:
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 链接文件