LINUX.ORG.RU
ФорумAdmin

Задать имена сетевым картам

 ,


0

1

Подскажите одну вещь. Вот не могу задать правильные имена сетевым картам. Нужно чтобы WAN-интерфейс назывался eth0, а LAN-интерфейс назывался eth1.
Дистрибутив - Altlinux T7 KDesktop
Ядро запускается с параметром net.ifnames=0
Создан файл правил UDEV /etc/udev/rules.d/70-persistent-net.rules в котором:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="r8169", ATTR{address}=="44:8a:5b:d3:fa:31", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="8139too", ATTR{address}=="4c:00:10:3a:ca:90", NAME="eth1"
NetworkManager отключён, конфигурирование сети осуществляется исключительно через etcnet.
Всякие там iftab отсутствуют.
«journalctl -b | grep eth» выдаёт следующее:
май 07 04:17:44 iskatel-dsk kernel: 8139too 0000:03:06.0 eth0: RealTek RTL8139 at 0xffffc9000063e000, 4c:00:10:3a:ca:90, IRQ 21
май 07 04:17:44 iskatel-dsk kernel: r8169 0000:04:00.0 eth1: RTL8168evl/8111evl at 0xffffc90000676000, 44:8a:5b:d3:fa:31, XID 0c900800 IRQ 73
май 07 04:17:44 iskatel-dsk kernel: r8169 0000:04:00.0 eth1: jumbo features [frames: 9200 bytes, tx checksumming: ko]
май 07 04:17:45 iskatel-dsk systemd-udevd[705]: error changing net interface name eth0 to eth1: File exists
май 07 04:17:45 iskatel-dsk systemd-udevd[696]: error changing net interface name eth1 to eth0: File exists
май 07 04:17:59 iskatel-dsk kernel: 8139too 0000:03:06.0 eth0: link down
май 07 04:18:01 iskatel-dsk network[2151]: Starting eth0: ....?????!.OK
май 07 04:18:01 iskatel-dsk kernel: r8169 0000:04:00.0 eth1: link down
май 07 04:18:01 iskatel-dsk kernel: r8169 0000:04:00.0 eth1: link down
май 07 04:18:03 iskatel-dsk kernel: r8169 0000:04:00.0 eth1: link up
май 07 04:18:04 iskatel-dsk network[2151]: Starting eth1: ....???.dhcpcd[2287]: version 5.6.8 starting
май 07 04:18:04 iskatel-dsk network[2151]: dhcpcd[2287]: eth1: broadcasting for a lease
май 07 04:18:04 iskatel-dsk dhcpcd[2287]: eth1: broadcasting for a lease
май 07 04:18:04 iskatel-dsk network[2151]: dhcpcd[2287]: eth1: offered 192.168.0.1 from 192.168.0.254
май 07 04:18:04 iskatel-dsk dhcpcd[2287]: eth1: offered 192.168.0.1 from 192.168.0.254
май 07 04:18:04 iskatel-dsk network[2151]: dhcpcd[2287]: eth1: acknowledged 192.168.0.1 from 192.168.0.254
май 07 04:18:04 iskatel-dsk dhcpcd[2287]: eth1: acknowledged 192.168.0.1 from 192.168.0.254
май 07 04:18:04 iskatel-dsk dhcpcd[2287]: eth1: leased 192.168.0.1 for 864000 seconds
май 07 04:18:04 iskatel-dsk network[2151]: dhcpcd[2287]: eth1: leased 192.168.0.1 for 864000 seconds
Не могу понять одного, почему у меня в 04:17:44 ядро присваивает имена интерфейсам, это же задача не ядра, а udev, ядро должно только модули загрузить?

★★★★★

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

Нужно чтобы WAN-интерфейс назывался eth0, а LAN-интерфейс назывался eth1

логично, чё

anonymous
()

почему у меня в 04:17:44 ядро присваивает имена интерфейсам, это же задача не ядра, а udev, ядро должно только модули загрузить?

А когда UDEV-а не было, эти имена кто тогда присваивал устройствам?

UDEV позволяет использовать имена, альтернативные тем, что назначены ядром.

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

сначала ядро присваивает имена, а udev потом уж переименовывает

armbox
()
Ответ на: комментарий от VitalkaDrug

Хорошо, а почему на старых ядрах такого не было?

