为什么我的以太网接口被称为 enp0s10 而不是 eth0?

Nic*_*ich 114 linux networking udev ethernet

当我运行时ifconfig -a,我只得到loenp0s10接口,而不是经典的eth0

enp0s10是什么意思?为什么没有eth0

DIG*_*mbl 161

回答“enp0s10 是什么意思?” 题:

enp0s10:
| | |
v | |
en| |   --> ethernet
  v |
  p0|   --> bus number (0)
    v
    s10 --> slot number (10)
Run Code Online (Sandbox Code Playgroud)

来源:GitHub 上的 udev-builtin-net_id.c

  • 是来找这个的。 (15认同)
  • 由于网卡名称末尾没有`...fN`部分,我们可以推断出函数号为0。将数字转换为十六进制(10 = "a" in hex)后,我们知道`enp0s10 ` 表示 PCI 设备 ID `00:0a.0`。 (7认同)
  • 还有 https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html (2认同)
  • 这解释了**eno**(板载)**enp**(pci)和**enx**(mac),但它没有解释名称**end**0。end0 中的 d 代表什么? (2认同)

Bra*_*iam 96

现在 udevd 为以太网设备分配名称的方式发生了变化。现在您的设备使用“可预测的接口名称”,它基于(并引用来源):

  1. 包含固件/BIOS 的名称为板载设备提供索引号(例如:eno1)
  2. 包含固件/BIOS 提供的 PCI Express 热插拔插槽索引号的名称(例如:ens1)
  3. 包含硬件连接器物理/地理位置的名称(例如:enp2s0)
  4. 包含接口 MAC 地址的名称(例如:enx78e7d1ea46da)
  5. 经典的、不可预测的内核原生 ethX 命名(例如:eth0)

更改的原因记录在systemd freedesktop.org 页面中,以及禁用此功能的方法:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
Run Code Online (Sandbox Code Playgroud)

或者如果您使用旧版本:

ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules
Run Code Online (Sandbox Code Playgroud)

  • 遵循 freedesktop,org 链接,要点是:`内核应用的网络接口的经典命名方案是简单地将名称以“eth”开头的名称分配给驱动程序探测到的所有接口。由于现代技术通常无法预测驱动程序探测,这意味着一旦多个网络接口可用,名称的分配通常不再固定,并且很可能在一次启动时“eth0”最终成为“eth1” ”在下。这可能会产生严重的安全隐患......` (13认同)
  • 有趣的是,在 BIOS 升级后,我的以太网设备的“可预测名称”从“enp5s0”更改为“enp3s0”,使我的所有网络配置变得毫无价值...... (5认同)

小智 27

如上所述,enp0s10 指的是以太网(en),前缀 0(p0),插槽 10(s10)。总线编号、设备编号和功能编号从 PCI 设备的总线设备功能 (BDF) 中提取,以创建可预测网络接口名称的前缀、插槽和功能部分。

如果函数为 0,则省略 f0 部分。在本例中,为了清楚起见,我将前缀从 p0 更改为 p4,并将函数从 f0 更改为 f1。

扩展DIG mbl发布的答案

enp4s10f1                        pci 0000:04:0a.1
| | |  |                                |  |  | |
| | |  |                   domain <- 0000  |  | |
| | |  |                                   |  | |
en| |  |  --> ethernet                     |  | |
  | |  |                                   |  | |
  p4|  |  --> prefix/bus number (4)   <-- 04  | |
    |  |                                      | |
    s10|  --> slot/device number (10) <--    10 |
       |                                        |
       f1 --> function number (1)     <--       1
Run Code Online (Sandbox Code Playgroud)

https://wiki.xen.org/wiki/Bus:Device.Function_(BDF)_Notation https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames

我最后遇到了一个带有 u7 的设备,用于 USB 端口。本文档中包含有关可预测网络接口设备名称的一些不同标签可能性。


小智 7

您可以使用

net.ifnames=0
Run Code Online (Sandbox Code Playgroud)

在内核命令行参数中,您的接口名称将被eth0再次调用。