Bug 31939

Summary: Неверный порядок назначения имён сетевым интерфейсам
Product: Sisyphus Reporter: Стас <stas.grumbler>
Component: udev-rulesAssignee: Alexey Shabalin <shaba>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: asy, evg, mike, shaba
Version: unstable   
Hardware: all   
OS: Linux   
URL: https://github.com/systemd/systemd/issues/1390
Attachments:
Description Flags
Приоритет признака ID_NET_NAME_PATH при переименовании интерфейса none

Description Стас 2016-04-02 08:30:55 MSK
Created attachment 6685 [details]
Приоритет признака ID_NET_NAME_PATH при переименовании интерфейса

На интеловских серверных платформах udev не может назначить уникальные имена отдельным "набортным" интерфейсам.
В /lib/udev/rules.d/80-net-name-slot.rules сначала имя назначается по признаку ID_NET_NAME_ONBOARD, затем по ID_NET_NAME_SLOT и в последнюю очередь по ID_NET_NAME_PATH

В результате udevd пытается назначить имя eno1 двум интерфейсам.

Вот пример свойств ID_NET_NAME_* двух интерфейсов в udev:
ID_NET_NAME_MAC=enx001e67ce3321
ID_NET_NAME_ONBOARD=eno1
ID_NET_NAME_PATH=enp2s0

ID_NET_NAME_MAC=enx001e67ce3321
ID_NET_NAME_ONBOARD=eno1
ID_NET_NAME_PATH=enp0s25

Решение: поставить ID_NET_NAME_PATH первым в списке. Патч прилагаю.
Другой вариант решения - поставить ID_NET_NAME_ONBOARD последним. Считаю его менее надёжным.

Ошибка возникает только в случае двух разных чипов сетевых контроллеров. Если установлен один многоканальный чип, ID_NET_NAME_ONBOARD у его интерфейсов различаются.
Comment 1 Evgenii Terechkov 2016-04-03 11:05:21 MSK
С такими масштабными предложениями наверное лучше обращаться в апстрим.

К тому же, это очень напоминает дубль уже известных багов с прошивками от вендоров (см. например по ссылке). Резюме апстрима такое что нужно жаловаться вендору материнской платы и возможно, фильтровать в ядре. Как обходной путь предлагается дать udev-у хинт о том, как называть какие устройства, например по используемому драйверу.
Comment 2 Sergey Y. Afonin 2016-06-02 12:52:31 MSK
А udev-rule-generator-net ситуацию не спасает ?
Comment 3 Alexey Shabalin 2018-02-13 14:17:42 MSK
Выбирайте любую политику именования интерфейсов, как вам нравится.
просто добавьте настройки в 
/etc/systemd/network/99-default.link
Документация тут.
https://www.freedesktop.org/software/systemd/man/systemd.link.html
Comment 4 Стас 2018-02-13 21:37:28 MSK
(In reply to comment #3)
> Выбирайте любую политику именования интерфейсов, как вам нравится.
> просто добавьте настройки в 
> /etc/systemd/network/99-default.link
> Документация тут.
> https://www.freedesktop.org/software/systemd/man/systemd.link.html

Во время создания тикета systemd отсутствовал в системе.
Comment 5 Alexey Shabalin 2018-02-13 21:47:05 MSK
Эти настройки влияют на udev, и работают в отсутствии systemd.
Comment 6 Sergey Y. Afonin 2018-02-14 08:47:07 MSK
(In reply to comment #5)

> Эти настройки влияют на udev, и работают в отсутствии systemd.

А почему они тогда в /etc/systemd/network ? Это путаница получается.