LINUX.ORG.RU
ФорумAdmin

Переименовываются интерфейсы

 ,


1

1

Добрый день. Подскажите пожалуйста, такая проблема: Вставляю новую сетевую карту PCI в разъем. Редактирую файл /etc/udev/rules.d/70-persistent-net.rules - мак, имя интерфейса, система Ubuntu 16.04 переименовывает один из интерфейсов в rename5. При чем переименовывает не новую карту, а одну из стоявших. Маки разные, аппаратные с коробки.

Обычно такое бывает с устройствами у которых одинаковые МАС-адреса. Например, с usb модемами Huawei E3372h.

Покажите содержимое вашего файла /etc/udev/rules.d/70-persistent-net.rules

vdk10
()
Ответ на: комментарий от Bloody

Пробовал

Последняя запись в файле eth4. Ставлю дополнительную сетевую, добавляю сроку, её мак и имя eth5. eth5 определяется правильно, а eth4 переименовывается в rename5. Маки разные, с коробки, имена менял.

korshun_199
() автор топика
Ответ на: Пробовал от korshun_199

попробуйте назвать интерфейсы new1, new2 и вы вернетесь к моему первому сообщению, когда udev пытается назвать сетевку eth4, это имя еще занято.

Bloody ★★
()
Ответ на: комментарий от vdk10
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="f4:f2:6d:02:38:b3", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="3c:84:6a:cc:62:02", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2" 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="1c:1b:0d:c7:26:41", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="18:d6:c7:06:ae:12", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth4"
korshun_199
() автор топика
Ответ на: Ок от korshun_199

не используйте префикс eth в имени

Bloody ★★
()

net.ifnames=0 в параметры ядра, и пошло всё это системдэшное говно нахер.

anonymous
()
Ответ на: комментарий от afanasiy

Я тоже с этим сталкивался на древнем пролианте. Мне помог этот пост:

Тут совет использовать 70-persistent-net.rules и, в нём, eth. Вот с этим eth, с некоторых пор, засада ввиду

https://bugs.freedesktop.org/show_bug.cgi?id=53837

Только это не объясняет появление rename* в описанном случае. Разве что пытались обойти нововведение, и что-то пошло не так. В общем 70-persistent-net.rules и какой-нибудь ether вместо eth должны помочь. Ну или new, как уже советовали.

AS ★★★★★
()
Ответ на: комментарий от afanasiy

Ок

Завтра продолжение банкета с бубнами, отпишусь шо и как

korshun_199
() автор топика
Ответ на: комментарий от AS

да тут дело даже не в нововведениях, как я понял топикстартера, у него используется классическое именование интерфейсов, но не устраивает порядок в котором присвоены номера. Прикол в том, что сначала ядро накидало имен в порядки инициализации устройств, а потом udev не может переименовать, потому как для ротации внутри одного префикса «eth», нужно сначала все выкинуть в другой (например в «temp»), а потом вернуть в другом порядке в «eth». Вот только для этого придется расчехлять исходники udev и переписывать.

Bloody ★★
()
Ответ на: комментарий от Bloody

потому как для ротации внутри одного префикса «eth», нужно сначала все выкинуть в другой (например в «temp»), а потом вернуть в другом порядке в «eth». Вот только для этого придется расчехлять исходники udev и переписывать.

Именно об этом и речь. Раньше udev это умел, потом этот кусок кода выкинули из него (о чём ссылка на баг на freedesktop собственно). Соответственно, если eth0 и eth1 не принципиальны, в 70-persistent-net.rules можно написать NAME=«ether0» и NAME=«ether1» соответственно.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)

Если не используются predictable names, то в общем случае НЕЛЬЗЯ называть сетевухи по старинке через eth*. Точнее явного запрета нет, но при достаточном количестве сетевых картах возможна гонка процессов их переименования - например определились ЯДРОМ разом 2 сетевые карты как eth0 и eth1, затем стартуют ПАРАЛЛЕЛЬНО скрипты переименования которые пытаются переименовать(согласно правила udev) eth0 в eth1, а eth1 - например в eth5. Но вот беда - в момент работы скрипта переименования eth0 в eth1, eth1 еще не переименован, поэтому эта операция завершается с ошибкой.

Если сетевух всего 2, такая ситуация маловероятна(но возможна) - скрипты успевают отработать. И она растет с ростом количества сетевух.

TL;DR - в современных дистрибутивах Linux если ты хочешь свои именования сетевух, жестко прибитые по MAC(или какому другому признаку) -> откажись от имен eth*. Я, например, использую lan*.

P.S. Тред не читай - сразу отвечай :-)

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.