Administrator
Published on 2025-06-30 / 2 Visits
0
0

【网卡改名指南】从ens33到eth0:彻底掌控网卡命名的技术与实战

——让网卡名顺手好记,是你掌控服务器命脉的第一步!


一、背景:为什么要修改网卡名称?

在旧版 Linux(如 RHEL6、CentOS6)时代,网卡名称默认为:

eth0、eth1、eth2……

但在新版本 Linux(RHEL7+/CentOS7+/麒麟V10/UOS)中,引入了“一致性网络设备命名(Predictable Network Interface Names)”机制,导致网卡名字变成了:

ens33、eno1、enp2s0、enp0s31f6、wlx7cdd……

新命名方式虽然系统更精确,但运维中问题重重:

问题

描述

难记忆

名字如 enp2s0f0ens5f1 不直观、不易区分

脚本兼容问题

老脚本、配置中默认用 eth0,执行失败

部署混乱

多网卡系统中,网卡名难以快速识别角色

抄配置困难

运维文档中 eth0 示例不能直接照搬


二、目标:把 ensXX 改成你喜欢的,比如 eth0mgmt0dmz1

这样可以:

  • 一眼看懂谁是公网/内网/管理口

  • 自动化脚本/Ansible 无需改动

  • 提升可维护性、故障处理效率


三、网卡命名机制:从 eth0 到 ens33 是如何发生的?

现代 Linux 使用 udev 规则systemd 联合决定网卡名:

默认规则来源:

/lib/udev/rules.d/80-net-setup-link.rules

常见命名方式:

Linux 从 systemd v197 起启用“预测式命名”,依据如下规则:

命名来源

示例

含义

onboard

eno1

主板焊接网卡

slot index

ens1

PCI 插槽顺序

physical location

enp3s0

总线/插槽位置

MAC地址

wlx7cdd90112ef0

用于无线/USB设备

传统命名

eth0

已禁用,需手动恢复


四、修改方法大全(适配银河麒麟 V10 SP3)

方法一:使用 udev 规则文件,永久改名

步骤如下:

  1. 查看当前网卡信息:

ip link show

输出示例:

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> ...

  1. 获取 MAC 地址:

ip link show ens33 | grep ether

假设 MAC 地址为:00:50:56:ab:cd:ef

  1. 创建 udev 规则文件:

vim /etc/udev/rules.d/70-net-names.rules

添加内容:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:50:56:ab:cd:ef", NAME="eth0"
  1. 更新 initramfs(有时可跳过):

dracut -f
  1. 重启系统或触发规则:


udevadm control --reload
udevadm trigger
reboot

重启后使用 ip a 查看,eth0 应已替代 ens33


方法二:内核启动参数修改(适合裸机/ISO部署前)

编辑 /etc/default/grub

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

更新 grub:

grub2-mkconfig -o /boot/grub2/grub.cfg         # BIOS
grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg  # UEFI(麒麟系统)

这个方法会禁用所有预测式命名,让系统回归 eth0eth1 命名模式。

⚠️ 适用于全新部署,不建议已上线系统使用此方式。


五、实战案例:银河麒麟 V10 SP3 多网卡服务器改名实战

场景:

一台麒麟SP3服务器有如下网卡:

  • ens33:公网接口 → 需要改名为 wan0

  • ens36:内网接口 → 改为 lan0

  • ens39:管理接口 → 改为 mgmt0

操作步骤:

  1. 获取各网卡的 MAC 地址:

ip link show | grep ether
  1. 编写 udev 规则:

vim /etc/udev/rules.d/70-net-names.rules

内容:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:50:56:aa:11:11", NAME="wan0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:50:56:bb:22:22", NAME="lan0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:50:56:cc:33:33", NAME="mgmt0"
  1. 修改原来的配置文件名称和内容:

mv ifcfg-ens33 ifcfg-wan0
mv ifcfg-ens36 ifcfg-lan0
mv ifcfg-ens39 ifcfg-mgmt0

# 并在每个文件中改 DEVICE=XXX 的字段
  1. 重启系统并验证:

ip a

六、注意事项与常见坑

问题

说明

修改后系统无法启动

原因是启动项中指定的网卡名(如 ifcfg-ens33)不存在,需同时修改配置文件名

修改后网卡丢失

查看 dmesgudevadm monitor 是否加载成功

nmcli 找不到设备

需等 udev 加载后,NetworkManager 才识别新网卡名

udev 文件未生效

文件路径需为 /etc/udev/rules.d/ 且规则需无语法错误

改完名字系统找不到网卡?

确保 udev 规则生效且 MAC 地址正确

配置文件名与 DEVICE 字段不匹配

必须保持一致,否则无法启动

systemd 忽略规则?

确保 70-net-names.rules 规则优先于其他命名规则

nmcli 创建的连接名不变

可用 nmcli con mod <name> connection.interface-name <new> 修正


七、结语:命名是你和系统之间的语言

网卡是服务器的生命线,命名是运维与系统沟通的语言。
取一个好名字,远比出问题后四处查 MAC 地址更重要。



Comment