Bug 31939 - Неверный порядок назначения имён сетевым интерфейсам
Summary: Неверный порядок назначения имён сетевым интерфейсам
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: udev-rules (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Alexey Shabalin
QA Contact: qa-sisyphus
URL: https://github.com/systemd/systemd/is...
Keywords:
Depends on:
Blocks:
 
Reported: 2016-04-02 08:30 MSK by Стас
Modified: 2018-02-14 08:47 MSK (History)
4 users (show)

See Also:


Attachments
Приоритет признака ID_NET_NAME_PATH при переименовании интерфейса (554 bytes, patch)
2016-04-02 08:30 MSK, Стас
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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 ? Это путаница получается.