Что определяет имя устройства NIC в Ubuntu

Просто потратил часов на диагностику, почему моя виртуальная машина 18.04 не подключилась к сети после перехода с VirtualBox на qemu.

Оказывается, что из-за «аппаратного изменения» сетевой адаптер переименован из enp0s4 в enp1s0. И - естественно - /etc/netplan/01-netcfg.yaml явно указал , что enp0s4 должен получить конфигурацию DHCP, но не (что-либо еще).

Сравнение этого с недавно установленным - и работающим - 19.04 не очень помогло, так как 19.04 использует что-то еще для настройки сети. эх ...

Во всяком случае - почему это? Я заметил такое изменение раньше, например, когда обновлял BIOS на своей материнской плате. Но каждый раз, когда это происходит, я трачу много времени на диагностику такой проблемы. Тем более, что это случается так редко ...

Итак, что вызывает это переименование и как мне настроить виртуальные машины Ubuntu так, чтобы это больше не было проблемой?

2
задан 13 May 2019 в 23:42

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 средства Ethernet, соедините шиной 0, слот 4.
  • enp1s0 средства Ethernet, соедините шиной 1, слот 0.
  • (если существует f, который относится для "функционирования". 3-е подмножество устройства)

Так смены имени, когда шина или изменения слота. Это относится к устройству 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. В моем случае, который был бы для моего Ethernet: порт 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 

как я пошел бы о конфигурировании моего VMs Ubuntu, таким образом, что это больше не будет проблемой?

Существует 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 и отредактируйте файл по мере необходимости для Вас ситуация). Оба Вы настроили имя интерфейса, которое обычно не изменялось бы (хорошо Вы могли изменить MAC-адрес на некотором NICs ;))

4
ответ дан 13 May 2019 в 23:42

Другие вопросы по тегам:

Похожие вопросы: