Автор Тема: Не работает 70-persistent-net.rules.  (Прочитано 333 раз)

Оффлайн mrsclick

  • Участник
  • *
  • Сообщений: 44
Изменилась конфигурация оборудования, была установлена PCI-E сетевая карта. Стали "скакать" имена интерфейсов. Обычно это решалось с использованием 70-persistent-net.rules, но в данном случае
70-persistent-net.rules не сработал. Пробовал также создавать файлы 10-eth0.link и 10-eth1.link в /etc/systemd/network, пытался отказаться от нейминга eth-x используя net.ifnames=1 (при загрузке в качестве параметра ядра в GRUB), также не сработало.

Содержимое 70-persistent-net.rules, создавал еще 99-custom-net.rules с аналогичным содержимым:
cat /etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x1969:0x1063 (atl1c)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="d0:27:88:47:0a:1b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:4c:68:03:66", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Сожержимое 10-eth0.link файла:

[Match]
MACAddress=d0:27:88:47:0a:1b

[Link]
Name=eth0

Сожержимое 10-eth1.link файла:

[Match]
MACAddress=00:e0:4c:68:03:66

[Link]
Name=eth1

Пробовал повышать приоритет link файлов до 00.

Сеть в системе настроена через etcnet, проблвал в options для каждого интерфейса прописывать MAC=.

Подскажите, пожалуйста, какие есть еще варианты задать постоянные имена интерфейсов в ALT Linux p10\p11? Почему может не работать 70-persistent-net.rules ?

Оффлайн rits

  • Участник
  • *
  • Сообщений: 1 464
  • ITS
Re: Не работает 70-persistent-net.rules.
« Ответ #1 : 04.02.2026 13:10:58 »
Переименование интерфейсов при необходимости производится указанием имени и мак адреса в файле 70-persistent-net.rules в каталоге /etc/udev/rules.d/:
... ATTR{address}=="...", ... NAME="..."
MAC адрес подставляем своей сетевой карты, если файл пустой или его нет, создаем и добавляем правила.

$ tree -L 1 /etc/udev/rules.d/

/etc/udev/rules.d/
├── 10-wacom.rules
├── 60-raw.rules
├── 70-persistent-net.rules
└── 80-net-setup-link.rules -> /dev/null

# nano /etc/udev/rules.d/70-persistent-net.rules
Цитировать
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:22:33:7a:41:fc", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="ether0"

В /etc/net/ifaces создаем каталог и настроечные файлы.
# mkdir /etc/net/ifaces/ether0
# touch /etc/net/ifaces/ether0/options

# tree -L 2 /etc/net/ifaces/ether*
/etc/net/ifaces/ether0
├── ipv4address
├── ipv4route
├── options
└── resolv.conf

# cat /etc/net/ifaces/ether0/options

TYPE=eth
CONFIG_WIRELESS=no
BOOTPROTO=static
SYSTEMD_BOOTPROTO=static
CONFIG_IPV4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
ONBOOT=yes

Всегда работало. А вот имена eth* использовать не стоит, они зарезервированы ядром вроде как. Лучше ether* использовать или другое какое нибудь. Можно при загрузке параметры ядру дать, чтобы имена интерфейсов не "скакали" меняясь местами, только не помню уже как, где то затерялись записи, поищи в сети

Оффлайн mrsclick

  • Участник
  • *
  • Сообщений: 44
Re: Не работает 70-persistent-net.rules.
« Ответ #2 : 04.02.2026 16:47:34 »
Переименование интерфейсов при необходимости производится указанием имени и мак адреса в файле 70-persistent-net.rules в каталоге /etc/udev/rules.d/:
... ATTR{address}=="...", ... NAME="..."
MAC адрес подставляем своей сетевой карты, если файл пустой или его нет, создаем и добавляем правила.

$ tree -L 1 /etc/udev/rules.d/

/etc/udev/rules.d/
├── 10-wacom.rules
├── 60-raw.rules
├── 70-persistent-net.rules
└── 80-net-setup-link.rules -> /dev/null

# nano /etc/udev/rules.d/70-persistent-net.rules
Цитировать
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:22:33:7a:41:fc", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="ether0"

В /etc/net/ifaces создаем каталог и настроечные файлы.
# mkdir /etc/net/ifaces/ether0
# touch /etc/net/ifaces/ether0/options

# tree -L 2 /etc/net/ifaces/ether*
/etc/net/ifaces/ether0
├── ipv4address
├── ipv4route
├── options
└── resolv.conf

# cat /etc/net/ifaces/ether0/options

TYPE=eth
CONFIG_WIRELESS=no
BOOTPROTO=static
SYSTEMD_BOOTPROTO=static
CONFIG_IPV4=yes
DISABLED=no
NM_CONTROLLED=no
SYSTEMD_CONTROLLED=no
ONBOOT=yes

Всегда работало. А вот имена eth* использовать не стоит, они зарезервированы ядром вроде как. Лучше ether* использовать или другое какое нибудь. Можно при загрузке параметры ядру дать, чтобы имена интерфейсов не "скакали" меняясь местами, только не помню уже как, где то затерялись записи, поищи в сети

Спасибо за инструкцию, но я в ОП посте пишу что это ничего не работает.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 650
Re: Не работает 70-persistent-net.rules.
« Ответ #3 : 04.02.2026 20:14:02 »
Обычно это решалось с использованием 70-persistent-net.rules, но в данном случае
Это какой-то старый файл, или заново сгенерированный? Если файл старый, попробуйте установить udev-rule-generator-net, удалить 70-persistent-net.rules и перезагрузиться. Но это если около компьютера, а не по ssh: потом может быть придётся корректировать имена в файле и /etc/net. И для фактического переименования может вторая перезагрузка потребоваться, если systemd, а не sysvinit: https://bugzilla.altlinux.org/54998
Почему может не работать 70-persistent-net.rules ?
Из-за имён eth0/eth1: 99%, что это udev передрался сам с собой при переименовании. Из него соответствующий код улучшаторы от Поттеринга выкинули несколько лет назад. В ALT какое-то время хранили патч, но перестали: https://bugzilla.altlinux.org/32167

И да, у меня работает.
« Последнее редактирование: 04.02.2026 20:24:29 от asy »

Оффлайн mrsclick

  • Участник
  • *
  • Сообщений: 44
Re: Не работает 70-persistent-net.rules.
« Ответ #4 : 05.02.2026 10:54:57 »
Обычно это решалось с использованием 70-persistent-net.rules, но в данном случае
Это какой-то старый файл, или заново сгенерированный? Если файл старый, попробуйте установить udev-rule-generator-net, удалить 70-persistent-net.rules и перезагрузиться. Но это если около компьютера, а не по ssh: потом может быть придётся корректировать имена в файле и /etc/net. И для фактического переименования может вторая перезагрузка потребоваться, если systemd, а не sysvinit: https://bugzilla.altlinux.org/54998
Почему может не работать 70-persistent-net.rules ?
Из-за имён eth0/eth1: 99%, что это udev передрался сам с собой при переименовании. Из него соответствующий код улучшаторы от Поттеринга выкинули несколько лет назад. В ALT какое-то время хранили патч, но перестали: https://bugzilla.altlinux.org/32167

И да, у меня работает.

Большое спасибо! Сделал как вы сказали, удалил файл и переустановил два пакета udev-rule-generator и udev-rule-generator-net, перезагрузился, файл создался с именами eth-X, для надежности поменял формат имен. Теперь работает. Еще раз, благодарю!