Назад | Перейти на главную страницу

Как настроить устройства Ethernet на определенное оборудование на Centos 7

У меня есть система Centos 7, в которой я отключил новую систему именования сетей и вернулся к старой системе (eth0, eth1 и т. Д.). Я сделал это, потому что использую это в настройке RDO Openstack, и для этого нужны одинаковые имена устройств Ethernet на нескольких разных хостах. Некоторые из этих хостов являются виртами под kvm и используют систему именования eth.

После этого каждые несколько перезагрузок мои устройства Ethernet переворачиваются.

На здоровой загрузке я вижу

[11.172339] tg3 0000: 03: 00.0 eth0: Tigon3 [partno (BCM95723) rev 5784100] (PCI Express) MAC-адрес 68: b5: 99: 72: d8: 02
[11.269599] e1000e 0000: 02: 00.0 eth1: (PCI Express: 2,5 ГТ / с: ширина x1) 68: 05: ca: 04: 90: 16

При «плохой загрузке» они будут перевернуты, и e1000e будет иметь статус eth0, а tg3 - eth1.

Пока что я сделал следующее:

После запуска grub2-mkconfig я вижу следующее в /boot/grub2/grub.cfg (что означает, что мои изменения, указанные выше, вступают в силу)

linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root = UUID = eabee081-85f8-4f33-b72a-fbbdc575e010 ro vconsole.keymap = uk crashkernel = auto vconsole.font = latarcyrheb-sun16 rhgb net.ifnames = 0 biosdevname = 0 тихо

Содержимое 70-persistent-net.rules выглядит следующим образом:

ПОДСИСТЕМА == "сеть", ДЕЙСТВИЕ == "добавить", ДРАЙВЕРЫ == "?", ATTR {адрес} ==" 68: B5: 99: 72: D8: 02 ", ATTR {type} ==" 1 ", KERNEL ==" eth", NAME =" eth0 "
ПОДСИСТЕМА == "сеть", ДЕЙСТВИЕ == "добавить", ДРАЙВЕРЫ == "?", ATTR {адрес} ==" 68: 05: CA: 04: 90: 16 ", ATTR {type} ==" 1 ", KERNEL ==" eth", NAME =" eth1 "

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

У меня отключен NetworkManager, и у меня есть запись HWADDR в / etc / sysconfig / network-scripts / ifcfg-eth *.

В ubuntu и более ранних версиях Centos все вышеизложенное работает нормально и надежно.

Однако ничто из этого не приводит к предсказуемым устройствам на этой коробке с Centos 7.

Мы будем очень благодарны за любые советы о том, как привязать эти устройства к именам eth!

Я исследовал дальше и нашел более подробную информацию.
Причиной такого неблагоприятного поведения были условия гонки между ядром и программным обеспечением udev (разработчики заявили в отчете об ошибке).
Поэтому разработчики udev решили удалить надежное именование сетевых адаптеров как ethX и вместо этого использовать менее предсказуемое именование.
Они удалили код, который позволял администратору использовать надежный порядок интерфейсов ethX, а также добавили код, который отказывается использовать любое имя ethX, которое уже использовалось ядром в качестве внутреннего имени NIC.

Таким образом, похоже, вы не можете получить надежный заказ, если хотите больше использовать имена eth0, eth1 и тому подобное.
Некоторые предлагают вместо этого использовать такие имена, как netX.
Это также может сработать, если вы настроите ethX с X больше, чем реальное количество интерфейсов.


Я был первым автором, который думал, что нашел решение, хотя на самом деле оно было временным. После нескольких тестовых загрузок я обнаружил, что устройства Ethernet называются случайным образом, а не так, как я определил в 60-net.rules.

Я опубликовал исходный ответ анонимно, а затем решил зарегистрироваться, чтобы иметь возможность участвовать в большем количестве. Так что мне очень жаль. Ответ, опубликованный ниже, на самом деле НЕ решает проблему, на которую был дан ответ. Это работает для нескольких ботинок, но не работает надежно.


Я добился успеха с минимальным компакт-диском CentOS 7 и следующей стратегией:

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

Я переустановил biosdevname (удалил его).

Я отредактировал / etc / default / grub и добавил biosdevname = 0 AND ifnames = 0 в CMDLINE.

Я переделал конфигурацию grub с помощью: grub2-mkconfig -o /boot/grub2/grub.cfg

Также я импортировал следующие два файла из установки CentOS 6.5:

/lib/udev/rules.d/75-persistent-net-generator.rules

/ lib / udev / write_net_rules

(но это могло не иметь никакого эффекта)

Затем я создал файл с именем 60-net.rules в /etc/udev/rules.d/ с одной строкой для каждой сетевой карты, которая у меня есть:

SUBSYSTEM == "net", ACTION == "add", DRIVERS == "? *", ATTR {address} == "aa: bb: cc: dd: ee: ff", ATTR {dev_id} == "0x0 ", ATTR {тип} ==" 1 ", NAME =" eth1 "

(Конечно, MAC-АДРЕС 'aa: bb: ...' должен быть правильным).

После этого я загрузился, и все заработало.