Cómo cambiar el nombre de las interfaces de red a eth0 en CentOS

En este artículo, aprenderemos a nombrar la interfaz de Linux. Está escrito para distribuciones de Linux basadas en RHEL, como AlmaLinux, CentOS y Rocky Linux. Aprenderás cómo se denomina la interfaz de red en Linux eth(X), ens(X), eno(X), etc.

En primer lugar, aprenderemos el concepto de nomenclatura de una interfaz de red en el sistema Linux, incluyendo el esquema de nomenclatura clásico, biosdevname y la política udev del sistema.

1. Convención de Nombres Tradicional

La Convención de Nombres Tradicional es el esquema de nombres de interfaz tradicional por defecto que proporciona el controlador del núcleo Linux. Como sabemos, la Convención de Nomenclatura Tradicional es eth(n) para dispositivos Ethernet, wlan(n) para dispositivos LAN inalámbricos y usb(n) para usbnet.

En la convención de nomenclatura tradicional, todo el hardware de red será manejado igual por el controlador del núcleo. Es suficiente para informarnos sobre el tipo de conexión, pero no mucho para la naturaleza del hardware al que estás acostumbrado.

2. Biosdevname

El Biosdevname es un proyecto que inició Dell para proporcionar una nomenclatura coherente de los dispositivos de red. El Biosdevname es un ayudante de la utilidad udev que proporciona un mecanismo de nomenclatura coherente para los dispositivos de red basado en la ubicación física del hardware, tal y como sugiere la BIOS del sistema.

A continuación se muestra la política por defecto del esquema de nomenclatura proporcionado por biosdevname:

  • Para los dispositivos de red integrados, se nombrarán como«em<puerto>[_<instancia virtual>]«.
  • Para los dispositivos NIC adicionales, se nombrarán como«p<ranura>p<puerto>[_<instancia virtual>]».

Más detalles:

  • em = dispositivos de red integrados
  • <ranura> = la ranura PCI correspondiente
  • <puerto> = número de puerto de las NIC (si tienes NIC multipuerto)
  • <instancia virtual> = el índice de instancia SRIOV y/o NPAR
  • La‘p’ de la NIC adicional equivale a la ranura PCI y al puerto correspondiente.

3. Reglas Udev de Systemd

Hoy en día, algunas distribuciones populares de Linux como Ubuntu, CentOS y Debian utilizan Systemd como gestor de sistemas y servicios. Y desde la versión 197, a systemd se le han añadido políticas y esquemas de nomenclatura nativos para las interfaces de red que son similares a Biosdevname.

A continuación se muestran 5 políticas de nomenclatura de interfaces de red para sistemas basados en Systemd:

  1. Para los dispositivos de red incorporados, se nombrarán como ‘eno1’, ‘eno2’, etc.
  2. Para incorporar números de índice de ranura de conexión en caliente PCI Express proporcionados por el Firmware/BIOS, se denominará ‘ens1’. Se aplicará si falla la primera política. Utilizado principalmente por la máquina virtual como VMWare y KVM.
  3. Los nombres que incorporan la ubicación física del conector del hardware (ejemplo: enp2s0), se aplican si procede, de lo contrario se retrocede directamente al esquema 5 en todos los demás casos.
  4. Los nombres que incorporan la dirección MAC de la interfaz (ejemplo: enx78e7d1ea46da), no se utilizan por defecto, pero están disponibles si el usuario lo elige.
  5. El esquema de nomenclatura impredecible tradicional del núcleo se utiliza si fallan todos los demás métodos (ejemplo: eth0).

Ahora ya conocemos la convención de nombres de interfaces de Linux.

A continuación, te mostraremos cómo cambiar el nombre de las interfaces de red al tradicional «et0», eth1, etc. Y hay dos formas de hacerlo, cambiar los nombres de las interfaces de red a través de ‘biosdevname’ y a través de ‘systemd udev rules’.

1. Cambiar el nombre de la interfaz a eth0 desactivando Biosdevname

Como sabemos al principio, el biosdevname es una utilidad udev creada por Dell para dar nombre a las interfaces de red según lo sugerido por la BIOS del sistema. Y por defecto, el paquete biosdevname está instalado en el sistema Linux.

Para desactivar el biosdevname en el sistema Linux, tendrás que desactivarlo en el nivel de arranque editando la configuración grub de tu sistema.

Antes de continuar, vamos a comprobar las interfaces actuales en el sistema utilizando el siguiente comando.

ifconfig -a
ip addr

Y a continuación se muestra el resultado.

Como resultado’ tenemos dos interfaces de red ‘ens3’ y ‘ens8’.

