¿Cómo puedo cambiar el dispositivo de red predeterminado "ens33" a antiguo "eth0" en Fedora 19?

22

Acabo de instalar un Fedora 19 en la estación de trabajo VMware 9. El dispositivo de red predeterminado es "ens33" en lugar de "eth0" en RHEL.

La razón por la que tengo que usar "eth0" es que el componente de licencia de uno de nuestros productos debe estar vinculado con "eth0".

Hay algunas publicaciones que discuten sobre problemas similares, la mayoría de los cuales son para sistemas operativos más antiguos. No he encontrado uno que coincida exactamente con mi situación.

YM Jiang
fuente
Fedora 19 es significativamente diferente de RHEL 5.5, ya que en la pregunta se marcó un duplicado y la respuesta no es la misma.
mattdm

Respuestas:

31

La forma más fácil de restaurar la antigua forma en que Kernel / modules / udev cambia el nombre de sus interfaces ethernet es proporcionar estos parámetros del kernel a Fedora 19 :

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

Para hacerlo, sigue estos pasos:

  1. Editar / etc / default / grub
  2. Al final de la línea GRUB_CMDLINE_LINUX agregue " net.ifnames = 0 biosdevname = 0 "
  3. Guarda el archivo
  4. Escriba " grub2-mkconfig -o /boot/grub2/grub.cfg "
  5. Escribe " reiniciar "

Si no proporcionó estos parámetros durante la instalación, probablemente necesitará ajustar y / o cambiar el nombre de los archivos de interfaz en / etc / sysconfig / network-scripts / ifcfg- * .

Hasta Fedora 18 , solo biosdevname = 0 era suficiente.

Como ejemplo, en cierta máquina, en una investigación exhaustiva, obtuve:

-No hay parámetros: NIC identificada como " enp5s2 ".
-Parameter biosdevname = 0: NIC identificada como " enp5s2 ".
-Parameter net.ifnames = 0: NIC identificada como " em1 ".
-Parameter net.ifnames = 0 AND biosdevname = 0: NIC identificada como " eth0 ".

Guilsson
fuente
¡Muchas gracias por los pasos detallados! Todo lo que MathWorks me estaba proporcionando era para versiones mucho más antiguas de Fedora.
Dr. Watson el
@ dr-watson: Hasta Fedora 14, ethX era el nombre predeterminado para las interfaces ethernet. En Fedora 15, se implementó la denominación coherente de dispositivos de red . Desde Fedora 15 hasta 18, solo biosdevname = 0 fue suficiente para mantener el nombre de ethX. De nada.
Guilsson
3
Esta solución también funciona en Fedora 20. Gracias.
heuristicus
También trabajó en Fedora 21
Eric Grunzke
Ubuntu 14.04 también.
sjas
9

Puedes hacer esto usando una regla udev, así:

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
Chris Down
fuente
Gracias por el ejemplo Para otros, vale la pena señalar que /sys/class/net/ens33puede ser diferente dependiendo de los valores devueltos por la BIOS y encontrados en la salida de lspci -vv | grep -A25 Ethernet. Además, si la intención es usar eth0como nombre, entonces puede ser más apropiado especificar los indicadores de arranque del núcleo para deshabilitar la denominación "predecible" del dispositivo.
Mark Edington
7

En Fedora 20, las cosas parecen haber cambiado un poco más.

1) argumentos de kernel grub
Sí, tanto "net.ifnames = 0" como "biodevame = 0" parecen necesarios.

2) / etc / sysconfig / network-scripts / ifcfg-ethX
Sí, estos también son necesarios.

3) /etc/udev/rules.d/60-net.rules
Si tiene varias interfaces y desea controlar el nombre de cada dispositivo en lugar de dejar que el núcleo lo haga a su manera, /etc/udev/rules.d/60 -net.rules parece necesario anular /usr/lib/udev/rules.d/60-net.rules de la siguiente manera.

# 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 biosdevnameparece innecesario.

hiro
fuente
1
Gracias por desglosar los diversos factores. Parece que tiene un error tipográfico en el punto n. ° 1, debe ser "biosdevname" y no "biodevame".
Mark Edington el
2

Si bien la respuesta aceptada proporciona una solución que funciona, no explica por qué ens33se está utilizando. Los enlaces a continuación proporcionan información sobre por qué el dispositivo de red recibe un nombre diferente eth0y cómo se nombra ahora en las variantes de RHEL 7:

También vale la pena señalar que los valores como "33" que aparecen ens33provienen del valor de la ranura del adaptador PCI devuelto por el BIOS. Use este comando para ver qué valores ha enumerado su sistema para "Ranura física":

lspci -vv | grep -A20 Ethernet

Se puede encontrar información adicional sobre la parte "ens" del nombre en el código fuente de udev .

Mark Edington
fuente
1

Para Fedora-24:

  1. Editar /etc/default/grub

  2. Al final de la GRUB_CMDLINE_LINUXlínea, agreguenet.ifnames=0 biosdevname=0

  3. Guarda el archivo

  4. Tipo

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

    o escriba

    grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
    
  5. Tipo reboot

Hafiz
fuente
¿Por qué el dispositivo de red desaparece por completo del sistema si aplico este método a Fedora 26? ifconfigsolo regresa loy virbr0, pero originalmente enp4s0ya no está allí.
ajeh
Para responderme a mí mismo: debo tener cuidado de cambiar todos los scripts de red que se usarán con los ethNnombres para usar esa convención. Me quedaba enp4s0en un guión.
ajeh