Ubuntunetworking设备名称问题

Ubuntu 16.04 Kernel 4.12.4

我添加了一个双端口networking接口卡到我的Ubuntu服务器,并最终改变了我的主网卡的名称,这当然对我的networking设置造成了巨大的破坏。 所有使用该接口名称的东西都搞砸了,就像我所有的KVM Virbr *,一些防火墙规则等一样。

根据systemd / udev“可预测的networking接口设备名称”scheme,它不应该发生。 至less这是我没有想到的。

这是如何工作的:

  • 稳定的接口名称重新启动。

  • 稳定的接口名称,即使硬件被添加或删除,即不会重新枚举(到固件允许的级别)。

  • 内核或驱动程序更新/更改时稳定的接口名称。

  • 稳定的接口名称,即使你必须更换新的破碎的以太网卡。

  • 名称是自动确定的,没有用户configuration,他们只是工作。

  • 接口名称是完全可预测的,也就是说,通过查看lspci,你可以知道接口将被调用什么。

  • 完全无状态操作,更改硬件configuration不会导致/ etc中的更改。

这些信息对于理解udev nic命名模式非常有帮助。

udevadm info -e | grep -A 9 ^P.*enp5s0 P: /devices/pci0000:00/0000:00:1c.4/0000:05:00.0/net/enp5s0 E: DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:05:00.0/net/enp5s0 E: ID_BUS=pci E: ID_MODEL_FROM_DATABASE=I211 Gigabit Network Connection E: ID_MODEL_ID=0x1539 E: ID_NET_DRIVER=igb E: ID_NET_LINK_FILE=/lib/systemd/network/99-default.link E: ID_NET_NAME_MAC=enx1c1b0d9a43d0 E: ID_NET_NAME_PATH=enp5s0 E: ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. lspci -s 1c.4 00:1c.4 PCI bridge: Intel Corporation Device a294 (rev f0) lspci -s 05:00 05:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03) 

我添加了一个新的网卡之前是enp4s0。 enp5s0是embedded式Inel I211网卡。 新的双端口网卡是一种不能以任何方式干扰embedded式网卡的pci-e卡。

 udevadm info -e | grep -A 9 ^P.*enp1s0f0 P: /devices/pci0000:00/0000:00:01.0/0000:01:00.0/net/enp1s0f0 E: DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/net/enp1s0f0 E: ID_BUS=pci E: ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (NC360T PCI Express Dual Port Gigabit Server Adapter) E: ID_MODEL_ID=0x105e E: ID_NET_DRIVER=e1000e E: ID_NET_LINK_FILE=/lib/systemd/network/99-default.link E: ID_NET_NAME_MAC=enx002655dc5e4c E: ID_NET_NAME_PATH=enp1s0f0 E: ID_OUI_FROM_DATABASE=Hewlett Packard 

 lspci -s 01.0 00:01.0 PCI bridge: Intel Corporation Sky Lake PCIe Controller (x16) (rev 06) leonk@ubuntu-hm-srv-1:~$ lspci -s 01:00 01:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06) 01:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06) 

它在不同的总线和插槽上。

我想留在udev的命名,不想使用任何grub的东西,如:

 GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" 

这是一个错误(Ubuntu,内核)?