A continuación, cambiaremos el nombre de ambas interfaces a ‘eth0’ y ‘eth1’ en nuestro sistema CentOS 8 editando la configuración de grub y la configuración de red de cada interfaz.

– Configurar Grub2

Ve al directorio ‘/etc/sysconfig/’ y edita la configuración ‘grub’ utilizando el editor vim.

cd /etc/sysconfig/
vim grub

En la configuración ‘GRUB_CMDLINE_LINUX’, añade la siguiente configuración para desactivar el biosdevname y el parámetro de kernel net.ifnames.

net.ifnames=0 biosdevname=0

Guarda y cierra.

Después, genera una nueva configuración de grub utilizando el comando ‘grub2-mkconfig’ como se indica a continuación.

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

Y obtendrás el resultado que se muestra a continuación.

– Editar el Script de Red

A continuación, tenemos que cambiar el nombre de ambas interfaces de red en la configuración ubicada en el directorio ‘/etc/sysconfig/network-scripts/’.

Ve a ‘/etc/sysconfig/network-scripts/’.

cd /etc/sysconfig/network-scripts/

Cambia el nombre de ambas interfaces a ‘ifcfg-ethX’.

mv ifcfg-enp0s3 ifcfg-eth0
mv ifcfg-enp0s8 ifcfg-eth1

Después, cambia ambas interfaces a ‘ethX’ en ambos archivos utilizando el comando sed que aparece a continuación.

sed -i -e 's/enp0s3/eth0/g' ifcfg-eth0
sed -i -e 's/enp0s8/eth1/g' ifcfg-eth1

Ahora reinicia el sistema CentOS 8.

sudo reboot

– Pruebas

Una vez que hayas iniciado sesión de nuevo, comprueba las interfaces de red disponibles utilizando el siguiente comando.

ifconfig
ip addr

Y se te mostrará el resultado como se indica a continuación.

Ambas interfaces de red del sistema CentOS 8 han cambiado y ahora utilizan la convención de nomenclatura tradicional. Las interfaces de red cambiaron desactivando el ‘biosdevname’ durante el arranque del sistema.

– Opcionalmente

Si quieres comprobar los detalles de los cambios en el arranque del sistema, puedes ejecutar el siguiente comando.

dmesg | grep -i eth

Verás que el nombre de la interfaz por defecto ha cambiado al nombre tradicional ‘ethX’, cambiado a través de las reglas udev personalizadas.

2. Cambiar el Nombre de la Interfaz a eth0 utilizando las Reglas Udev

Otra forma de cambiar el nombre de la interfaz de red al nombre tradicional, como eth0, etc., es creando las reglas udev personalizadas. Y utilizando las reglas udev personalizadas, las interfaces de red se cambiarán después del sistema.

– Crear reglas Udev personalizadas

Ahora ve al directorio ‘/etc/udev/rules.d/’ y crea la regla personalizada llamada ’70-persistent-net.rules’ utilizando el editor vim.

cd /etc/udev/rules.d/
vim 70-persistent-net.rules

Cambia la dirección mac y la interfaz por defecto ‘ens3’ y ‘ens8’ por las tuyas y pégalas en ella.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:6c:a8:e6", ATTR{type}=="1", KERNEL=="ens3", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:97:cf:33", ATTR{type}=="1", KERNEL=="ens8", NAME="eth1"

Guarda y cierra.

– Edita el Script de Red

A continuación, ve al directorio ‘/etc/sysconfig/networ-scripts’.

cd /etc/sysconfig/network-scripts/

Cambia el nombre de ambas interfaces a ‘ifcfg-ethX’.

mv ifcfg-enp0s3 ifcfg-eth0
mv ifcfg-enp0s8 ifcfg-eth1

Después, cambia ambas interfaces a ‘ethX’ en ambos archivos utilizando el comando sed que aparece a continuación.

sed -i -e 's/enp0s3/eth0/g' ifcfg-eth0
sed -i -e 's/enp0s8/eth1/g' ifcfg-eth1

Ahora reinicia el servidor CentOS 8.

sudo reboot

– Pruebas

Una vez que hayas iniciado sesión de nuevo, comprueba todas las interfaces de red disponibles utilizando los siguientes comandos.

ifconfig
ip addr

Y obtendrás la nueva interfaz ‘ethX’ que se ha asignado.

– Opcionalmente

Si quieres comprobar detalles sobre los cambios en el arranque del sistema, puedes ejecutar el siguiente comando.

dmesg | grep -i eth

Verás que el nombre ‘ensX’ se ha cambiado por el nombre tradicional ‘ethX’, cambiado mediante las reglas udev personalizadas.

Referencia

Scroll al inicio