Ubuntu 中 NIC 设备名称由什么决定

Ubuntu 中 NIC 设备名称由什么决定

刚刚花小时诊断为什么我的 18.04 VM 从 VirtualBox 转移到 qemu 后无法连接网络。

事实证明,由于“硬件更改”,NIC 从 enp0s4 重命名为 enp1s0。并且 - 自然 - /etc/netplan/01-netcfg.yaml 指定明确地enp0s4 应该获取 DHCP 配置,但不能获取其他任何配置。

将其与新安装且正常运行的 19.04 进行比较并没有真正的帮助,因为 19.04 使用其他东西来配置网络。呃......

无论如何 - 这是为什么?我以前就注意到过这种变化,例如当我在主板上升级 BIOS 时。但每次发生这种情况时,我都会花很多时间来诊断此类问题。尤其是因为这种情况很少发生……

那么,是什么原因导致了这个重命名以及我该如何配置我的 Ubuntu VM 以使其不再成为问题?

答案1

关于如何创建名称的解释,请参见src/udev/udev-builtin-net_id.c

 * Two character prefixes based on the type of interface:
 *   en -- ethernet
 *   sl -- serial line IP (slip)
 *   wl -- wlan
 *   ww -- wwan
 *
 * Type of names:
 *   b<number>                             -- BCMA bus core number
 *   ccw<name>                             -- CCW bus group name
 *   o<index>[d<dev_port>]                 -- on-board device index number
 *   s<slot>[f<function>][d<dev_port>]     -- hotplug slot index number
 *   x<MAC>                                -- MAC address
 *   [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
 *                                         -- PCI geographical location
 *   [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
 *                                         -- USB port number chain
  • enp0s4表示以太网、总线 0、插槽 4。
  • enp1s0表示以太网、总线 1、插槽 0。
  • (如果有一个 f 指的是“功能”。设备的第三个子集)

因此,当总线或插槽发生变化时,名称也会发生变化。它指的是 PCI 设备。请参阅...

$ for i in `seq 2 5`; do lspci -s 0${i}:; done
03:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
04:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTL8411B PCI Express Card Reader (rev 01)
04:00.1 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 12)

PCI 设备列表。在我的例子中,以太网为:端口 4、插槽 0、功能 1。无线为:端口 3、插槽 0。参见...

$ networkctl

IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           n/a         unmanaged 
  2 enp4s0f1         ether              n/a         unmanaged 
  3 wlp3s0           wlan               n/a         unmanaged 

我该如何配置我的 Ubuntu VM 以便不再出现这个问题?

有 4 种方法; 其中 2 个是使用您自己的名称(请参阅/etc/udev/rules.d/70-my-net-names.rules)或使用 MAC 地址(cp /usr/lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules并​​根据您的情况编辑文件)。 两者都让您设置一个通常不会更改的接口名称(当然,您可以更改某些 NIC 上的 MAC 地址 ;) )

相关内容