Linux系统
Linux物理层
LSI Raid 阵列日常操作
MegaCLI基本使用指南
重要参数含义说明
Raid的增删改
Linux系统层
Linux 系统启动过程流程
timedatectl命令时间时区操作
sar命令用法
Linux 性能调优工具9张图
Linux 特殊权限说明
Linux系统三级等保整改脚本
CentOS 7 停止维护(EOL)后的仓库变动
Linux误删紧急救援
Linux下高效安全地批量删除文件的方法与实践
Linux网卡重命名实践指南
Linux查看主板内存槽与内存信息
安装麒麟Kylin-v10 Arm64版本到阿里云
CentOS7 多网卡单网关利用策略路由实现源进源出
初始化Linux数据盘(parted)
解决CentOS7下yum命令的异常
EXSI虚机mount出现‘unknown filesystem type 'LVM2_member'’
Linux虚机网卡单队列导致压测CPU无法满载的问题
Linux网络性能优化建议
Linux 修改系统语言环境
LInux文件系统中的默认保留空间 Ext4 vs. XFS
Linux CPU占用率原理与精确度分析
中标麒麟安装Nvidia显卡驱动
Linux主机双网卡同网段同网关配置
Linux 服务层
编译Expat 2.6.2的rpm包并升级
Linux主机挂载共享samba出现普通用户没有写权限的问题
编译OpenSSH 9.3p1的rpm包并升级
CentOS 7.x通过rpm升级OpenSSH到 8.5p1版本
Linux日志切割Logrotate原理和配置详解
systemd下配置sshd监听端口
编译NTP 4.2.8p17的rpm包并升级
编译OpenSSL 1.1.1w的rpm包并升级
linux命令集
磁盘工具集
Linux du 命令
fpsync数据迁移工具
字符处理集
Linux sed 命令
Linux命令输出重定向到变量
使用 paste 合并文件内容
常用调试指令集
编译cmake 3.5.2版本
网络工具集
MTR探测主机间丢包
Linux性能测试
甲骨文主机测试
本文档使用 MrDoc 发布
-
+
首页
Linux网卡重命名实践指南
## 一、为何修改网卡名称 在早期 Linux 发行版(如 RHEL 6、CentOS 6)中,系统默认采用传统的网卡命名方式: ```text eth0、eth1、eth2 … ``` 这种命名方式简洁直观,便于理解和维护。 自 RHEL 7 / CentOS 7 起(包括银河麒麟 V10、UOS 等国产发行版),Linux 引入了**一致性网络设备命名机制(Predictable Network Interface Names)**,网卡名称由系统自动根据硬件拓扑生成,例如: ```text ens33 eno1 enp2s0 enp0s31f6 wlx7cdd90112ef0 ``` 该机制在硬件可识别性方面更为精确,但在实际运维与自动化场景中,逐渐暴露出一系列问题。 ### 常见运维痛点 | 问题类型 | 具体表现 | | ------- | ------------------------ | | 命名难以理解 | enp2s0f0、ens5f1 等名称不具备语义 | | 脚本兼容性差 | 大量历史脚本、自动化工具默认使用 eth0 | | 多网卡角色不清 | 无法快速区分公网、内网、管理网口 | | 配置复用困难 | 运维文档示例无法直接复用 | | 故障排查效率低 | 需要频繁通过 MAC 地址反查接口 | --- ## 二、重命名语义目标 通过主动控制网卡命名,可以实现以下目标: * 明确接口角色(如 `wan0`、`lan0`、`mgmt0`) * 保持历史脚本、Ansible Playbook 的兼容性 * 提升系统可读性与运维效率 * 降低多网卡环境下的配置和排错成本 示例目标命名方式: ```text eth0 wan0 lan0 mgmt0 dmz1 ``` --- ## 三、Linux 网卡命名机制解析 ### 1. 命名决策链路 现代 Linux 系统中,网卡命名主要由以下组件共同决定: * **systemd** * **udev 规则** * **内核启动参数** 默认命名规则文件位于: ```text /lib/udev/rules.d/80-net-setup-link.rules ``` ### 2. 常见预测式命名类型 | 命名方式 | 示例 | 含义说明 | | ------------- | --------------- | ---------- | | onboard | eno1 | 主板直连网卡 | | slot index | ens1 | PCI 插槽顺序 | | physical path | enp3s0 | 总线/插槽位置 | | MAC 派生 | wlx7cdd90112ef0 | USB / 无线网卡 | | 传统命名 | eth0 | 默认已禁用 | --- ## 四、改名方法详解 (以银河麒麟 V10 SP3 为例) ### 1) udev 规则永久绑定(推荐) 通过 udev 规则永久绑定 MAC 与名称 **适用场景**: * 已上线系统 * 多网卡服务器 * 生产环境 #### 操作步骤 1. 查看当前网卡名称: ```bash ip link show ```  2. 获取网卡 MAC 地址: ```bash ip link show ens33 | grep ether ```  3. 创建 udev 规则文件: ```bash vim /etc/udev/rules.d/70-net-names.rules ```  4. 添加规则内容: ```text SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:50:56:ab:cd:ef", NAME="eth0" ``` 5. 重新生成 initramfs(部分系统可选): ```bash dracut -f ``` 6. 重新加载规则并重启: ```bash udevadm control --reload udevadm trigger reboot ``` 7. 验证结果: ```bash ip a ``` --- ### 2) 内核禁用预测命名 通过内核参数禁用预测式命名(不推荐用于已部署系统) **适用场景**: * ISO 安装前 * 裸机初始化 * 统一回退至 ethX 风格 **操作步骤** 1. 编辑 GRUB 配置: ```bash vim /etc/default/grub ``` 2. 添加内核参数: ```text GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" ``` 3. 生成 GRUB 配置: ```bash # BIOS grub2-mkconfig -o /boot/grub2/grub.cfg # UEFI(银河麒麟) grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg ``` 4. 重启系统 ⚠ **注意**:该方式会影响所有网卡命名,不建议在已上线系统中使用。 --- ## 五、案例-麒麟V10多网卡改名 **场景说明** | 原名称 | 接口用途 | 目标名称 | | ----- | ---- | ----- | | ens33 | 公网 | wan0 | | ens36 | 内网 | lan0 | | ens39 | 管理 | mgmt0 | **操作步骤** 1. 获取 MAC 地址: ```bash ip link show | grep ether ``` 2. 编写 udev 规则: ```bash vim /etc/udev/rules.d/70-net-names.rules ``` ```text 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" ``` 3. 同步修改网络配置文件: ```bash mv ifcfg-ens33 ifcfg-wan0 mv ifcfg-ens36 ifcfg-lan0 mv ifcfg-ens39 ifcfg-mgmt0 ``` 并确保每个文件中: ```text DEVICE=对应的新名称 ``` 4. 重启并验证: ```bash ip a ``` --- ## 六、注意事项与常见问题排查 | 问题 | 说明 | | ------------------ | ------------------------ | | 系统启动后无网络 | ifcfg 文件名与 DEVICE 不一致 | | 网卡“消失” | MAC 地址错误或 udev 规则未生效 | | NetworkManager 无设备 | udev 尚未完成加载 | | 规则无效 | 文件路径或语法错误 | | systemd 忽略规则 | 确保规则优先级高于默认规则 | | nmcli 连接名未变 | 需使用 `nmcli con mod` 手动调整 | --- ## 七、结语:命名是运维工程中的基础设计 网卡是服务器对外通信的生命线,而命名是运维工程师与系统之间的约定语言。 * 一个清晰的命名体系,可以显著降低运维复杂度 * 一个可控的命名策略,是自动化与规模化运维的基础 **在系统部署之初即明确网卡命名规范,远比事后通过 MAC 地址排障更具工程价值。**
Nathan
2026年1月4日 09:07
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文件
Docx文件
分享
链接
类型
密码
更新密码