ifconfig -a
时,我只会得到lo和enp0s10接口,而不是传统的eth0 enp0s10是什么意思?为什么没有eth0?
#1 楼
这是udevd现在为以太网设备分配名称的方式的变化。现在您的设备使用“可预测的接口名称”,该名称基于(并引用源):包含固件/ BIOS的名称为板载提供了索引号设备(例如:eno1)
包含提供的固件/ BIOS的名称PCI Express热插拔插槽索引号(例如:ens1)
包含硬件连接器的物理/地理位置的名称(例如:enp2s0)
包含接口的MAC地址的名称(示例:enx78e7d1ea46da)
经典的,不可预测的内核本机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
评论
通过freedesktop,org链接,主要要点是:内核应用的网络接口的经典命名方案是,在驱动程序探测到的所有接口上,简单地为所有接口分配以“ eth”开头的名称。由于对于现代技术而言,通常无法预测驱动程序探测,因此,这意味着一旦有多个网络接口可用,名称的分配通常就不再固定,并且很可能在一个引导上最终出现“ eth0” ”。这可能会带来严重的安全隐患...
–lepe
16-10-17在2:43
这也适用于docker映像。因此,尝试在2个docker网络之间设置网桥会在2年前引起问题,因为网络端口在下次启动时可能会反转。桥接设备不可能的情况。
– U.V.
20 Dec 16'在12:01
#2 楼
回答“ enp0s10是什么意思?”问题:enp0s10:
| | |
v | |
en| | --> ethernet
v |
p0| --> bus number (0)
v
s10 --> slot number (10)
来源:GitHub上的udev-builtin-net_id.c
评论
来找这个。
–雏鸟
17年7月7日在8:38
由于NIC名称的末尾没有... fN部分,因此我们可以推断出函数编号为0。将数字转换为十六进制(十六进制为10 =“ a”)后,我们知道enp0s10表示PCI设备。 ID 00:0a.0。
–telcoM
19年4月13日在6:13
还有freedesktop.org/software/systemd/man/…
–user3840170
20/12/08在20:21
#3 楼
如上所述,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
https:/ /wiki.xen.org/wiki/Bus:Device.Function_(BDF)_Notation
https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames
我遇到了一个带有u7位于末尾,用于USB端口。本文档包含一些不同的标签可能性:
https://access.redhat.com/documentation/zh-CN/red_hat_enterprise_linux/7/html/networking_guide/sec-understanding_the_predictable_network_interface_device_names
评论
我有点困惑。您说过“由于函数为0,所以省略了f0部分”,但是为什么更改前缀以不省略f0呢?
–ebk
20-5-13在11:28
我试图说明可预测网络接口名称的每个部分。我更改了示例,将f0更改为f1。我更改了前缀以使插图更易于理解;更改与功能部分无关。谢谢
– mhck
20-5-13在12:20
我现在明白了:)感谢您的出色回答。
–ebk
20年5月13日在13:03
#4 楼
要引用通过@Braiam链接的禁用的全文:我不喜欢这个,如何禁用它?
您基本上有三个选择:
您禁用固定名称的分配,以便再次使用不可预测的内核名称。为此,只需为默认策略屏蔽
udev的.link文件:
ln -s /dev/null /etc/systemd/network/99-default.link
您可以创建自己的手动命名方案,例如,通过将接口命名为“ internet0”,“ dmz0”或“ lan0”。为此,请在
/etc/systemd/network/
中创建您自己的.link文件,这些文件为一个,某些或所有
接口选择一个明确的
名称或更好的命名方案。有关更多信息,请参见
systemd.link(5)
。在内核命令行上传递
net.ifnames=0
TL; DR:它已重命名为
99-default.link
#5 楼
您可以在内核命令行参数中使用net.ifnames=0
,并且您的接口名称将再次称为
eth0
。
评论
不推荐使用ifconfig。考虑尽快从iproute2迁移到ip。正如答案所说,这是systemd的变化。要恢复您的eth0,请使用内核选项net.ifnames = 0 biosdevname = 0(请参见此线程)。在下面的答案中使用ln -s / dev / null /etc/udev/rules.d/80-net-setup-link.rule在Debian 10(Buster)中不起作用
@MrCalvin:ln -s ...应该更新,请参见下文