Linux网卡命名

Linux 网卡命名

网卡编号

最近注意起了linux中网卡的命名有点意思,所以搜集了一下资料,记录一下也供同样困惑的朋友参考。说到网卡那么网络设备肯定是首屈一指的,如下面的两台交换机千兆和万兆的,其命名也是非常的清楚明了,GE代表GigabitEthernet,XGE代表Ten-GigabitEthernet,编号命名也是按照-设备编号/板卡号/端口号命名的。

到了Linux这边网卡编号是这样的:

还有这样的:

其实这两台电脑是一样的型号配置也几乎一样,但网卡的名非常不一样,这明显是系统的命名策略不一样。其实后面这张图片的命名方式已经被废除或者说不推荐使用了,上面的图中的命名方式叫Consistent Network Device Naming中文译作一致网络设备络设备命名命名这个译法出自Redhat官方文档的这个链接

Consistent Network Device Naming/一致网络设备络设备命名命名

起初linux的命名方式就是eth0这样的,益处显而易见,统一的命名看起来舒服也直观,但有个缺点就是eth后面的编号是按照系统加载或者发现设备的顺序来分配的,这会导致有些时候网卡的命名不可预测,也缺乏对网卡具体信息的描述,比如eth4这个网卡其实是一个PCIE的万兆光口网卡,但是却和板载的千兆电口网卡eth0使用相同的命名规则,从网卡名字上无法直观的看出。

后来DELL开发了一个叫biosdevname的方案,也就是前面提到的eno1等这样的命名方式,规则为:

  • en代表Ethernet
  • wl代表无线网卡(WIFI)
  • ww代表无线广域网卡(4G上网卡等)
  • eno中的o代表Onboard,即板载的意思,eno0这样的为板载网卡
  • ens代表可热插拔的网卡
  • enp中的p代表pci,也就是pcie网卡
  • enx/wlx是使用MAC地址命名的网卡

实例

我找了一台服务器加一台虚拟机查看常见的网卡命名。(设备型号为DELL R720 系统为Debian10,使用udev设备管理器,默认启用了biosdevname的命名方案)

上图网卡:

接口名字 解释
lo 环回口
eno1 - eno4 板载千兆电口以太网
enp4s0f0 enp4s0f1 pci编号为4:0.0和4:0.1的以太网卡(此例中PCI编号f解释为功能号感觉不妥,这是一块双口卡,两个插口功能应该相同,虽然下图lspci的输出确实如此)注:PCI编号为16进制的
enp4s0f1.4 在enp4s0f1口上建立的虚拟口(vlan接口vlanID为4)
docker0 网桥(虚拟口,这台机器安装了Docker,这是docker bridge网络建立的bridge口)
vetheee66be@if13 veth-pair口(虚拟口)
enx00e04d462017 使用MAC地址命名的USB网卡(不过此处并看不出是USB的)
wlx60ee5c03ef4b 使用MAC地址命名的USB无线网卡(不过此处并看不出是USB的)

还有一种常见的命名为ens,按照文档说明这种是可热插拔PCI网卡,我的机器上面没有这种,不过vmware虚拟机中的网卡是这样的,如下图:

命名优先级


从这张图可以看出前四个为板载网卡,这四个网卡也是有PCI编号的,为什么没有按照PCI网卡命名呢?其实每种网卡都有多种命名方案,最起码都可以按照mac地址命名。这里直接引用Redhat的文档 ,以此为顺序在系统初始化时候进行命名。

中文版

英文版

使用udevadmin info /sys/class/net/xx 来查看,ID_NET_NAME开头的就是备选的命名方案,可以看到网卡的多种命名方案:

参考:

Red Hat Enterprise Linux Networking Guide
讲干货----centos7 网卡命名规则详解

posted @ 2020-08-16 13:36  bfhyqy  阅读(4236)  评论(0编辑  收藏  举报