[РЕШЕНО] udevd пытается переименовывать вланы в имя сетевушки

Ядро 4.4.26-gentoo

Файл /etc/udev/rules.d/70-my-network.rules:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:18:7d:08:f3:96", NAME="net0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:18:7d:08:f3:97", NAME="net1"

(к enpXXXX я, наверное, никогда не привыкну, ethX больше использовать нельзя, поэтому остановились на netX)

Файл (ключевые фрагменты) /etc/conf.d/net:

config_net0="null"
config_net1="null"

slaves_bond0="net0 net1"
config_bond0="null"
vlans_bond0="8 11 101 103"

vlan8_name="vlan8"
config_vlan8= . . .

vlan11_name="vlan11"
config_vlan11= . . . 

vlan101_name="vlan101"
config_vlan101= . . .

vlan103_name="vlan103"
config_vlan103= . . .

Вроде, никакого криминала. Но в журнале при загрузке появляются вот такие записи:

udevd[2335]: starting version 3.1.5
udevd[2352]: Error changing net interface name vlan8 to net0: File exists
udevd[2352]: could not rename interface '5' from 'vlan8' to 'net0': File exists
udevd[2352]: Error changing net interface name vlan11 to net0: File exists
udevd[2352]: could not rename interface '6' from 'vlan11' to 'net0': File exists
udevd[2352]: Error changing net interface name vlan101 to net0: File exists
udevd[2352]: could not rename interface '7' from 'vlan101' to 'net0': File exists
udevd[2352]: Error changing net interface name vlan103 to net0: File exists
udevd[2352]: could not rename interface '8' from 'vlan103' to 'net0': File exists

Подскажите, пожалуйста, в каком месте нужно искать настройки, заставляющие udev переименовывать вланы в название первого сетевого интерфейса.
Заранее спасибо.

IVB написал(а): Подскажите,

IVB написал(а):
Подскажите, пожалуйста, в каком месте нужно искать настройки, заставляющие udev переименовывать вланы в название первого сетевого интерфейса.

Наверное здесь? /lib/udev/rules.d

h4e написал(а):IVB

h4e написал(а):
IVB написал(а):
Подскажите, пожалуйста, в каком месте нужно искать настройки, заставляющие udev переименовывать вланы в название первого сетевого интерфейса.

Наверное здесь? /lib/udev/rules.d

Там стандартные правила, которые я не менял.
Вполне возможно, что какое-то из них содержит ошибку, из-за которой и возникают попытки переименовать вланы.
Моих знаний udev недостаточно для того, чтобы определить, есть ли там ошибка.
А публиковать сюда все 20 файлов, наверное, бессмысленно.
Как быть?

>>как быть? «как страшно

>>как быть?

«как страшно жить!» :-D

повтыкайте в udevadm monitor -kup

Насколько я понял - с

Насколько я понял - с параметром monitor мониторятся текущие события (т.е. происходящие после запуска команды). У меня никаких событий не происходит (запускал udevadm monitor -kup - никакого вывода на экран в течение нескольких минут).

А проблема, которую я описал, происходит при старте системы.

ну очевидно епт что

ну очевидно епт что мониторить надо тогда когда происходит нежеланное. заставьте произойти это вручную – убейте модуль и воткните его взад :-D. удав определит новый девайс и посмотрите что из правил срабатывает и как срабатывает.

A что в ядре? Покажиgrep

A что в ядре? Покажи

egrep "BOND|VLAN" /usr/src/linux/.config

Также покажи весь /etc/conf.d/net или хотя бы

grep "^[[:blank:]]*modules" /etc/conf.d/net

eсли есть, что скрывать :)

P.S. Кстати, какая система инициализации: systemd или openrc?

SysA написал(а): A что в

SysA написал(а):
A что в ядре? Покажи

egrep "BOND|VLAN" /usr/src/linux/.config
# egrep "BOND|VLAN" /usr/src/linux/.config
# CONFIG_BRIDGE_VLAN_FILTERING is not set
CONFIG_VLAN_8021Q=y
# CONFIG_VLAN_8021Q_GVRP is not set
# CONFIG_VLAN_8021Q_MVRP is not set
# CONFIG_NET_ACT_VLAN is not set
# CONFIG_PATA_WINBOND is not set
CONFIG_BONDING=m
# CONFIG_MACVLAN is not set

