LINUX.ORG.RU

Как зафиксировать порядок сетевых карт

 


0

2

Есть 2 сетевые карты: встроенная и pci
Они всегда получают имена enp5s2 и enp3s0
Но их порядок меняется при загрузке «случайным» образом т.е.:
либо
2: enp3s0:
3: enp5s2:
либо
2: enp5s2:
3: enp3s0:

Как зафиксировать их ?

Если смотреть dmesg, то он их находит в разном порядке, сейчас:

dmesg | grep "renamed from"
[    1.126924] r8169 0000:03:00.0 enp3s0: renamed from eth0
[    1.140571] via-rhine 0000:05:02.0 enp5s2: renamed from eth1


kubuntu 19.04

UPD: МАК адреса не меняются для имен, сетевые карты не передергиваю

★★★★★

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

Не может быть, указанные тобой имена получаются при новом режиме именования «предсказуемых» имён, которые выдаются по номеру шины, номеру устройства на шине, прочим неизменным параметрам.

И эти имена устройств всегда одинаковы.

А вот при старой схеме eth0, eth1, ethn как раз могла быть ситуация, что сетевые имена карт менялись.

Сравни мак адреса.

Если ты не переставляешь сетевые карты из одного pci-e разъёма в другой, то имена меняться не будут.

anonymous
()

Они всегда получают имена enp5s2 и enp3s0
Но их порядок меняется при загрузке «случайным» образом

Забавно... Эти enp и придумывались, чтобы такого не было.

AS ★★★★★
()

eth0 и eth1 могут быть разными для каждой из карт при каждой загрузке, а вот enp3s0 и enp5s2 будут сопоставлены не этим именам, а самим устройствам всегда одинаково.

Проверяй по mac адресу, а не по имени eth0 и eth1.

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

Он, скорее всего видит, что у него в одном случае enp5s2 сопоставляется с eth0, а в другом с eth1 и это нормально.

anonymous
()

Команда servers.com делает так (для debian)


Переименуйте интерфейсы в /etc/udev/rules.d/70-persistent-net.rules:

SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="b4:96:91:00:00:00",ATTR{type}=="1",KERNEL=="eth*",NAME="int1"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="b4:96:91:00:00:01",ATTR{type}=="1",KERNEL=="eth*",NAME="int2"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="b4:96:91:00:00:02",ATTR{type}=="1",KERNEL=="eth*",NAME="ext1"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="b4:96:91:00:00:03",ATTR{type}=="1",KERNEL=="eth*",NAME="ext2"
targitaj ★★★★★
()
Ответ на: комментарий от anonymous

привязка к маку

мак не меняется, зачем его перепривязывать ?

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

Эти enp и придумывались, чтобы такого не было.

Ну у него железо кривое, что поделать. Там можно выбрать и другие политики именования.

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

И где об этом сказано? Тогда у тебя все правильно работает.

Как ты понимаешь в одном случае у тебя изначальное имя одной и другой сетевой карты eth0 и eth1, а потом наоборот eth1 и eth0, видимо от этого меняется и порядок в выводе утилит.

Переписывай скрипты, если они завязаны на порядок, это неправильно.

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

Забавно... Эти enp и придумывались, чтобы такого не было.

так и нет «этого»
имя всегда соответствует своему МАК
но порядок их меняется

да, обычно это незаметно, но мне надо «зафиксировать» для удобства

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

Переписывай скрипты, если они завязаны на порядок, это неправильно.

не хочу, это принципиальный момент

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

имя всегда соответствует своему МАК
но порядок их меняется

Не понял. В выводе ip a меняется, а IP-адреса на своих местах остаются?

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

И что с того?

моя кривая программа не работает

вопрос не в починке моей программы, а в возможности зафиксировать порядок enp5s2 и enp3s0

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

В выводе ip a меняется что ли?

да - меняется индекс

все остальное: имена и мак адреса на своих местах

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

о как, наговнокодил ты, а виновата система инициализации? экий ты затейник :)

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

моя кривая программа не работает вопрос не в починке моей программы, а в возможности зафиксировать порядок enp5s2 и enp3s0

Выкладывай на говнокод и страдай :))) думаю ты не заставит биос определять устройства в том порядке, котором тебе хочется. Пиши прокладку на баше, которая сортирует вывод ip add или чего тебе там надо в нужном тебе порядке.

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

Запатчить ip, что бы сортировал по имени

чтото типа этого я и сделал, но неудобно )

вот и подумал - нельзя ли зафикцсировать
если виноват bios, тогда сложно или невозможно
буду думать чтото иное

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

если виноват bios, тогда сложно или невозможно

модуль ядра, в общем случае, случайным образом ethN назначает, а ещё само ядро в случайном порядке модули дёргает, если сетевые карты разные. Бери одинаковые карты Intel, тогда драйвер будет назначать всегда одинаково. Это не документировано вроде, но я только такое поведение видел и у e100, и у e1000. Вот про e1000e и прочие igb не скажу - тут меня это уже не очень интересовало, так как udev переименовывал ко времени их появления.

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

Оч сложно представить ситуацию, в которой решать проблему через жопу будет быстрее

есть, есть такие проблемы и решения )

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

Выложил два dmesg, где сетевые меняются индексами:

А смысл в таком объёме? В исходном сообщении достаточно. Ну заблэелисть r8169 и via-rhine, а в самом начале грузи их руками в строгом порядке. Может поможет.

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

А смысл в таком объёме?

была мысль, что порядок ломает чтото еще ранее

Ну заблэелисть r8169 и via-rhine

возможно да

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

Но виноват ты и твой кривой алгоритм разбора вывода ip a.

это безусловно, неоспоримо и неизменно

потому и надо менять чтото вовне )

x905 ★★★★★
() автор топика

Пофиксил свой кривой скрипт, он стал еще кривее, но и так сойдет

x905 ★★★★★
() автор топика

Падажжи, то есть у тебя сейчас одинаковые имена детерминистично сопоставляются одинаковым картам (как и должно быть), но ты хочешь, чтобы имена раздавались случайным образом (в порядке обнаружения карт ядром)?

Не могу себе представить, зачем это нужно, но если ты хочешь — создай в /etc/systemd/network два .link-файла вида:

# /etc/systemd/network/50-eth0.link
[Match]
OriginalName=eth0

[Link]
NamePolicy=
Name=en<имя1>

и

# /etc/systemd/network/50-eth1.link
[Match]
OriginalName=eth1

[Link]
NamePolicy=
Name=en<имя2>
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

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

я хотел чтобы enp5s2 всегда имел индекс №2 (индекс №1 всегда имеет lo, см. вывоз `ip a`), а enp3s0 всегда имел индекс №3
но как я понял это происходит от порядка обнаружения бивасом эти карт, а уж как он их обнаружает и почему иногда в разном порядке - это его дело и наверно тут я бессилен

мак адреса и ip адреса на этих двух интерфейсах не прыгают, так и должно быть и есть

x905 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.