A medida que una tecnología crece, siempre tenemos el mismo problema, terminamos metiendo muchos elementos de un mismo tipo en un equipo. Y terminamos teniendo el mismo problema: si cambiamos algo de sitio, o un driver se carga antes que otro, estamos perdidos porque nada funcionará igual.
Preámbulo
El caso más claro es el de los discos duros, las placas base suelen tener un montón de puertos para conectar discos duros. Y, simplemente tendría que dar igual dónde enchufemos cada uno. Incluso si cambiamos un disco duro de sitio una vez instalado el sistema (porque se ha roto el puerto, porque nos viene mejor cambiar las conexiones por la longitud de los cables… o ¡porque lo desarmamos todo y tenemos que enchufar séis discos duros y no queremos apuntar dónde estaba cada uno! Por eso, si miramos un /etc/fstab más o menos reciente, veremos que los discos duros están identificados por un UUID (que podemos obtener si ejecutamos blkid como superusuario).
Del mismo modo pasa con los interfaces de red. Podemos tener varias tarjetas de red enchufadas, varios WiFi y que, cada uno tenga un cometido diferente. Los dispositivos de red, por cable, históricamente han sido siempre eth0, eth1, eth2… y así hasta el final. Pero, ¿qué sucedería si cuando reiniciemos el que antes era eth0, ahora es eth2? seguramente el cable que está conectado a eth0 no tenga acceso a los equipos de eth2 y no funcione nada.
Personalmente, tuve un problema parecido en un miniPC casero que tengo funcionando de router. Este equipo tiene dos interfaces de red: uno integrado en la placa base que está conectado a Internet, y otro enchufado por USB que está conectado a un switch y punto de acceso WiFi. Un día, tras actualizar el equipo en remoto no volví a tener acceso a la máquina hasta que físicamente le conecté un monitor y me di cuenta de que los nombres de los interfaces de red habían cambiado (eth0 pasó a ser eth1 y eth1 se convirtió en eth0). En aquel momento, lo que hice fue cambiar la configuración de los interfaces, cambiar los interfaces en el firewall y listo. Pero, desde udev versión 197 estos dispositivos pasaron a tener un nombre fijo y muy feo, pero pongas el dispositivo como lo pongas, el nombre se mantendrá.
¡Al grano!
Por un lado está bien, por ejemplo, para el caso que comenté antes. Aunque en el ordenador de trabajo, que solo tengo un eth0 y wlan0, pero muchísimos scripts que utilizan interfaces de red fijos, no me gustaba la idea de tener que cambiar los nombres de dispositivos, así que decidí volver a utilizar eth0 y wlan0 como antes.
Nota: Estas modificaciones están hechas para una Ubuntu, para otra distribución, si usamos grub tendremos que buscar el archivo de configuración.
Para ello, editamos el archivo /etc/default/grub y en la línea de GRUB_CMDLINE_LINUX_DEFAULT añadimos net.ifnames=0. Por ejemplo esta línea puede quedarse así (depende mucho del contenido anterior):
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet splash net.ifnames=0" |
Y luego ejecutamos:
Cuando reiniciemos el sistema, volveremos a tener todo como antes.
Más info: Systemd/PredictableNetworkInterfaceNames en Freedesktop.org
Actualizado 07/09/2017: Añadido enlace de Freedesktop. Gracias Osqui.
Foto principal: Seb Zurcher
Pingback: Píldora: Recupera los nombres de los interfaces de red de tu equipo, eth0, wlan0, etc | PlanetaLibre /
Gracias
Estaría bien hacer referencia a https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
Pues si. Muchas gracias. Añadí el enlace 🙂
Los nombres de los interfaces de coreball red pueden variar dependiendo del sistema operativo y la configuración de red, pero es común encontrar interfaces con nombres como eth0, wlan0, lo, entre otros.
The Yellowstone Laramie denim jacket in yellow is a statement piece. It adds a pop of color to any outfit and the attention to detail is impressive. I’m thrilled with my purchase
En lugar de utilizar nombres como eth0, eth1, etc., se introdujo un esquema de nombres basado en reglas que shell shockers asigna nombres predecibles a los dispositivos. Estos nombres suelen basarse en atributos como el número de serie del dispositivo, la ubicación física o el identificador único (UUID) del dispositivo.