目录
[1. 为什么需要一致的网络接口命名?](#1. 为什么需要一致的网络接口命名?)
[2. UDEV命名处理流程详解](#2. UDEV命名处理流程详解)
[1. /usr/lib/udev/rules.d/60-net.rules](#1. /usr/lib/udev/rules.d/60-net.rules)
[2. /usr/lib/udev/rules.d/71-biosdevname.rules(Dell专用)](#2. /usr/lib/udev/rules.d/71-biosdevname.rules(Dell专用))
[3. /usr/lib/udev/rules.d/75-net-description.rules](#3. /usr/lib/udev/rules.d/75-net-description.rules)
[4. /usr/lib/udev/rules.d/80-net-setup-link.rules](#4. /usr/lib/udev/rules.d/80-net-setup-link.rules)
[3. 默认命名策略解析](#3. 默认命名策略解析)
[4. 实战案例:切换内核参数统一命名方案](#4. 实战案例:切换内核参数统一命名方案)
[5. 自定义网络接口名称的三种方法](#5. 自定义网络接口名称的三种方法)
[方法一:使用 UDEV 规则实现网卡重命名(推荐用于复杂场景)](#方法一:使用 UDEV 规则实现网卡重命名(推荐用于复杂场景))
[1. 查看当前网卡信息](#1. 查看当前网卡信息)
[2. 检查 NetworkManager 连接状态](#2. 检查 NetworkManager 连接状态)
[3. 为 ens12 配置静态 IP 并激活](#3. 为 ens12 配置静态 IP 并激活)
[4. 创建 UDEV 规则实现重命名](#4. 创建 UDEV 规则实现重命名)
[5. 更新 NetworkManager 配置](#5. 更新 NetworkManager 配置)
[6. 重启系统或重载 UDEV 规则](#6. 重启系统或重载 UDEV 规则)
[方法二:使用systemd link文件(推荐用于简单重命名)](#方法二:使用systemd link文件(推荐用于简单重命名))
[1. 创建systemd network目录](#1. 创建systemd network目录)
[2. 创建link文件](#2. 创建link文件)
[3. 更新 NetworkManager 配置](#3. 更新 NetworkManager 配置)
[4. 重启服务器,查看网卡名称是否更改](#4. 重启服务器,查看网卡名称是否更改)
[1. 确认网络接口信息](#1. 确认网络接口信息)
[2. 创建 Systemd Network 目录(如不存在)](#2. 创建 Systemd Network 目录(如不存在))
[3. 创建 Link 配置文件](#3. 创建 Link 配置文件)
[4. 重新生成 initrd RAM 磁盘镜像(可选)](#4. 重新生成 initrd RAM 磁盘镜像(可选))
[5. 重启系统使配置生效](#5. 重启系统使配置生效)
[6. 验证配置结果](#6. 验证配置结果)
1. 为什么需要一致的网络接口命名?
传统命名的问题
- 随机性:传统的eth0、eth1命名依赖内核发现设备的顺序,可能导致重启后接口名称变化
- 管理困难:在多网卡服务器中,无法从名称直观识别物理接口位置
解决方案
通过udev设备管理器实现可预测的接口命名,名称基于物理属性生成:
- 主板内置网卡 → eno1
- PCIe插槽网卡 → ens1
- 物理位置路径 → enp1s0
- MAC地址 → enx525400d5e0fb
2. UDEV命名处理流程详解
四个关键规则文件(按顺序执行)
1. /usr/lib/udev/rules.d/60-net.rules
- 条件:仅当安装initscripts-rename-device包时生效
- 功能 :根据
/etc/sysconfig/network-scripts/ifcfg-*中的HWADDR匹配MAC地址 - 注意:如果使用NetworkManager的keyfile格式,此步被跳过
2. /usr/lib/udev/rules.d/71-biosdevname.rules(Dell专用)
- 条件:仅Dell系统且安装biosdevname软件包
- 功能:应用Dell特有的命名策略
3. /usr/lib/udev/rules.d/75-net-description.rules
- 功能:检查网络接口并设置udev内部属性变量
- 作用:为下一步命名提供属性信息
4. /usr/lib/udev/rules.d/80-net-setup-link.rules
- 核心:调用net_setup_link内置功能
- 依据 :
/usr/lib/systemd/network/99-default.link中的NamePolicy策略
3. 默认命名策略解析
NamePolicy的默认执行顺序:
keep → kernel → database → onboard → slot → path
各策略详解
| 策略 | 描述 | 示例名称 |
|---|---|---|
| keep | 保留已有名称(用户空间分配) | - |
| kernel | 使用内核提供的可预测名称 | lo |
| database | 基于udev硬件数据库映射 | idrac |
| onboard | 板载设备固件索引号 | eno1 |
| slot | PCIe热插拔插槽索引号 | ens1 |
| path | 硬件连接器物理位置 | enp1s0 |
| mac | MAC地址(默认未启用) | enx525400d5e0fb |
4. 实战案例:切换内核参数统一命名方案
场景描述
在多台不同小版本AlmaLinux服务器上,为避免因版本差异导致的网卡命名不一致,我们将系统网卡命名方案统一切换到rhel-9.4标准。
重要说明:
切换命名方案的主要作用:影响新添加的网络接口命名,为系统提供更一致的设备识别方式,通常不会改变现有网卡的名称
适用场景:
-
准备添加新网卡时希望使用统一的命名规则
-
在不同版本系统间保持命名一致性
-
解决因版本差异导致的命名混乱问题
注意:本操作主要是为未来添加硬件做准备,现有网卡名称可能保持不变。
操作步骤
步骤1:检查当前接口状态
# 查看当前网络接口
ip link show
## 示例输出:
# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
# link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
# 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
# link/ether 00:0c:29:51:7b:0f brd ff:ff:ff:ff:ff:ff
步骤2:查看当前命名方案
# 检查当前使用的命名方案
udevadm info --query=property --property=ID_NET_NAMING_SCHEME /sys/class/net/ens160
# 输出:ID_NET_NAMING_SCHEME=rhel-9.0
步骤3:修改内核参数
# 添加命名方案参数到所有内核
grubby --update-kernel=ALL --args="net.naming-scheme=rhel-9.4"
步骤4:重启系统
reboot
步骤5:验证命名方案变更
# 检查命名方案是否已更新
udevadm info --query=property --property=ID_NET_NAMING_SCHEME /sys/class/net/ens160
# 输出:ID_NET_NAMING_SCHEME=rhel-9.4
**注意:** 此时ens160名称通常保持不变,但系统已使用新的命名方案。
5. 自定义网络接口名称的三种方法
## 重要注意事项
### 操作前备份
```bash
# 备份网络配置
cp -r /etc/NetworkManager/system-connections/ /root/nm-backup/
cp /etc/udev/rules.d/70-* /root/backup/ 2>/dev/null || true
风险提示
- 远程操作风险:重命名网卡可能导致SSH连接中断,建议在本地控制台操作
- 测试环境验证:在生产环境实施前,请在测试环境充分验证
- 回滚方案:提前准备好应急回滚方案
故障排查
如果配置不生效,按以下步骤排查:
- 检查文件权限:
ls -l /etc/systemd/network/70-*.link - 查看系统日志:
journalctl -u systemd-udevd -f - 验证语法:
systemd-analyze cat-config systemd/network/70-wan0.link
方法一:使用 UDEV 规则实现网卡重命名(推荐用于复杂场景)
本次操作基于新增的网卡 ens224。在添加新网卡后,需要先完成网络连接配置,再进行重命名操作。
1. 查看当前网卡信息
首先确认系统中已识别的网络设备:
[root@cluster-node-1 ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:51:7b:0f brd ff:ff:ff:ff:ff:ff
altname enp3s0
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:51:7b:19 brd ff:ff:ff:ff:ff:ff
2. 检查 NetworkManager 连接状态
查看现有连接配置,确认新网卡 ens224 是否激活:
[root@cluster-node-1 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens160 c02e537d-66f1-325a-912f-524b09b42b38 ethernet ens160
lo e644441e-53db-4459-9958-b418c87916e0 loopback lo
[root@cluster-node-1 ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
lo loopback connected (externally) lo
ens224 ethernet disconnected --
3. 为 ens12 配置静态 IP 并激活
为新增网卡创建静态 IP 连接配置:
[root@localhost ~]# nmcli connection add type ethernet \
ifname ens224 \
con-name ens224 \
ipv4.method manual \
ipv4.addresses 192.168.139.66/24 \
ipv4.gateway 192.168.139.2 \
ipv4.dns "8.8.8.8"
# 激活连接
[root@localhost ~]# nmcli connection up ens224
#查看网卡是否配置成功
[root@cluster-node-1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:51:7b:0f brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.139.111/24 brd 192.168.139.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe51:7b0f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:51:7b:19 brd ff:ff:ff:ff:ff:ff
altname enp19s0
inet 192.168.139.66/24 brd 192.168.139.255 scope global noprefixroute ens224
valid_lft forever preferred_lft forever
inet6 fe80::33d9:8c63:ae6:7278/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@cluster-node-1 ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
ens224 ethernet connected ens224
lo loopback connected (externally) lo
4. 创建 UDEV 规则实现重命名
通过 MAC 地址将 ens12 永久重命名为 wan0:
# 创建 UDEV 规则文件
cat > /etc/udev/rules.d/70-persistent-net.rules << EOF
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:51:7b:19", ATTR{type}=="1", NAME="wan0"
EOF
注意:
ATTR{address}需替换为ens12的实际 MAC 地址(本例中为00:0c:29:51:7b:19)。- 可通过
cat /sys/class/net/ens12/type确认设备类型(通常为1,表示以太网设备)。
5. 更新 NetworkManager 配置
为避免命名冲突,需调整 NetworkManager 的接口匹配规则:bash复制代码
# 清空原有接口绑定,改为通过 MAC 或新名称匹配
nmcli connection modify ens224 connection.interface-name ""
nmcli connection modify ens224 match.interface-name "wan0 ens224"
6. 重启系统或重载 UDEV 规则
重启系统使规则生效,或执行以下命令立即触发:
udevadm control --reload-rules
udevadm trigger --type=devices --action=add
方法二:使用systemd link文件(推荐用于简单重命名)
和方法一相同在添加新网卡后,需要先完成网络连接配置,再进行重命名操作。
1. 创建systemd network目录
mkdir -p /etc/systemd/network/
2. 创建link文件
cat > /etc/systemd/network/70-wan0.link << EOF
[Match]
MACAddress=00:0c:29:51:7b:19
[Link]
Name=wan0
EOF
3. 更新 NetworkManager 配置
# 清空原有接口绑定,改为通过 MAC 或新名称匹配
nmcli connection modify ens224 connection.interface-name ""
nmcli connection modify ens224 match.interface-name "wan0 ens224"
4. 重启服务器,查看网卡名称是否更改
[root@cluster-node-1 ~]# reboot
[root@cluster-node-1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:51:7b:0f brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.139.111/24 brd 192.168.139.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe51:7b0f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:51:7b:19 brd ff:ff:ff:ff:ff:ff
altname enp19s0
inet 192.168.139.66/32 scope global noprefixroute wan0
valid_lft forever preferred_lft forever
inet6 fe80::ff92:b8bf:1424:5591/64 scope link noprefixroute
valid_lft forever preferred_lft forever
方法三:分配替代名称(不改变主名称)
注意事项
-
命名限制:
- 替代名称必须使用 ASCII 字符
- 名称长度必须小于 128 个字符
-
文件命名规范:
- Link 文件应以数字前缀开头(如 70-)
- 文件名应有描述性(如 altname.link)
- 数字越小,优先级越高
-
网络管理兼容性:
- 此方法与 NetworkManager 兼容
- 替代名称可以像普通接口名称一样在命令中使用
1. 确认网络接口信息
# 查看当前网络接口状态和MAC地址
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:51:7b:0f brd ff:ff:ff:ff:ff:ff
altname enp3s0
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:51:7b:19 brd ff:ff:ff:ff:ff:ff
altname enp19s0
2. 创建 Systemd Network 目录(如不存在)
# 确保目录存在
mkdir -p /etc/systemd/network/
3. 创建 Link 配置文件
# 为 ens224 接口创建替代名称配置
cat > /etc/systemd/network/70-altname.link << EOF
[Match]
MACAddress=00:0c:29:51:7b:19
[Link]
NamePolicy=keep kernel database onboard slot path
AlternativeNamesPolicy=database onboard slot path
MACAddressPolicy=none
AlternativeName=provider
AlternativeName=wan-backup
EOF
配置文件说明:
[Match]部分:通过 MAC 地址匹配目标网络接口[Link]部分:NamePolicy:保持原有命名策略AlternativeNamesPolicy:设置替代名称策略AlternativeName:可以指定多个替代名称(本例中设置了两个:provider 和 wan-backup)
4. 重新生成 initrd RAM 磁盘镜像(可选)
# 如果系统需要从网络设备启动(如 iSCSI),则需要此步骤
dracut -f
注意:对于大多数情况,如果 root 文件系统不在网络设备上,可以跳过此步骤。
5. 重启系统使配置生效
# 重启系统
reboot
6. 验证配置结果
# 重启后检查接口信息
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:51:7b:0f brd ff:ff:ff:ff:ff:ff
altname enp3s0
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:51:7b:19 brd ff:ff:ff:ff:ff:ff
altname enp19s0
altname provider
altname wan-backup
# 使用替代名称查看接口详情
ip address show provider
ip address show wan-backup
# 或者查看特定接口的详细信息
ip link show dev ens224
预期结果:
重启后,ens224 接口应该显示有替代名称:
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:51:7b:19 brd ff:ff:ff:ff:ff:ff
altname enp19s0
altname provider
altname wan-backup