май 07 04:17:45 iskatel-dsk systemd-udevd[705]: error changing net interface name eth0 to eth1: File exists
май 07 04:17:45 iskatel-dsk systemd-udevd[696]: error changing net interface name eth1 to eth0: File exists
Как добиться того чего я хочу?
Почему ядро сначала обнаруживает сетевой интерфейс карты расширения, а только потом встроенный в материнскую плату, а не наоборот?

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

И что ещё не пойму. Теперь, когда udev из отдельного демона стал частью systemd, что правила каталога /etc/udev/rules.d стали аттавизмом? Раньше файлы правил сами создавались при загрузке, если их удалить.

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

Странно, но на старых системах - без systemd и с полноценным udev - я с таким поведением ни разу не сталкивался, хотя к переименованию интерфейсов через правила udev прибегал довольно часто. Возможно это особенность поведения udev в составе systemd?

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

Порядок обнаружения определяется порядком загрузки модулей. От чего зависит порядок загрузки модулей точно не знаю, в кишках ядра не копался.

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

тут проблема не в systemd, болезный. ты используешь имена интерфейсов, уже занятые ядром. ну впрочем, чего ожидать от хейтера

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

Я и без капитанов-очевидностей вижу, что имена уже заняты ядром, но почему-то на init-based дистрибутивах это не было помехой, переименовывались только так.

Порядок обнаружения определяется порядком загрузки модулей. От чего зависит порядок загрузки модулей точно не знаю, в кишках ядра не копался.

Если это действительно так, то дальнейшее исследование процесса загрузки упрощается. Модули загружаются не сами по себе, их загружает скрипт, осуществляющий вызовы команды modprobe, во всяком случае в sysVinit так было. Что тут за это ответственно, может systemd-modules-load.service?

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

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

Но, ядро всегда назначало имена сетевым интерфейсам и эти имена всегда могли получатся в произвольном порядке, например, если две сетёвки с одинаковым чипом (драйвером в ядре), то eth0 мог стабильно назначаться той, у которой активный линк (переткнул патч-корд и стало по-другому).

Как вам уже посоветовали, переименовывайте их в другие имена, например ″wan″ и ″lan″. А если хочется ″eth0″ и ″eth1″, то в одном файле переименовывайте в ″eth0->lan″ и ″eth1->wan″, а в следующем файле ″wan->eth0″, ″lan->eth1″.

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

А какая в старом udev была необходимость в самосоздавании файлов правил в /etc/udev/rules.d при загрузке не знаете?

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

Необходимость обычная — чтобы необльшие изменения конфигурации системы не влияли на остальное. /etc/udev/rules.d/70-persistent-net.rules, гарантировал, что если мы убрали из загрузки модуль (драйвер) сетёвки или физически удалили ещё из системы, то остальные сетёвки останутся при своих именах и сетевые адреса/правила в iptables не будут применены к не тем интерфейсам.

Это устраивало почти всех, но кому-то не нравилось, что на его модном сервере сетёвки подписаны на корпусе как LAN1 и LAN2, а в Линуксе они называются не так. Потому эту схему именования (переименования) изменили на consistent http://en.wikipedia.org/wiki/Consistent_Network_Device_Naming , а дальше в 2013 «развили» predictable до http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceN...

Кстати, а у вас там разве по умолчанию сетёвки называются eth0, а не enp2s0?

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

Кстати, а у вас там разве по умолчанию сетёвки называются eth0, а не enp2s0?

Если ядро запускать с параметром net.ifnames=0 - то по умолчанию будет eth0.

А если хочется ″eth0″ и ″eth1″, то в одном файле переименовывайте в ″eth0->lan″ и ″eth1->wan″, а в следующем файле ″wan->eth0″, ″lan->eth1″.

Спасибо, помогло!

sunny1983 ★★★★★
() автор топика
19 июля 2015 г.
Ответ на: комментарий от sunny1983

Хорошо, а почему на старых ядрах такого не было?

Это не на старых ядрах, это в новом udev (привет, Поттеринг и Ко). Решили, что блок переименования надо выкинуть. В ALT, в прошлом году, это новшество от разработчиков systemd откатили. В p7/t7 тоже, так что, достаточно было обновиться.

systemd-201-alt1.M70P.4 -> p7:

* Fri Aug 29 2014 Mikhail Efremov <sem@altlinux> 201-alt1.M70P.4
- udev: Fix old-style name interfaces renaming (closes: #29280).

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

Раньше файлы правил сами создавались при загрузке, если их удалить.

Они и сейчас пытаются создаваться, но родилось некоторое количество грабель, в частности, именно с persistent-net.rules:
http://bugzilla.altlinux.org/29282

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