CentOS 7 默认采用基于硬件地址的可预测网络接口名称(如 ens33),而非传统的 eth0,这一机制旨在解决设备变更导致名称不稳定的问题,若需恢复为 eth0,需编辑 grub 配置文件,添加 net.ifnames=0 和 biosdevname=0 内核参数,更新 grub 并重启系统。
很多习惯使用 CentOS 6 或更早版本运维人员,在初次接触 CentOS 7 时都会遇到一个困惑:为什么我的网卡名字变成了 ens33、enp0s3,而不是熟悉的 eth0?
使用 ip addr 或 ifconfig 命令查看时,你会发现网卡名称发生了巨大的变化,这并非安装过程出错,而是 CentOS 7 在底层网络配置策略上做出了重大调整,本文将为你详细解析这一变化的根本原因,并提供恢复旧版命名习惯的方法。
根本原因:可预测的网络接口名称
在 CentOS 6 及以前,网卡命名通常是固定的(如 eth0、eth1)或基于硬件的(如 em1),这种命名方式在早期硬件较少时是可行的,但随着硬件技术的发展,它暴露出了两个严重的问题:

- 硬件变更导致名称漂移: 如果两块网卡被插入不同的 PCI 插槽,它们的名字可能会在
eth0和eth1之间互换,导致脚本和配置文件失效。 - 无法反映物理拓扑: 旧命名方式无法区分网卡是插在主板上的,还是插在 PCI 扩展卡上的。
为了解决这些问题,Red Hat 在推出 RHEL 7(CentOS 7 基于 RHEL 7)时,引入了 “可预测的网络接口名称” 机制,这种机制通过读取系统的硬件信息(如 PCI 总线、主板插槽、MAC 地址等)来生成一个固定且具有描述性的名字。
新版命名规则详解
在 CentOS 7 中,默认的网卡命名规则通常遵循以下格式:
- en:表示以太网接口。
- wl:表示无线局域网接口。
- ww:表示无线广域网接口。
后面的字符组合则代表了硬件的拓扑结构:
- p:PCI 总线号。
- s:插槽号。
- x:网络接口序号(数字)。
举例说明:
ens33:表示这是连接在 PCI 总线 0、插槽 33 上的以太网接口。enp0s3:表示这是连接在 PCI 总线 0、插槽 3 上的以太网接口。ens18f0:表示这是连接在 PCI 总线 1、插槽 18、函数 0 上的以太网接口。
这种命名方式虽然看起来长且复杂,但它能确保即使你更改了机箱内网卡的物理位置,只要总线号不变,名字就不会变,极大地提高了网络配置的稳定性。
如何恢复为 eth0?
虽然新命名方式更科学,但对于习惯了旧习惯的用户来说,修改配置文件会比较麻烦,如果你希望将 CentOS 7 的网卡名恢复为传统的 eth0,可以通过修改内核启动参数来实现。
请按照以下步骤操作:
编辑 GRUB 配置文件
使用 vi 或其他编辑器打开 /etc/default/grub 文件:
vi /etc/default/grub
修改 GRUB_CMDLINE_LINUX 参数
找到 GRUB_CMDLINE_LINUX 这一行,在引号内添加 net.ifnames=0 biosdevname=0 参数,修改后的内容应类似如下:
GR

