在 CentOS 7 系统中,如果想把默认网卡名称改回传统的 eth0,必须同时配置两个内核启动参数:net.ifnames=0 和 biosdevname=0。修改完 /etc/default/grub 之后,还需要执行 grub2-mkconfig -o /boot/grub2/grub.cfg 重新生成 GRUB 引导配置;随后将网卡配置文件重命名,并同步修改其中的 NAME、DEVICE 字段,最后重启服务器,网卡命名修改才会真正生效。

CentOS 7 默认不会使用 eth0 这类传统网卡命名方式,而是采用可预测网卡命名(Predictable Network Interface Names)。这样做的主要目的是让网卡名称更稳定,避免因启动顺序变化或硬件插拔导致设备名发生改变。不过,如果你确实需要把 CentOS 7 网卡名改成 eth0,重点并不是简单切换命名规则,而是**关闭 systemd/udev 的自动重命名机制**。这一点必须通过内核参数实现,仅修改网卡配置文件通常不会生效。
为什么必须同时添加 net.ifnames=0 和 biosdevname=0
这两个参数需要一起使用,少一个都可能导致 CentOS 7 修改网卡名称失败:
net.ifnames=0:用于关闭 systemd 提供的可预测网卡命名规则,例如enp0s3、ens33等名称通常来源于这一机制biosdevname=0:用于禁用biosdevname工具(如果系统中已安装),否则它可能会在net.ifnames=0生效之前优先对网卡进行重命名,从而造成冲突,或者仍然出现eno1这类接口名
如果只设置其中一个参数,系统重启后依然可能看到 eno1、ens33,甚至出现命名混乱的情况,例如 eth0 和 eno1 同时存在。要确认 CentOS 7 网卡重命名是否成功,可以在重启后执行 ls /sys/class/net/,正常情况下输出中不应再出现 en*、wl* 开头的接口名,而应只保留 lo 和 eth0(或类似传统命名)。
/etc/default/grub 修改后一定要重新生成 GRUB 配置
编辑 /etc/default/grub 只是在修改 GRUB 模板文件,并不会自动同步到实际的引导配置中。很多人在 CentOS 7 修改网卡名称时,常犯的错误就是改完文件后直接重启,结果发现配置没有生效。正确做法是必须执行:
grub2-mkconfig -o /boot/grub2/grub.cfg
这里有一个非常关键的细节:输出路径必须是 /boot/grub2/grub.cfg,不要误写成 /boot/grub/grub.cfg。另外,执行该命令时需要具备 root 权限。命令运行完成后,建议先确认输出末尾是否出现 done,然后再进一步验证新参数是否已经成功写入。例如执行 grep -o "net.ifnames=0" /boot/grub2/grub.cfg,只要能匹配到结果,就说明新的内核参数已经生效配置完成。
网卡配置文件名称与文件内容必须同步修改
仅仅修改内核参数,只能让内核层面把网卡识别为 eth0,但 NetworkManager 或 network.service 仍然可能按照旧配置文件名称(例如 ifcfg-ens33)去加载网络配置,这样就会导致网络服务启动失败,或者 IP 地址配置不生效。因此需要同时完成以下两步:
- 重命名网卡配置文件:
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0 - 编辑该配置文件,把
NAME=ens33和DEVICE=ens33全部修改为eth0
原来的旧配置文件(例如 ifcfg-ens33)一定要删除,或者改名做备份,否则在执行 systemctl restart network 时,可能会出现 “device not found” 报错,或者因为重复加载而引发冲突。这一步也是 CentOS 7 修改默认网卡命名时最容易被忽视的问题之一。
重启后的检查方法与常见不生效原因
系统重启以后,先通过 ip link show 查看当前网卡接口名称,再使用 nmcli connection show 确认连接名称是否已经对应新的接口名。以下几个问题在实际操作中经常被忽略:
- 虚拟机克隆之后如果 MAC 地址发生变化,但配置文件中仍然保留旧的
HWADDR字段,就可能导致eth0无法自动启动,此时需要删除HWADDR这一行 - 某些最小化安装的 CentOS 7 系统默认没有安装
net-tools,因此ifconfig命令不可用,建议直接使用ip addr或nmcli来查看网络状态 - 如果系统当前启用了 NetworkManager,那么
network.service可能已经被禁用或屏蔽,此时更适合使用nmcli connection modify eth0 ...来调整网络配置,而不是单纯直接修改 ifcfg 文件
真正决定 CentOS 7 网卡名是否成功改回 eth0 的,是内核参数、udev 重命名机制禁用以及配置文件修改这三部分形成完整闭环;只要任何一个环节遗漏,系统都有可能重新回到默认的网卡命名方式。实际操作时不要省略步骤,也不要只凭“看起来已经改好了”就判断成功。
