logo freedesktop

¿Por qué han cambiado el nombre de las interfaces de red?

Si estás usando una distribución relativamente reciente, probablemente te has dado cuenta de que el nombre de los dispositivos de red han cambiado desde algo como eth0, eth1, wlan0, etc a unos nombres un poco raros.

Hasta hace no mucho, el nombre de las interfaces de red en Linux eran bastante intuitivos. Tenían la estructura ethX si se referían a una red ethernet cableada o wlanX si era una red wifi. Desde hace poco, el nombre de las interfaces han cambiado a cosas como enp2s0 o aún peor, enx78e7d1ea46da.

Este cambio se debe a una modificación el gestor de demonios systemd a partir de la versión 197. A partir de dicha versión, systemd/udev asigna automáticamente los nombres de interfaz de red para Ethernet, WLAN y WWAN.

La razón de este cambio es que el esquema de nombres clásico aplicado por el núcleo consiste simplemente en asignar nombres que comienzan con “eth0″, eth1″, a todas las interfaces a medida que se van cargando los controladores. Lo que ocurre en la actualidad es que el arranque de los controladores no es predecible, es decir, que se puede producir el caso en el que unas veces se inicie antes una interfaz que otra y en el siguiente inicio, el orden cambie. La consecuencia está clara: una misma interfaz puede recibir distintos nombres de forma aleatoria en cada inicio del sistema y eso supone un gran lío para aplicar las configuraciones de red.

Para solucionar este problema se han propuesto e implementado varias soluciones. Al principio se pensó en que la asignación de nombres permanentes del estilo “ethX” se basara en sus direcciones MAC. Esto resultó tener una gran cantidad de problemas como el tener que disponer de un directorio al que acceder o escribir que podría no estar disponible en el arranque. Por otra parte si se arrancaba el sistema desde un Live CD/DVD, no había donde almacenar esa configuración por lo que en cada arranque seguiría existiendo el problema. Además en algunos sistemas como las máquinas virtuales, la direcciones MAC pueden cambiar.

Finalmente, la solución aplicada ha consistido en crear unas políticas de nombrado que se aplicarán en función de las características del hardware. Son las siguientes:
1. Nombres que incorporan información del Firmware o BIOS del hardware (ejemplo: ENO1).
2. Nombres que incorporan información del Firmware o BIOS que proporciona el slot PCI Express (ejemplo: ens1)
3. Nombres que incorporan ubicación física del conector (ejemplo: enp2s0)
4. Nombres que incorporan la dirección MAC de las interfaces (ejemplo: enx78e7d1ea46da)
5. El estilo clásico del kernel (ejemplo: eth0)

Por defecto, systemd nombra las interfaces siguiendo estas directrices: se elige la opción 1 si la información proveniente del firmware está disponible. Si no, se usa la opción 2 sólo si dicha información está disponible. En caso contrario se usa el esquema de 3 y si no es posible, se usa el estilo clásico de 5. La directriz de 4 no se utiliza de forma predeterminada, pero está disponible por si el usuario quiere usarla.

Si quieres conocer todos los detalles de este cambio, puedes echarle un vistazo a la wiki de systemd.