Переименование сетевых интерфейсов без рестарта системы
Суть проблемы.
Есть интерфейс с именем, допустим, 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
Указание устройства можно опустить, но тогда будут затронуты все устройства, а это не всегда хорошо.