Linux网络接口重命名以“稳定、可预测、可追溯”为目标,通过Consistent命名规范(如eno2、ens33、enp4s0、enxMAC)替代易漂移的eth0;支持禁用新命名(net.ifnames=0)或按MAC/PCI位置精准绑定自定义名。

Linux系统网络接口名称重命名不是随意改名,而是围绕“稳定、可预测、可追溯”三个目标展开的。核心在于避免传统eth0类命名在硬件变动时发生漂移,同时提供多种可控路径实现自定义——既支持全局回退到旧命名,也支持按MAC地址或PCI位置精准绑定新名称。
Consistent命名规范(Predictable Network Interface Names)
该规范由systemd/udev在v197版本起默认启用,依据设备固有属性生成固定名称,优先级从高到低为:自定义udev规则 → 板载网卡(enoX)→ 热插拔槽位(ensX)→ PCI总线位置(enpBsS)→ MAC地址哈希(enxMAC)。名称结构统一以类型前缀开头:
- en:Ethernet(以太网);wl:WLAN;ww:WWAN
-
o2:板载第2个网口(如
eno2) -
s3:热插拔插槽编号3(如
ens33) -
p4s0:PCI总线4、插槽0(如
enp4s0) -
x001122334455:MAC地址小写无冒号格式(如
enx001122334455)
禁用Consistent命名,恢复eth0风格
适用于老旧环境或简化管理场景,通过内核参数强制关闭新命名逻辑:
- 编辑
/etc/default/grub,在GRUB_CMDLINE_LINUX中添加:net.ifnames=0 biosdevname=0 - 执行
grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS)或update-grub(Debian/Ubuntu) - 重启后所有以太网接口将按探测顺序命名为
eth0、eth1等
按硬件特征精准重命名(推荐)
比全局禁用更灵活,适合多网卡服务器或虚拟化环境,关键步骤如下:
- 查目标网卡MAC:
ip link show ens33 | grep ether | awk '{print $2}' - 创建udev规则文件:
/etc/udev/rules.d/70-persistent-net.rules - 写入规则(一行,不换行):
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0" - 同步更新网络配置文件:
重命名/etc/sysconfig/network-scripts/ifcfg-ens33为ifcfg-eth0,并修改其中DEVICE和NAME字段为eth0 - 重启或运行
udevadm control --reload-rules && udevadm trigger生效
验证与调试要点
重命名后务必确认三处一致:
- 接口实际名称:
ip link show输出的第一列 - NetworkManager连接名:
nmcli connection show中显示的连接标识 - 配置文件名及内容:
/etc/sysconfig/network-scripts/ifcfg-*文件名与内部DEVICE值需严格匹配 - 若使用NetworkManager,还需执行
nmcli connection reload使新配置被识别










