linux 网卡名为什么从eth0变为诸如ens33命名

2023/02/22 daily, QA 共 1115 字,约 4 分钟

概述

在早期的Linux系统中,网卡命名是通过udev(一个动态设备管理器)和内核的net kernel subsystem(网络内核子系统)自动分配的,命名规则是按照物理设备的顺序来命名的,比如eth0、eth1、eth2等。这种命名方式会出现问题,例如在插拔网卡或者系统升级后,顺序可能会改变,导致网卡的命名混乱,从而影响网络配置。

为了解决这个问题,自Kernel 2.6.32版本开始,Linux内核引入了一种新的网络接口命名方案,即Consistent Network Device Naming(CNDA,一致性网络设备命名)。这种命名方案基于设备的物理位置和MAC地址,通过识别网卡所在的总线、插槽位置、端口等信息来为其分配一个唯一的名字。

在CNDA中,网卡的名字由三个部分组成:

前缀:网络接口类型的缩写,例如en表示以太网、wl表示无线局域网等。

中缀:网卡所在的总线和插槽位置,例如pci0000:00/0000:00:1c.2/0000:02:00.0表示在PCI总线上的第2个设备、第1个PCIe桥和第0个PCIe设备上。

后缀:网卡的端口名字,例如p1p1表示第一个端口。

因此,一个网卡的命名可能是enp2s0、eno1、ens33等。

总之,CNDA采用了一种更加可靠和可预测的命名方式,避免了网卡命名混乱的问题,提高了系统的稳定性和可靠性。

示例

ens33

这个命名样例表示的是一个以太网网卡,它连接到了第33个接口。其中,en表示以太网,s表示该设备连接到PCI Express总线上,33表示该设备连接到PCI Express总线上的第33个端口。

enp0s3

这个命名样例表示的是一个以太网网卡,它所在的总线位置是PCI 0000:00:03.0,它连接到了这个设备的第3个端口。其中,en表示以太网,p0表示该设备连接到PCI 0000:00:03.0这个插槽,s3表示该设备连接到该插槽上的第3个端口。

enp2s0f0 这个命名样例表示的是一个以太网网卡,它所在的总线位置是PCI 0000:02:00.0,它连接到了该设备的第0个端口的第0个功能。其中,en表示以太网,p2表示该设备连接到PCI 0000:02:00.0这个插槽,s0表示该设备连接到该插槽上的第0个端口,f0表示该设备连接到该端口的第0个功能。

将命名还原为eth0

修改配置文件/etc/default/gruboffsetof

添加配置信息如下

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" 

更新GRUB

update-grub
grub2-mkconfig -o /boot/grub2/grub.cfg

重启系统

reboot

文档信息

Search

    Table of Contents