从centos 7 起,可预见的网卡命名规则取代了传统的命名规则。这一规则,接口名称被自动基于固件,拓扑结构和位置来确定。在centos 7上,即使添加或移除网络设备,接口名称仍然保持固定,无需生新枚举,和坏掉的硬件可以无缝替换。


首先来了解一下以下内容:   

(1)网卡命名机制

    systemd对网络设备的命名方式:

1.如果firmware或bios为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名;    比如:en01

2.如果firmware或bios为pci-e扩展槽所提供的索引信息可用,且可预测则根据此索引进行命名;       比如:ens1

3.如果硬件接口的特理位置信息可用,则根据此信息进行命名,比如enp2s0

4.如果用户显式启动,则可根据mac地址进行命名,比如enx2387a1dc56

5.以上都不可时,则使用传统命名机制

注意:以上命名机制中,有的需要biosdevname程序的参与;



(2)名称组成格式

en:ethernet

wl: wlan

ww: wwan

名称类型:

o<index>:集成设备的设备索引号

s<slot>:扩展槽的索引号

x<mac>:基于mac地址的命名

p<bus>s<slot>:enp2s1


(3)网卡设备的命名过程:

第一步:

udev,辅助工作程序/lib/udev/rename_device,/usr/lib/udev/rules.d/60-net.rules

第二步:

biosdevname 根据/usr/lib/udev/rules.d/71-biosdevname.rules

第三步:

通过检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description


回归传统命名方式:

    可以在系统安装启动时传递内核参数"net.ifnames=0 biosdevname=0".

或者

    vim /etc/default/grub 加入"net.ifnames=0 biosdevname=0" 到GRUB_CMDLINE_LINUX

    保存退出

    运行命令grub2-mkconfig-o /boot/grub2/grub.cfg来重新生成grub配置并更新内核参数.

    重启系统

    ifconfig 已经能看到网卡名变成传统名称eth0了。

    修改配置文件

    vim /etc/syconfig/network-scripts/ifcfg-en33...

    NAME\DEVICE 都改成eth0

    保存退出

    mv ifcfg-ens33 ifcfg-eth0