CentOS7修改网卡名称为eth0需三步:首先编辑/etc/default/grub,在GRUB_CMDLINE_LINUX参数中添加net.ifnames=0 biosdevname=0,执行grub2-mkconfig -o /boot/grub2/grub.cfg更新配置;其次将原网卡配置文件(如/etc/sysconfig/network-scripts/ifcfg-ens33)重命名为ifcfg-eth0,修改其中的NAME和DEVICE为eth0;最后重启系统,使用ip a确认网卡名称已变为eth0,此方法通过禁用PNN命名规则实现名称固定。
在CentOS 7及后续版本中,系统默认采用Predictable Network Interface Names(可预测网络接口名)机制,网卡名称不再是传统的eth0、eth1,而是根据硬件信息自动生成,如ens33、ens160、enp0s3等,这种命名方式虽然能避免硬件变更导致的名称混乱,但部分用户或脚本可能仍习惯使用传统的eth0名称,本文将详细介绍如何在CentOS 7中将网卡名称修改为eth0,涵盖配置文件修改、内核参数调整及系统重启验证等完整步骤。
为什么需要修改网卡名称?
CentOS 7引入可预测网络接口名的主要目的是:
- 稳定性:无论硬件如何更换(如更换网卡、主板),网卡名称不会因硬件顺序变化而改变。
- 一致性:不同Linux发行版的命名规则更统一,减少适配成本。
但以下场景可能需要改回eth0:

- 兼容旧版脚本或工具(如某些自动化运维脚本、监控插件)。
- 习惯传统命名方式,便于快速识别和管理。
修改网卡名称为eth0的步骤
确认当前网卡名称
首先通过命令查看当前系统的网卡名称,假设目标网卡为ens33(实际操作时需替换为你的网卡名称):
ip a # 或 ifconfig
输出示例中,你会看到类似ens33的网卡信息,记下其名称和MAC地址(后续步骤需要用到)。
修改网卡配置文件
CentOS 7的网卡配置文件位于/etc/sysconfig/network-scripts/目录下,文件名格式为ifcfg-网卡名称(如ifcfg-ens33),我们需要修改该文件中的NAME和DEVICE字段为eth0。
操作步骤:
(1)备份原配置文件(防止修改错误导致无法联网):
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
(2)编辑原配置文件(以ens33为例,替换为你的网卡名称):
vi /etc/sysconfig/network-scripts/ifcfg-ens33
(3)修改以下两行:
- 将
NAME=ens33改为NAME=eth0 - 将
DEVICE=ens33改为DEVICE=eth0
其他配置(如BOOTPROTO、ONBOOT、IPADDR等)保持不变,修改后保存退出(wq)。
示例配置文件内容:
TYPE=Ethernet BOOTPROTO=static NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8
修改udev规则(持久化网卡名称)
udev是Linux的设备管理工具,通过规则文件可以固定网卡名称与MAC地址的绑定关系,我们需要创建或修改udev规则,确保系统重启后仍使用eth0名称。
操作步骤:
(1)查看当前网卡的MAC地址(以ens33为例):
ip a show ens33 | grep link/ether
输出示例:link/ether 00:0c:29:12:34:56(记下MAC地址)。
(2)创建udev规则文件(文件名建议使用70-persistent-net.rules,位于/etc/udev/rules.d/目录):
vi /etc/udev/rules.d/70-persistent-net.rules
(3)添加以下规则(将MAC地址替换为你的网卡MAC地址):
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:12:34:56", NAME="eth0"
说明:
SUBSYSTEM=="net":针对网络设备。ACTION=="add":设备添加时触发。ATTR{address}=="MAC地址":匹配网卡的物理地址。NAME="eth0":指定设备名称为eth0。
(4)保存退出(wq)。
修改内核参数(禁用可预测命名)
CentOS 7通过内核参数net.ifnames和biosdevname控制网卡命名规则,我们需要修改/etc/default/grub文件,禁用这两个参数,使系统使用传统命名方式。
操作步骤:
(1)编辑grub配置文件:
vi /etc/default/grub
(2)找到GRUB_CMDLINE_LINUX行,添加net.ifnames=0 biosdevname=0(多个参数用空格隔开)。
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
(3)重新生成grub配置文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
注意:如果是UEFI启动的系统,目标路径可能为/boot/efi/EFI/centos/grub.cfg,可通过ls /boot/确认。
重启系统验证
完成上述配置后,重启系统使所有配置生效:
reboot
重启后,再次通过ip a或ifconfig命令查看网卡名称,此时应已显示为eth0:
ip a | grep eth0
输出示例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
常见问题及解决方法
重启后网卡名称未变为eth0?
- 检查grub参数:确认
/etc/default/grub中是否正确添加了net.ifnames=0 biosdevname=0,并执行了grub2-mkconfig。 - 检查udev规则:确认
/etc/udev/rules.d/70-persistent-net.rules中的MAC地址是否正确,且与网卡实际MAC地址一致。 - 检查配置文件:确认
/etc/sysconfig/network-scripts/ifcfg-eth0中的NAME和DEVICE是否为eth0。
修改后无法联网?
- 确认ONBOOT:检查网卡配置文件中
ONBOOT=yes,确保网卡开机启动。 - 确认IP配置:如果是静态IP,检查
IPADDR、NETMASK、GATEWAY是否正确;如果是动态IP(BOOTPROTO=dhcp),确认服务是否运行。 - 重启网络服务:可尝试
systemctl restart network重启网络服务(临时生效,重启系统后仍需按上述步骤配置)。
多块网卡如何处理?
如果有多个网卡(如ens33、ens37),需分别对每个网卡执行上述步骤:
- 修改对应的
ifcfg-网卡名称文件(如ifcfg-ens33改为ifcfg-eth0,ifcfg-ens37改为ifcfg-eth1)。 - 在
70-persistent-net.rules中为每个网卡添加规则(使用各自的MAC地址)。 - 确保内核参数修改(
net.ifnames=0 biosdevname=0)对所有网卡生效。
注意事项
- 操作前备份:修改配置文件前务必备份,避免因配置错误导致系统无法联网。
- MAC地址唯一性:udev规则中的MAC地址必须与网卡实际MAC地址一致,可通过
ip a确认。 - 虚拟机环境:在VMware、VirtualBox等虚拟机中,网卡名称可能因虚拟机版本不同而变化(如
ens33、enp0s3),操作时需以实际名称为准。 - 生产环境谨慎操作:生产环境修改网卡名称前,建议在测试环境验证,避免因配置错误导致服务中断。
通过上述步骤(修改网卡配置文件、调整udev规则、更新内核参数、重启系统),即可将CentOS 7的网卡名称从默认的可预测名称(如ens33)修改为传统的eth0,虽然CentOS 7默认使用可预测命名,但通过合理配置,仍可兼顾兼容性和习惯需求,操作过程中需注意细节,确保配置准确,避免因修改错误引发网络问题。