Что касается bond интерфейса - без него картина аналогичная. Сейчас готовлю другой сервак - там только одна сетевушка пока задействована - картинка такая же.

SysA написал(а):
Также покажи весь /etc/conf.d/net или хотя бы

grep "^[[:blank:]]*modules" /etc/conf.d/net

eсли есть, что скрывать :)

Кроме "белых" IP скрывать нечего.
А вот строчку modules я почему-то не показал в исходном посте - приношу извинения!

# grep "^[[:blank:]]*modules" /etc/conf.d/net
modules="iproute2"
SysA написал(а):
P.S. Кстати, какая система инициализации: systemd или openrc?

openrc

Несколько странноватое у тебя

Бондинг тут, конечно, не при чем (хотя, если нет 100% гарантии, что его модуль загружается раньше инициализации сети, надо бы его монолитно включить), но и без него несколько странноватое у тебя ядро... Неужели ничего фильтровать не надо?!.. да и NET_ACT_VLAN надо бы включить...

Вот тебе пример ядра с работающих серверов:

CONFIG_BRIDGE_EBT_VLAN=m
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_VLAN_8021Q=y
# CONFIG_VLAN_8021Q_GVRP is not set
# CONFIG_VLAN_8021Q_MVRP is not set
CONFIG_NET_ACT_VLAN=y
# CONFIG_PATA_WINBOND is not set
CONFIG_BONDING=y
CONFIG_MACVLAN=y
CONFIG_IPVLAN=y

Эти сервера с ядром 4.4.* (под Генту, кстати) работают и с бондингом, и с бриджами на виртуалки (системд-контейнеры и KVM), и с openvswitch, ну и с VLAN'ами, конечно! :) Да и трафик фильтруется, где и как надо...

На десктопе (тоже как и у тебя на openrc) у меня конфигурация почти аналогична, только

CONFIG_VLAN_8021Q_GVRP=y
CONFIG_VLAN_8021Q_MVRP=y

еще включены.

P.S. Я бы порекомендовал перекомпилить кое-какие подсистемки, особенно после обновления/модификации ядра:

emerge -1 $(qlist -IC dbus udev grub)

потом пересобрать initramfs (если пользуешься) и переустановить grub на диск(и). Тогда можешь быть уверен, что грузится именно то, что надо, без всякой мистики.

Фильтровать ничего не

Фильтровать ничего не надо.
Все задачи "обработки" трафика решаются iptables.

Система свежеустановленная, изначально собиралась с этим ядром, и грузится именно то, что собиралось (другого просто нет).

Проблема, как мне кажется, на 99% в udev.
Но, как я уже писал, моих знаний недостаточно для поиска ошибки в правилах.

ну если как советуют сделать

ну если как советуют сделать не желаете – придется грызть кактус и далее

Я очень разумно отношусь к

Я очень разумно отношусь к советам.

Ни GVRP, ни MVRP у меня в сети не используется, поэтому включать их в ядре я не вижу смысла.

Что касается совета пересобрать...
Я сейчас занимаюсь следующим сервером - на нём как раз "пересобраны" (т.е. собраны "с нуля") все рекомендуемые пакеты.
И ошибка с переименованием присутствует и на нём.
Поэтому вероятность того, что пересборка поможет предыдущему серверу (с конфигов которого я начал), равна нулю.

FYI: Я и не рекомендовал GVRP

FYI: Я и не рекомендовал GVRP и MVRP для сервера! :) Перечитайте внимательно - сначала надо бы поправить ядро, и только потом пересобрать системные штучки с загрузчиком, после чего обязательно этот загрузчик переписать на диске!

Чтобы лучше понять, как у тебя все собирается, неплохо было бы увидеть выдачу

emerge -1 $(qlist -IC dbus udev grub) -pv

Для примера как это выглядит у меня на десктопе (т.к. это десктоп, то к сожалению тут есть некоторая избыточность (gtk, qt и пр.), но зато он абсолютно без системд'ы, в то время как все сервера с подобным функционалом только под системд'ями):

