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

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

当我跑步时ifconfig -a,我只得到enp0s10接口,不是经典的以太网0

什么是enp0s10意思是?为什么没有以太网0

答案1

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

enp0s10:
| | |
v | |
en| |   --> ethernet
  v |
  p0|   --> bus number (0)
    v
    s10 --> slot number (10)

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

答案2

现在 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

或者如果您使用旧版本:

ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

答案3

如上所述,enp0s10 指以太网(en)、前缀 0(p0)、插槽 10(s10)。

总线编号、设备编号和功能编号取自 PCI 设备的总线设备功能 (BDF) 表示法,以创建可预测网络接口名称 (PNIN) 的前缀、插槽和功能部分。

如果函数为0,f0部分有时会被省略。为了清楚起见,我将前缀从 p0 更改为 p4,并将函数从 f0 更改为 f1。 BDF 使用十六进制值,这些值会转换为 PNIN 中的十进制值。

扩展于答案发布者地高辛:

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

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

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

PCI 域不是 0 的情况的第二个示例(P ​​代表 PCI 地理位置):

P1enp4s10f1                        pci 0001:04:0a.1
| | | |  |                                |  |  | |
P1| | |  |  --> PCI geo loc/domain <-- 0001  |  | |
  | | |  |                                   |  | |
  en| |  |  --> ethernet                     |  | |
    | |  |                                   |  | |
    p4|  |  --> prefix/bus number (4)   <-- 04  | |
      |  |                                      | |
      s10|  --> slot/device number (10) <--    10 |
         |                                        |
         f1 --> function number (1)     <--       1

答案4

引用有关禁用的全文由@Braiam 链接:

我不喜欢这个,如何禁用它?

您基本上有三个选择:

  1. 您禁用固定名称的分配,以便再次使用不可预测的内核名称。为此,只需为默认策略屏蔽 udev 的 .link 文件:ln -s /dev/null /etc/systemd/network/99-default.link
  2. 您可以创建自己的手动命名方案,例如将接口命名为“internet0”、“dmz0”或“lan0”。为此,请在 中创建您自己的 .link 文件/etc/systemd/network/,为您的一个、部分或全部接口选择一个明确的名称或更好的命名方案。请参阅systemd.link(5)获取更多信息。
  3. net.ifnames=0您在内核命令行上传递

TL;DR:它已重命名为99-default.link

相关内容