И снова о сетевых интерфейсах

systemd-udevd.jpg
Как вы наверное помните, 4 месяца назад мы уже предпринимали попытку перейти на классические имена сетевых интерфейсов. Переход на eudev сулил возврат к старому, доброму, привычному, не испорченному udev-у. Но радость длилась недолго. Через какое-то время стало понятно, что eudev идёт по пути наименьшего сопротивления, беря за основу кодовую базу новых версий udev. Тем временем, уже под флагом systemd-udevd из последнего выпилили не просто файл с генерацией шаблона для переименования сетевых интерфейсов 70-persistent-net.rules, но и логику двойного переименования, при которой исключаются ошибки при рокировке имён eth0<>eth1. Не смотря на огромную популярность классических сетевых имён среди пользователей дистрибутива, мы всё же не решились на этот шаг, так как это как минимум потребовало бы восстанавливать и поддерживать правила создания 70-persistent-net.rules и как максимум писать код для корректного переименования eth0<>eth1. И вот, по прошествии ещё некоторого времени из eudev 3.1 выпиливают уже правила, создающие “systemd-ные” имена. Eudev, наследуемый код udev напоминает питона, кусающего себя с двух сторон. С одной стороны его обкусывает systemd, с другой гентушники. После выхода 3.1 стало понятно, что нужно выбирать чью-то сторону. Вернуть правила создания systemd-ных имён, или написать правила создания 70-persistent-net.rules. На помощь, как всегда, пришли шаблоны утилит. После обновления системы, вы увидите в ней старый добрый /etc/udev/rules.d/70-persistent-net.rules, который обеспечит вам плавный переход на новые имена. Вы можете не трогать его и тогда имена останутся прежними, сбросить на дефолтные, удалив файл и пересоздав initramfs (выполнив ‘dracut -f -H’), после чего перезагрузив компьютер, либо присвоив сетевым интерфейсам свои, более понятные имена, например wan0, lan0, internet0, и т.п. Пересоздать initramfs для сброса имён нужно для того, чтобы почистить старые правила eudev, копия которого по прежнему остаётся в вашем локальном initramfs.

Коль скоро написано “оставить комментарий”, оставляю :slight_smile:
Выполнил все, как изложил уважаемый Alexander Tratsevskiy. Причем буквально - удалил /etc/udev/rules.d/70-persistent-net.rules (знаю, как это называется, ну а кому еще верить, если не разработчику), пересоздал, перезагрузился. Сеть пропала.
Пришлось загружаться с лайва, искать в сети содержание этого файла, создавать вручную и опять пересоздавать initramfs (последнее не уверен, нужно ли, но выполнил). enp4s4 вернулся.
Собственно, хочу уточнить: возможно, кроме действий, описаных в заметке, надо было выполнить что-то, “само собой разумеющееся для гентушников” для достижения результата?

Если для настройки сети используется Networkmanager, то ничего, кроме изменения имени сетевого интерфейса вы не заметите, всё будет работать как и раньше. Если вы настраивали через openrc, разумеется позаботьтесь о символической ссылке на интерфейс /etc/init.d/net.eth0 и поправьте правила в /etc/conf.d/net.

Александр, спасибо за уточнение.

можно было добавить в шаблон для груба (который используется в лайве) net.ifnames=0 … с лайва будет eth0 и после установки он же (я себе так сделал) :slight_smile:
ps. в установленной системе поменять без проблем … если не копипастер по жизни )