Udev: переименование моего сетевого интерфейса


20

Я только что установил RHEL 6.3 на сервер Dell 1950. Этот сервер как два порта GBit, Gb0 и Gb1.

По какой-то непонятной причине udevрешили назвать Gb0 eth1 и Gb1 eth0 . Это определенно не очень хорошая находка для меня и просто дает путаницу.

Поэтому я изменил конфигурацию в /etc/udev/rules.d/70-persistent-net.rules:

# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \
  ATTR{address}=="00:20:19:52:d3:c0",           \
  ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \
  ATTR{address}=="00:20:19:52:d3:be",           \
  ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Я просто изменил поле «ИМЯ» в файле, чтобы отразить то, что я хочу. Я перезагрузил сервер, и он не работал.

В dmesgжурнале я могу прочитать следующее:

udev: renamed network interface eth1 to rename5
udev: renamed network interface eth0 to eth1
udev: renamed network interface rename5 to eth0

Есть идеи, что здесь не так? Почему udevпереключение так? У меня есть другой аналогичный сервер, где у меня нет этой проблемы.


так какое задание сейчас? все еще Gb0 == eth1 & Gb1 == eth0?
umläute

один раз проверить, grep -R 'rename5' /etc/udev/rules.d/потому что в журналах, почему он показывает, rename5есть ли другие правила для того же?
Рахул Патил

Я сделал то же самое для сетевых интерфейсов, и в журнале это точно так же показано (если вы следуете логике в нем, он просто присваивает поддельное имя исходному eth1, чтобы он мог переименовать исходный eth0 в eth1). Так что по логу все должно быть в порядке. Вы уверены, что имена еще не в порядке?
Загримсан

Назначение все еще неверно: Gb0 == eth1 & Gb1 == eth0. Это как изменения, которые я сделал в файле, не применяются. У меня нет никаких следов rename5 в /etc/udev/rules.d/. То, что я понимаю, это когда boot boot eth0 и eth1 загружаются, но udev переключает их. eth0 => eth1 и eth1 => eth0
Уго

Вы нашли решение? Я тоже борюсь с этой проблемой. При нормальной загрузке я получаю p1p1 и p1p2. Но так как я подключил сетевой кабель к p1p2, при некоторой загрузке (не все, что странно), я получаю p1p1 и rename3!?!? Udev переименовывает eth1 в rename3 вместо p1p2 по любой причине. Это, конечно, нарушает конфигурацию сетевого i / f и брандмауэра X- (Не то, чтобы я был на Ubuntu
Huygens

Ответы:


9

Хотя это довольно поздно, я исправил проблему, удалив

KERNEL="eth*",

часть правила в /etc/udev/rules.d/70-persistent-net.rulesфайле. Это работает, потому что, как только UDEV переименовал устройство в «rename *», эта часть остановит сопоставление правила. Таким образом, удаление этого позволяет назначить правильное имя правильному устройству независимо от того, как UDEV вызвал его в это время.


Это решило это для меня также на Ubuntu 14.04. Точно такое же поведение, как и у OP (за исключением того, что переименование было в pXpY).
ndemou

9

В моем случае проблема заключается в том, что mac-адрес для каждого интерфейса был задан в трех файлах:

/etc/udev/rules.d/70-persistent-net.rules
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1

Нам нужна согласованность между файлом ifcfg и net.rules для MAC-адреса.


1
/etc/sysconfigнаходится на Redhat / Centos Linux. На Ubuntu эти файлы будут под/etc/network/if-up.d
nmgeek


1

Вы пытались создать бланк /etc/udev/rules.d/80-net-name-slot.rules?

начиная с Udev v197, udev реализовал предсказуемые имена сетевых интерфейсов, создав пустой файл по этому пути и затем перезагрузив его, вы должны вернуть имена интерфейсов к тому, что они были.

я ответил на аналогичный вопрос по адресу: Creating eth0 with consistent network device naming


1
Это исправило два из трех моих сетевых устройств. Вместо пустого файла я создал ссылку на / dev / null. Я ожидаю, что любой подход будет работать.
MrMas

Похоже, что в v210 произошли изменения в том, что файл был удален из systemd, если я правильно читаю: github.com/systemd/systemd/commit/…
nhed

0

Это также может произойти, потому что eth0, eth1, wlan0, wlan1 и т. Д. Являются стандартными именами ядра (в случае непостоянных имен схем). В документации udev сказано:

ИМЯ

Имя, используемое для сетевого интерфейса. См. Systemd.link (5) для механизма более высокого уровня для установки имени интерфейса. Udev не может изменить имя узла устройства, могут быть созданы только дополнительные символические ссылки.

Поэтому никогда не используйте имена eth *, wlan * и т. Д. Для правил udev.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.