——让网卡名顺手好记,是你掌控服务器命脉的第一步!
一、背景:为什么要修改网卡名称?
在旧版 Linux(如 RHEL6、CentOS6)时代,网卡名称默认为:
eth0、eth1、eth2……
但在新版本 Linux(RHEL7+/CentOS7+/麒麟V10/UOS)中,引入了“一致性网络设备命名(Predictable Network Interface Names)”机制,导致网卡名字变成了:
ens33、eno1、enp2s0、enp0s31f6、wlx7cdd……
新命名方式虽然系统更精确,但运维中问题重重:
二、目标:把 ensXX
改成你喜欢的,比如 eth0
、mgmt0
、dmz1
这样可以:
一眼看懂谁是公网/内网/管理口
自动化脚本/Ansible 无需改动
提升可维护性、故障处理效率
三、网卡命名机制:从 eth0 到 ens33 是如何发生的?
现代 Linux 使用 udev 规则 和 systemd 联合决定网卡名:
默认规则来源:
/lib/udev/rules.d/80-net-setup-link.rules
常见命名方式:
Linux 从 systemd v197 起启用“预测式命名”,依据如下规则:
四、修改方法大全(适配银河麒麟 V10 SP3)
方法一:使用 udev 规则文件,永久改名
步骤如下:
查看当前网卡信息:
ip link show
输出示例:
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
获取 MAC 地址:
ip link show ens33 | grep ether
假设 MAC 地址为:00:50:56:ab:cd:ef
创建 udev 规则文件:
vim /etc/udev/rules.d/70-net-names.rules
添加内容:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:50:56:ab:cd:ef", NAME="eth0"
更新 initramfs(有时可跳过):
dracut -f
重启系统或触发规则:
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(麒麟系统)
这个方法会禁用所有预测式命名,让系统回归
eth0
、eth1
命名模式。
⚠️ 适用于全新部署,不建议已上线系统使用此方式。
五、实战案例:银河麒麟 V10 SP3 多网卡服务器改名实战
场景:
一台麒麟SP3服务器有如下网卡:
ens33:公网接口 → 需要改名为
wan0
ens36:内网接口 → 改为
lan0
ens39:管理接口 → 改为
mgmt0
操作步骤:
获取各网卡的 MAC 地址:
ip link show | grep ether
编写 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"
修改原来的配置文件名称和内容:
mv ifcfg-ens33 ifcfg-wan0
mv ifcfg-ens36 ifcfg-lan0
mv ifcfg-ens39 ifcfg-mgmt0
# 并在每个文件中改 DEVICE=XXX 的字段
重启系统并验证:
ip a
六、注意事项与常见坑
七、结语:命名是你和系统之间的语言
网卡是服务器的生命线,命名是运维与系统沟通的语言。
取一个好名字,远比出问题后四处查 MAC 地址更重要。