Переименовать сетевой интерфейс на основе MAC без соответствующего моста

В Ubuntu 18.04,

У меня есть адаптер Ethernet, который я переименую в primary-ethв мосту под названием primary-bridge,

Я переименовал свой сетевой адаптер с файлом в/etc/udev/rules.d/70-persistent-net.rules

содержащий одну строку:SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="primary-eth"(где aa:bb... это фактический MAC-адрес моего сетевого адаптера)

Это работало, но потом однажды я загрузился и нашел primary-bridge пустой, и нежелательный дополнительный мост называется rename3 содержащий primary-eth,

Я получил совет, что мое правило слишком расплывчато и что udev, вероятно, пытался переименовать primary-bridge в primary-eth в состоянии гонки. (так как primary-bridge получает свой MAC-адрес от primary-ethпоэтому у них обоих одинаковый MAC-адрес)

Итак, посмотрев на udevadm info /sys/class/net/primary-bridgeПоэтому я добавил параметр DEVTYPE!="bridge"Но тогда мой primary-eth не был переименован надежно при каждой загрузке.

Так что теперь я использую DRIVERS=="?*" вместо DEVTYPE!="bridge", и он работал нормально для последних 2 перезагрузок, но я не знаю, будет ли он продолжать работать надежно.

  1. Что значит ?* значит в DRIVERS=="?*"? Как это может соответствовать чему-либо, если у меня нет параметра с именем DRIVERS=... в моем udevadm info ни для primary-bridge ни primary-eth?

  2. Почему DEVTYPE!="bridge" не работа? Что-то не так с этим != синтаксис?

  3. Я также видел параметр KERNEL=="eth*" используется, что, по-видимому, относится к реальному имени ядра для адаптера Ethernet, который всегда начинается с "eth". Если я хочу переименовать адаптер Wi-Fi, используя тот же метод, мне нужно написать KERNEL=="wlan*"?

0 ответов

Другие вопросы по тегам