LINUX.ORG.RU
ФорумAdmin

порядок определения нескольких сетевых карт


0

1

Собственно возник вопрос, в соответствии с какими предположениями Linux определяет порядок в котором eth0,1,2,3 присваивает сетевым картам на шыне PCI?

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

есть некая машина, с Центосом (2.6.18.*), в которой есть две одинаковые сетевых PCI карты, так вот, та что стоит в 6-м слоте соответсвенно eth0, а в 7-м eth1, если же карты поменять местами, меняются также номера у eth, т.е в 6-м становится eth1, а в 7-м eth0

Была тут тема про что-то, где мы эпично это обсуждали. Загугли

vasily_pupkin ★★★★★ ()

срочно курить udev rules

ktk ★★★★ ()
~ : cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:0a.0/0000:02:00.0 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="1c:6f:65:be:9a:42", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:/sys/devices/pci0000:00/0000:00:04.0/0000:02:00.0 (rtl8192ce)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:04:a6:df:ec:cb", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"
Homura_Akemi ()
Ответ на: комментарий от Homura_Akemi

Еще можно так:

cat /etc/udev/rules.d/net.rules
SUBSYSTEM=="net", ENV{ID_VENDOR_ID}=="0x10ec", NAME="eth0"
SUBSYSTEM=="net", ENV{ID_VENDOR_ID}=="0x10b7", NAME="eth1"
И можно HWAddr менять

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

хм, понятно, немного отвожу в сторону, но если предположить, что я поставлю, ДРУГУЮ сетевую карту, файл

/etc/udev/rules.d/net.rules

пересоздаться?

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

[RedHat 9.0] а если добавить немного некрофилии?

а если речь идет не о КапейкаОС, а допустим о RedHat 9.0 из солнечного 2002 года? Как в нем определяется, udev-a в нем нет?

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

Его надо ручками писать, ясен пень. Либо ставь libastral

так по умолчанию определяется как? В первую загрузку скажем так, после установки? этот файл пишет какойто скрипт?

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

По умолчанию — в случайном порядке. Пока ты правило для udev не напишешь.

а отслеживает ли он изменение состояния? т.е если допустим я добавлю новую карту, правило само добавить?

а если удалю карту, то у меня будет дырка? т.е удаляю eth0, в системе останятся, eth1,eth2, и т.д?

(под рукой нет такого к-ва карт чтобы поиграться)

Windos7 ()

Вопрос интересный, у самого такой возникал.

Я так понимаю, что порядок не случайный, а зависит от номера слота. lspci даёт список каких-то номеров ещё.

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

lspci даёт список каких-то номеров ещё

в принципе центральная часть номера в lspci, совпадает с номером слота в 16-ти разрядной системе счисления, но не всегда совпадает с относительным порядком, в особенности если 2 типа карт

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

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

Когда закупаешь железо под задачу и у тебя оказываются несколько идентичных карт на одном серваке, при том, что правила firewall'а для них должны быть разные — это весело. Вдруг одна сгорит и не определится ядром — что тогда? Много вопросов возникает :)

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

но не всегда совпадает с относительным порядком

Что вы понимаете под «относительным порядком»? Номер слота разве не железно привязан к материнке?

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

Что вы понимаете под «относительным порядком»

ну к примеру находятся (правд 2 типа карт) в слотах 9, 10, 11, 12

а пределяются как eth1 eth0 eth3 eth2

Windos7 ()

Собственно возник вопрос, в соответствии с какими предположениями Linux определяет
порядок в котором eth0,1,2,3 присваивает сетевым картам на шыне PCI?

Механизмов несколько. При отсутствии средств переименования, всё зависит от того, какой драйвер загрузился первым, если один драйвер обслуживает несколько карт, то всё зависит от логики работы конкретного драйвера. У кого-тo, говорят, хаотично, у Intel e100 в порядке следования на шине(ах) PCI. В то время можно было применять ifrename для фиксации имён интерфейсов, но я использовал Intel и не заморачивался.

Переименование, в последнее время, возложено на udev, как тут уже сказали. persistent-net.rules формируется автоматом, по крайней мере, везде, где видел. Новые правила добавляются автоматом (при загрузке), старые надо вычищать руками. Дистрибутив с 2.6.18, впрочем, должен быть из до-udev-ных времён.

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

Да дописать самому

Нет, добавится само в persistent-net.rules Хотя, конечно, можно этот скрипт прибить, и автоматика работать перестанет.

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

Вдруг одна сгорит и не определится ядром — что тогда ?

Если это пугает, следует поправить правила на тему привязки не к MAC, а к PCI ID. udev-у, в общем-то, по барабану.

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

Ни разу не видел такого

persistent-net-generator.rules и write_net_rules гуглится для многих дистрибутивов... В ALT оно работает однозначно и попадалось в других дистрибутивах, которые вижу иногда.

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

Оно через libastral определяет, каким из ethX должна стать очередная сетевушка ?

Первым свободным, разумеется. По порядку.

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

Ну и как оно определит, что тебе надо по-другому ?

Это уже твоя задача - правило поправить, если тебе по-другому надо.

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

Вдруг одна сгорит и не определится ядром — что тогда ?

Если это пугает, следует поправить правила на тему привязки не к MAC, а к PCI ID. udev-у, в общем-то, по барабану.

Это всё хорошо, но не во всех системах есть udev. В Linux — да.

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

Это всё хорошо, но не во всех системах есть udev. В Linux — да.

Тут, вроде, только Linux обсуждали пока ?

AS ★★★★★ ()

Re: [RedHat 9.0] а если добавить немного некрофилии?

В RH 9.0 udev не было, там дравера сами определяли порядок именования сетёвок. Но, там уже была команда «ip» и с помощью «ip link name» можно было переименовывать сетёвки в самописном скрипте. И команды lspci и ethtool там тоже были.

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