Переименование сетевых интерфейсов без рестарта системы

Суть проблемы. Есть интерфейс с именем, допустим, eno1. Хотим задать ему имя lan111. В /etc/udev/rules.d/70-net-name-use-custom.rules вносим строку:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="7c:c2:55:48:ed:fa", NAME="lan111"

Если перебутить систему, получим правильный результат, т.е. правило udev правильное :) Если выполнить:

/sbin/ip link set eno1 down /sbin/ip link set eno1 name lan111 /sbin/ip link set lan111 up

Результат получим, но это некрасиво – у нас же есть правильное правило udev!

Классические (нерабочие) решения, которыми забит Тырнет, предлагают сделать две команды:

udevadm control --reload-rules udevadm trigger

Причина не работы даже понятна, в привиле указано ACTION==«add», а устройство у нас уже добавлено, и правило не отрабатывает. Уже раз десять наступал на эти грабли, и каждый раз тратил на поиск правильных ключей минут по 20. Это и есть основная причина появления этой склеротички.

Привильное (рабочее) решение должно быть таким:

ip l s down dev eno1 udevadm control --reload-rules udevadm trigger --action=add /sys/class/net/eno1 ip l l

Указание устройства можно опустить, но тогда будут затронуты все устройства, а это не всегда хорошо.

Tracedump:

newBaseSize: 16pt
newBaseSizeInPt: 16