[ebuild   R    ] dev-util/gdbus-codegen-2.48.2::gentoo  PYTHON_TARGETS="python2_7 python3_4 (-python3_5)" 0 KiB
[ebuild   R    ] sys-apps/dbus-1.10.12::gentoo  USE="X -debug -doc (-selinux) -static-libs -systemd {-test} -user-session" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild   R    ] dev-libs/dbus-glib-0.102::gentoo  USE="-debug -doc -static-libs {-test}" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild   R    ] dev-qt/qtdbus-5.6.2:5/5.6::gentoo  USE="-debug {-test}" 0 KiB
[ebuild   R    ] dev-libs/libdbusmenu-12.10.2-r2::gentoo  USE="gtk gtk3 introspection -debug" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7" 0 KiB
[ebuild   R    ] dev-python/dbus-python-1.2.0-r1::gentoo  USE="-doc -examples {-test}" PYTHON_TARGETS="python2_7 python3_4 (-python3_5)" 0 KiB
[ebuild   R    ] sys-fs/eudev-3.1.5::gentoo  USE="hwdb introspection kmod static-libs -rule-generator (-selinux) {-test}" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild   R    ] virtual/libudev-215-r1:0/1::gentoo  USE="static-libs -systemd" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild   R    ] virtual/udev-215::gentoo  USE="-systemd" 0 KiB
[ebuild   R    ] dev-libs/libgudev-230-r1::gentoo  USE="introspection -static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild   R    ] sys-fs/udev-init-scripts-27::gentoo  0 KiB
[ebuild   R    ] virtual/libgudev-230::gentoo  USE="introspection -static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB

Total: 12 packages (12 reinstalls), Size of downloads: 0 KiB

P.S. Чудес не бывает!.. :)

SysA написал(а): сначала надо

SysA написал(а):
сначала надо бы поправить ядро

Ну вот объясните мне - зачем? Зачем включать в ядро фишки, которые для работы данного конкретного сервера не нужны?
Я знаю, что моё ядро не идеально - из него можно выбросить ещё кучу лишнего. Но добавлять лишнее? Спасибо, не надо :)

SysA написал(а):
P.S. Чудес не бывает!.. :)

Как говорил один мой преподаватель в ВУЗе - "Чудес не бывает. Все ошибки в свои программы мы вносим сами."
И в данном случае ошибка - моя собственная.
Но я уже смирился с тем, что то, что работало раньше (годами!) - в один прекрасный момент работать перестаёт. И приходится в очередной раз убивать кучу времени, чтобы найти - а что ж нам такого интересного подбросили разработчики...

Разобрался

Разобрался.

Очередной "подарок" от разработчиков udev. Возможно, даже где-то описанный.

Сначала - пояснение, почему выполняется попытка переименования.

vlan101 (в моём примере) "висит" на net0 - соответственно, MAC-адрес у него тот же, что и у net0. Соответственно, он тоже (как и физический интерфейс) подпадает под правило в 1-й строке файла .rules.
Два года назад вланы не подпадали под действие правил переименования. Теперь подпадают. Как уже было сказано выше - возможно, это даже где-то описано.

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

У физического интерфейса есть родительское устройство - для сетевушек это pci (для USB сетевушек наверняка будет другой родитель, но это уже меня не касается). У влана родителя нет (по крайней мере - пока). Достаточно в правила переименования сетевушек добавить SUBSYSTEMS=="pci", - и вланы больше не будут подпадать под действие правил переименования.

P.S. И при чём здесь кактус? ;)

A при том, что у нас нет

A при том, что у нас нет ни твоей истории, ни твоей конфигурации, поэтому и предлагалось все делать как бы "с чистого листа".

Но ты разобрался и молодец! :)

Кстати, самой первый пост и стал решением твоей проблемы, хоть ты и отрицал поначалу. Дал бы конфиги и детальные логи, - глядишь и быстрее нашли бы решение...

>>при чём здесь

>>при чём здесь кактус?
потому как метода анализа ситуации (udevadm monitor) была посоветована хз сколько постов назад. и реализовывается она буквально «на ходу» (конечно, если дрова сетевухи не вмоноличены, что вроде бы как надо чуть реже чем почти никогда)

У меня, например, собрано оно

У меня, например, собрано оно монолитом. Почему? Потому что так захотелось и так работает.

Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"

это сильный аргумент, nuff

это сильный аргумент, nuff said

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".