Linux网络接口重命名需协同处理内核参数、udev规则和网络配置三方面:先禁用可预测命名(net.ifnames=0 biosdevname=0),再通过udev绑定MAC与自定义名,最后同步更新网络配置文件。

Linux 网络接口重命名不是简单改个配置文件名就能生效的操作。CentOS 7 及以后版本默认启用可预测网络接口命名(Predictable Network Interface Names),内核在启动阶段就按硬件拓扑生成 ens33、enp0s3 等名称,完全绕过 ifcfg-* 文件里的 DEVICE 设置。要真正改成自定义格式(如 eth0、mgmt0、lan1、bond-prod),必须从内核参数、udev 规则、网络配置三方面协同处理。
禁用可预测命名机制(关键前提)
这是所有后续操作生效的基础。不加这一步,其他修改全是徒劳。
- 编辑 /etc/default/grub,在
GRUB_CMDLINE_LINUX行末尾追加:net.ifnames=0 biosdevname=0 - 保存后执行命令重建 GRUB 配置:
BIOS 系统:grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI 系统:grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg(路径依发行版略有差异) - 重启前可验证参数是否写入:
cat /proc/cmdline | grep -E "net\.ifnames|biosdevname",应看到两个参数
通过 udev 规则绑定 MAC 地址与自定义名(推荐方式)
适合多网卡、需精确控制每张卡命名的场景,比全局禁用更灵活、更可靠。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 查目标网卡 MAC 地址:
ip link show ens33 | awk '/ether/ {print $2}' - 在 /etc/udev/rules.d/ 下新建规则文件,例如
10-custom-net.rules:SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="mgmt0" - 注意:NAME 是最终接口名,不能含下划线以外的特殊字符;规则文件名建议以数字开头(如 10-),确保优先级高于系统默认规则
- 加载新规则:
udevadm control --reload-rules && udevadm trigger --subsystem-match=net
同步更新网络配置文件
udev 规则生效后,系统会创建对应名称的接口,但 network 或 NetworkManager 服务仍需匹配配置。
- 重命名配置文件:
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-mgmt0 - 编辑该文件,确保以下两行一致:
DEVICE="mgmt0"NAME="mgmt0" - 若使用 NetworkManager,还需检查
nmcli connection show,必要时用nmcli connection modify "System ens33" connection.id mgmt0 connection.interface-name mgmt0同步
临时重命名(仅当前会话有效)
适用于调试或快速验证,无需重启,但重启即失效。
- 先关闭接口:
ip link set ens33 down - 执行重命名:
ip link set ens33 name mgmt0 - 再启用:
ip link set mgmt0 up - 注意:此操作要求接口未被任何服务(如 NetworkManager)占用,否则可能失败或被自动还原

















