Как я могу заменить сетевое устройство ens33 по умолчанию на старое eth0 в Fedora 19?

22

Я только что установил Fedora 19 на рабочую станцию ​​VMware 9. Сетевым устройством по умолчанию является «ens33» вместо «eth0» в RHEL.

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

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

Ю.М. Цзян
источник
Fedora 19 значительно отличается от RHEL 5.5, так как в вопросе это было помечено как дубликат , а ответ не тот же.
Mattdm

Ответы:

31

Самый простой способ восстановить старый способ, которым Kernel / modules / udev переименовывает ваши интерфейсы Ethernet, - это передать эти параметры ядра в Fedora 19 :

  1. net.ifnames = 0
  2. biosdevname = 0

Для этого выполните следующие действия:

  1. Отредактируйте / etc / default / grub
  2. В конце строки GRUB_CMDLINE_LINUX добавьте " net.ifnames = 0 biosdevname = 0 "
  3. Сохранить файл
  4. Введите « grub2-mkconfig -o /boot/grub2/grub.cfg »
  5. Типа " перезагрузка "

Если вы не указали эти параметры во время установки, вам, вероятно, потребуется настроить и / или переименовать файлы интерфейса в / etc / sysconfig / network-scripts / ifcfg- * .

До Fedora 18 достаточно было просто biosdevname = 0 .

Как пример, в определенной машине, в исчерпывающем исследовании, я получил:

-Нет параметров: NIC определен как « enp5s2 ».
-Parameter biosdevname = 0: сетевая карта определена как " enp5s2 ".
-Parameter net.ifnames = 0: сетевая карта, идентифицированная как « em1 ».
-Параметр net.ifnames = 0 И biosdevname = 0: сетевая карта определена как « eth0 ».

Guilsson
источник
Большое спасибо за подробные шаги! Все, что MathWorks предоставлял мне, было для гораздо более старых версий Fedora.
Доктор Ватсон,
@ dr-watson: вплоть до Fedora 14 ethX использовался по умолчанию для интерфейсов Ethernet. В Fedora 15 было реализовано согласованное именование сетевых устройств . Начиная с Fedora 15 до 18, для сохранения имен ethX было достаточно просто biosdevname = 0 . Добро пожаловать.
Гильссон
3
Это решение также работает на Fedora 20. Спасибо.
эвристика
Также работал над Fedora 21
Eric Grunzke
Ubuntu 14.04, а также.
sjas
9

Вы можете сделать это, используя правило udev, например:

cat > /etc/udev/rules.d/99-rename-to-eth0.rules << EOF
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="$(cat /sys/class/net/ens33/address)", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
EOF
Крис Даун
источник
Спасибо за пример. Для других стоит отметить, что они /sys/class/net/ens33могут отличаться в зависимости от значений, возвращаемых BIOS и найденных в выходных данных lspci -vv | grep -A25 Ethernet. Кроме того, если намерение состоит в том, чтобы использовать eth0в качестве имени, тогда может быть более целесообразным просто указать флаги загрузки ядра, чтобы отключить «предсказуемое» наименование устройства.
Марк Эдингтон
7

В Fedora 20 ситуация, похоже, немного изменилась.

1) аргументы ядра grub.
Да, оба "net.ifnames = 0" и "biodevame = 0" кажутся необходимыми.

2) / etc / sysconfig / network-scripts / ifcfg-ethX
Да, это тоже необходимо.

3) /etc/udev/rules.d/60-net.rules
Если у вас несколько интерфейсов и вы хотите управлять именами каждого устройства, а не позволять ядру делать это по-своему, /etc/udev/rules.d/60 -net.rules кажется необходимым переопределить /usr/lib/udev/rules.d/60-net.rules следующим образом.

# PCI device 0x1011:0x0019 (tulip) {SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:f0:4c:f5:78", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8168 (r8169) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="60:a4:4c:b5:26:48", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

4) yum remove biosdevnameкажется ненужным.

Хиро
источник
1
Спасибо за устранение различных факторов. Похоже, у вас есть опечатка в точке # 1, должно быть "biosdevname", а не "biodevame".
Марк Эдингтон
2

В Fedora 19 это отличается от предыдущих выпусков. Есть две вещи для решения:

  1. Удалите biosdevname, если оно установлено. ( yum remove biosdevnameили вставьте -biosdevnameсвой кикстарт.
  2. Отключить правило udev: ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

Дополнительную информацию можно найти по адресу http://fedoraproject.org/wiki/Features/SystemdPredictableNetworkInterfaceNames.

mattdm
источник
2

Хотя принятый ответ действительно дает решение, которое работает, оно не объясняет, почему ens33оно используется. Приведенные ниже ссылки дают представление о том, почему сетевое устройство названо как-то иначе, eth0и как оно теперь называется в вариантах RHEL 7:

Стоит также отметить, что такие значения, как «33», появляются ens33из значения слота PCI-адаптера, возвращаемого BIOS. Используйте эту команду, чтобы увидеть, какие значения ваша система перечислила для «Физического слота»:

lspci -vv | grep -A20 Ethernet

Дополнительную информацию о части имени «ens» можно найти в исходном коде udev .

Марк Эдингтон
источник
1

Для Fedora-24:

  1. редактировать /etc/default/grub

  2. В конце GRUB_CMDLINE_LINUXстроки добавьтеnet.ifnames=0 biosdevname=0

  3. Сохранить файл

  4. Тип

    grub2-mkconfig -o /boot/grub2/grub.cfg"
    

    или введите

    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    
  5. Тип reboot

Хафиз
источник
Почему сетевое устройство полностью исчезает из системы, если я применяю этот метод к Fedora 26? ifconfigтолько возвращается loи virbr0, но изначально enp4s0больше нет.
ajeh
Чтобы ответить себе: нужно быть осторожным, чтобы изменить все сетевые сценарии, которые будут использоваться с ethNименами, чтобы использовать это соглашение. Я оставил enp4s0в одном сценарии.
ajeh