网卡命名规则介绍

CentOS 6 网卡命名规则

CentOS 6 中网卡命名非唯一且固定,会根据根据情况有所改变;
CentOS 6 及其以之前版本,网络接口采取eth0eth1连续序号,会随着网卡增删变化。

CentOS 7/8 网卡命名规则

CentOS 7/8 采用 dmidecode 采集命名方案,以此来得到主板信息,它可以实现网卡名字永久唯一化 (dmidecode 这个命令可以采集有关硬件方面的信息);
CentOS 7 网卡一般从ens33开始,CentOS 8 网卡一般为ens33ens160

在 CENTOS7/8 中
en :表示ethernet 以太网,就是现在使用的局域网;
eno:主板板载网卡,集成设备的设备索引号;
enp:独立网卡,PCI 网卡;
ens:热插拔网卡,usb 之类,扩展槽的索引号;
nnn(数字)表示:MAC 地址+主板信息计算得出唯一的序列;

实例环境介绍

实例操作系统:CentOS Linux release 7.6.1810 (Core)
教程适用范围:CentOS 7.X 系列
当前操作系统共有4块网卡,名称分别为 ens32ens33ens34ens35
现在需要将网卡名称重命名为 eno1eno2ens6f0ens6f1
如下表所示:

状态 网卡1 网卡2 网卡3 网卡4
修改前名称 ens32 ens33 ens34 ens35
修改后名称 eno1 eno2 ens6f0 ens6f1

实例教程

备份网卡配置文件

1
2
3
4
5
6
7
# 创建备份文件夹
mkdir /etc/sysconfig/network-scripts/bak/
# 备份网卡配置文件
cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/bak/ifcfg-ens32.bak
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/bak/ifcfg-ens33.bak
cp /etc/sysconfig/network-scripts/ifcfg-ens34 /etc/sysconfig/network-scripts/bak/ifcfg-ens34.bak
cp /etc/sysconfig/network-scripts/ifcfg-ens35 /etc/sysconfig/network-scripts/bak/ifcfg-ens35.bak

修 改 文 件 先 备 份,养 成 良 好 习 惯 !
Ps:一般情况下,可以直接备份到当前目录下;
但有些特殊情况,如果安装了第三方软件,需要读取修改网卡配置文件,会在/etc/sysconfig/network-scripts/目录下读取以ifcfg-开头的文件,误将备份文件识别为网卡文件;为避免发生意外,所以建议在当前目录下新建bak文件夹,将文件备份到此目录中。

启动 NetworkManager 服务

1
2
# 启动 NetworkManager 服务
systemctl start NetworkManager

RHEL7 上 NetworkManager 服务默认是启用状态,下面的nmcli命令是依赖 NetworkManager 服务的。
如果 NetworkManager 服务不可启用,需用vi命令手动修网卡改配置文件。

添加/修改网卡配置文件的 HWADDR项

1
2
3
4
5
# 此命令是在网卡配置文件中修改"HWADDR=xx:xx"项,如果不存在,则自动添加
nmcli connection modify ens32 802-3-ethernet.mac-address $(cat /sys/class/net/ens32/address)
nmcli connection modify ens33 802-3-ethernet.mac-address $(cat /sys/class/net/ens33/address)
nmcli connection modify ens34 802-3-ethernet.mac-address $(cat /sys/class/net/ens34/address)
nmcli connection modify ens35 802-3-ethernet.mac-address $(cat /sys/class/net/ens35/address)

这里使用命令修改网卡配置文件,便于复制,请注意将 ens32ens33ens34ens35 等网卡名称改为实际的网卡名称;
文件/sys/class/net/ens32/address中记录着ens32网卡的MAC地址,这个文件不需要修改,更改完网卡,重启系统后这个文件(包括路径目录)会自动更新;
如果手动修改,使用命令查看网卡MAC地址cat /sys/class/net/ens32/address
编辑网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens32
HWADDR=xx:xx:xx:xx:xx:xx修改为正确的MAC地址(如果不存在此项则新增一行写入);
然后按Esc键,输入:wq保存退出,重复操作每一个网卡。

