在CentOS 7系统中,默认采用Predictable Network Names(P predictable names)规则命名网卡,名称通常基于硬件信息生成(如ens33、ens34等),若因业务需求、环境兼容性或个人习惯,需将网卡名称修改为ens32,可通过以下两种方法实现:一是通过GRUB配置改为传统命名(如eth0,再调整为目标名称);二是通过udev规则直接自定义名称为ens32,本文将详细介绍两种操作步骤及注意事项。
背景:CentOS 7网卡命名规则
CentOS 7默认使用net.ifnames=0和biosdevname=0参数控制命名逻辑:
net.ifnames=0:禁用基于硬件拓扑的 predictable names(如ens33);biosdevname=0:禁用基于BIOS/设备的传统命名(如eth0)。
若未修改参数,网卡名称会按ens[XX]格式生成(XX为网卡顺序号),如第一块PCIe网卡可能为ens33,需修改为ens32时,需通过配置固定名称。

方法一:通过GRUB配置改为传统命名(适配eth0,再调整为ens32)
若目标是将网卡名称改为ens32,可先通过GRUB禁用predictable names,生成传统eth0名称,再修改网络配置文件将其重命名为ens32,以下是具体步骤:
步骤1:编辑GRUB配置文件
GRUB是Linux系统的引导加载程序,需通过修改其参数禁用默认网卡命名规则。
执行命令打开GRUB配置文件:
vim /etc/default/grub
找到GRUB_CMDLINE_LINUX=这一行,在参数中添加net.ifnames=0 biosdevname=0,修改后如下:
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
说明:
net.ifnames=0禁用ensXX命名,biosdevname=0禁用ethX以外的传统命名,两者结合后网卡名称将变为eth0(第一块网卡)。
步骤2:更新GRUB配置
修改GRUB文件后,需执行以下命令更新配置,使其生效:
grub2-mkconfig -o /boot/grub2/grub.cfg
执行后会看到类似“Generating grub configuration file ...”的提示,表示更新成功。
步骤3:修改网络配置文件
CentOS 7的网络配置文件位于/etc/sysconfig/network-scripts/,文件名格式为ifcfg-网卡名称,假设当前网卡名称为ens33(需先通过ip a确认),需将其改为ifcfg-ens32,并修改配置文件内的NAME和DEVICE字段。
-
查看当前网卡名称及MAC地址:
ip a
示例输出(假设第一块网卡为
ens33):2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global ens33 inet6 fe80::20c:29ff:xxxx:xxxx/64 scope link valid_lft forever preferred_lft forever -
复制原网络配置文件并重命名:
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens32
-
编辑新配置文件
ifcfg-ens32,修改NAME和DEVICE字段为ens32:vim /etc/sysconfig/network-scripts/ifcfg-ens32
修改关键字段(以DHCP为例):
TYPE=Ethernet BOOTPROTO=dhcp NAME=ens32 # 修改为自定义名称 DEVICE=ens32 # 修改为自定义名称 ONBOOT=yes # 开机启用网卡 HWADDR=00:0c:29:xx:xx:xx # 保持原MAC地址(与ip a看到的一致) DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy
注意:
HWADDR必须与网卡的MAC地址一致,否则可能导致网卡无法启动。
步骤4:重启系统使配置生效
修改GRUB和网络配置后,需重启系统才能使新的网卡名称生效:
reboot
步骤5:验证网卡名称
重启后,通过以下命令确认网卡名称是否已修改为ens32:
ip a
若看到ens32且网络正常(如获取到IP地址),则表示修改成功。
方法二:通过udev规则直接自定义名称为ens32
若不想修改GRUB配置(或需保留predictable names规则),可通过udev规则直接将网卡名称固定为ens32,此方法基于网卡的MAC地址绑定名称,重启后不会变化。
步骤1:获取网卡MAC地址
执行ip a命令查看当前网卡名称及MAC地址(假设目标网卡为ens33,MAC地址为00:0c:29:xx:xx:xx):
ip a | grep ens33
输出示例:
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
步骤2:创建udev规则文件
udev规则文件需放在/etc/udev/rules.d/目录下,文件名以.rules建议使用数字前缀,如10-network.rules,确保优先级较高),执行命令创建规则文件:
vim /etc/udev/rules.d/10-network.rules
在文件中添加以下内容(将MAC地址替换为实际值):
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:xx:xx:xx", NAME="ens32"
说明:
SUBSYSTEM=="net":匹配网络设备;ACTION=="add":在设备添加时触发规则;ATTR{address}=="MAC地址":根据MAC地址匹配网卡;NAME="ens32":将网卡名称固定为ens32。
步骤3:更新udev规则并重启
保存udev规则文件后,执行以下命令更新规则并重启系统:
udevadm control --reload-rules # 重新加载udev规则 udevadm trigger # 触发udev规则 reboot # 重启系统使规则生效
步骤4:验证网卡名称
重启后,通过ip a命令确认网卡名称是否已修改为ens32:
ip a | grep ens32
若输出显示ens32且MAC地址与原网卡一致,则表示修改成功。
注意事项
-
备份重要配置文件
修改/etc/default/grub或网络配置文件前,建议先备份原文件,避免配置错误导致系统无法启动:cp /etc/default/grub /etc/default/grub.bak cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
-
确保MAC地址正确
无论是修改网络配置文件还是udev规则,HWADDR或ATTR{address}必须与网卡的MAC地址一致,否则可能导致网卡无法识别或启动失败。 -
多网卡环境注意区分
若服务器有多块网卡,需通过ip a确认目标网卡的名称和MAC地址,避免误修改其他网卡。 -
测试网络连通性
修改完成后,务必测试网络是否正常(如ping www.baidu.com),确保网卡配置未影响网络通信。
- 方法一(GRUB+网络配置):适用于习惯传统命名(如
eth0)或需批量修改多台服务器网卡名称的场景,需修改GRUB配置,重启后生效。 - 方法二(udev规则):适用于需保留predictable names规则或仅修改单块网卡名称的场景,基于MAC地址绑定,重启后名称固定。
根据实际需求选择合适的方法,若需将网卡名称固定为ens32,推荐使用方法二(udev规则),其对系统改动较小,且不影响其他网卡的命名规则。