修改网卡配置文件的 DEVICE项

1
2
3
4
5
# 此命令是将网卡配置文件中的"DEVICE=ens32"修改为"DEVICE=eno1"
nmcli connection modify ens32 connection.interface-name eno1
nmcli connection modify ens33 connection.interface-name eno2
nmcli connection modify ens34 connection.interface-name ens6f0
nmcli connection modify ens35 connection.interface-name ens6f1

请注意将 ens32ens33ens34ens35 等网卡名称改为实际的网卡名称;
如果手动修改,编辑配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens32
DEVICE=ens32修改为DEVICE=eno1
然后按Esc键,输入:wq保存退出,重复操作每一个网卡;

修改网卡配置文件的 NAME项

1
2
3
4
5
# 此命令是将网卡配置文件中的"NAME=ens32"修改为"NAME=eno1"
nmcli connection modify ens32 connection.id eno1
nmcli connection modify ens33 connection.id eno2
nmcli connection modify ens34 connection.id ens6f0
nmcli connection modify ens35 connection.id ens6f1

请注意将 ens32ens33ens34ens35 等网卡名称改为实际的网卡名称;
如果手动修改,编辑配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens32
NAME=ens32修改为NAME=eno1
然后按Esc键,输入:wq保存退出,重复操作每一个网卡;

修改网卡配置文件名称

1
2
3
4
5
# 修改网卡配置文件名称
mv /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-eno1
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eno2
mv /etc/sysconfig/network-scripts/ifcfg-ens34 /etc/sysconfig/network-scripts/ifcfg-ens6f0
mv /etc/sysconfig/network-scripts/ifcfg-ens35 /etc/sysconfig/network-scripts/ifcfg-ens6f1

请注意将 ens32ens33ens34ens35 等网卡名称改为实际的网卡名称。

修改 grub.cfg 配置文件

备份 grub.cfg 配置文件

1
cp /etc/default/grub /etc/default/grub.bak

修 改 文 件 先 备 份,养 成 良 好 习 惯 !

修改grub.cfg 配置文件

1
2
3
4
5
# 在 GRUB_CMDLINE_LINUX 项的参数中添加 "net.ifnames=0 biosdevname=0" 
sed -i s/'GRUB_CMDLINE_LINUX="'/'GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 '/g /etc/default/grub

# 更新grub配置
grub2-mkconfig -o /boot/grub2/grub.cfg

添加这个参数后,将取消 CentOS 7/8 采用 dmidecode 的采集命名方案;
如果此时重启设备,网卡名称将会采用eth0eth1eth2eth3方式进行命名;
想要实现自定义命名,还需使用下面步骤进行绑定;

添加 udev 规则

1
2
# 编辑udev规则配置文件
vi /etc/udev/rules.d/70-persistent-net.rules

大多数情况该文件是不存在的,直接创建添加内容即可,将下面的内容直接粘贴进去,需修改addressKERNELNAME的值;
使用cat /sys/class/net/ens32/address命令查看各网卡的MAC地址;

1
2
3
4
ACTION=="add",SUBSYSTEM=="net",DRIVERS=="?*",ATTR{type}=="1",ATTR{address}=="00:0c:29:c8:16:37",KERNEL=="ens32",NAME="eno1"
ACTION=="add",SUBSYSTEM=="net",DRIVERS=="?*",ATTR{type}=="1",ATTR{address}=="00:0c:29:c8:16:41",KERNEL=="ens33",NAME="eno2"
ACTION=="add",SUBSYSTEM=="net",DRIVERS=="?*",ATTR{type}=="1",ATTR{address}=="00:0c:29:c8:16:4b",KERNEL=="ens34",NAME="ens6f0"
ACTION=="add",SUBSYSTEM=="net",DRIVERS=="?*",ATTR{type}=="1",ATTR{address}=="00:0c:29:c8:16:55",KERNEL=="ens35",NAME="ens6f1"

重启系统

1
2
# 重启操作系统
reboot

查看网卡信息

1
2
# 查看当前(修改后)的网卡名称、MAC地址等信息
ip address