4Trabes Historias de una empresa en 100 metros cuadrados

El blog de Trabe Soluciones

Cambiar el nombre de interfaces de red (eth1 por eth0 por ejemplo) en Ubuntu

| | Comentarios

Cuando nuestra ubuntu arranca con una tarjeta de red pinchada, guarda en “algún sitio” un registro que le permite asociar un nombre a cada uno de los dispositivos. La correspondencia se hace directamente entre MAC y nombre. A la primera mac que “ve” nuestra ubuntu se le asigna el nombre eth0, a la segunda eth1 y así sucesivamente. Las asociaciones permanecen en el sistema aún cuando la tarjeta de red ya no está presente. Esto es muy práctico porque asi las posibles configuraciones de cada dispositivo estarían disponibles en el caso de volver a pinchar la tarjeta que hemos quitado. Pero hay escenarios en los que este comportamiento es molesto.

Imaginemos que tenemos guardada una imagen de ubuntu que utilizamos para desplegar nuevas máquinas virtuales. En esa imagen hemos instalado “todo lo básico”, de modo que podemos levantar nuevas máquinas virtuales en tan solo unos minutos. Es más, hemos sido tan cuidadosos que hemos guardado la máquina virtual con una IP fija accesible mediante a un dns local con un nombre como newimage.trabesoluciones.local, y hemos escrito un script que nos permite cambiar la IP y el nombre de host de un solo golpe. Parece sencillo y práctico,…pero al desplegar la nueva máquina virtual, ésta tendrá una MAC virtualizada diferente a la que tenía cuando la guardamos, por lo que el interfaz de red utilizable ya no será ethx, sino ethx+1. Esto genera una falta de determinismo a la hora de pensar scripts, además de que a los más puristas y puntillosos puede darles un síncope cuando vean que la máquina usa eth7 como interfaz de red.

Para evitar llantos e incomodidades, el camarada farruco y yo estuvimos un rato investigando cómo funciona esta asociación mac-nombre a “bajo nivel”. El tema es un poco extenso, así que vamos a quedarnos con lo fundamental: existe un fichero llamado /etc/udev/rules.d/70-persistent-net.rules en el que se almacenan estas asociaciones mac-nombre. Editándolo podremos cambiar los nombres asociados a los distintos interfaces.

En nuestro caso, como lo único que buscamos es que el interfaz sea siempre eth0 para nuestras virtuales, la receta es tan sencilla como borrar este fichero antes de exportar la imagen virtual. Así en el primer arranque de la nueva máquina virtual se escribirá en ese fichero la asociación de la mac actual con el nombre eth0. Más fácil imposible :D

Lo sentimos, pero los comentarios están cerrados

Me ha servido de mucha ayuda, la verdad. Gracias!!!

27/May/2009 Raquel

Muchas gracias! muy util y sencillo

11/Jun/2009 Tania

Y si no existe ese fichero???
como lo hago

21/Oct/2009 Angel

Si no existe ese fichero es posible que no estemos hablando de ubuntu…

05/Nov/2009 Marcos

Saludo, estimadosimos.

Y como le hago para lo contrario de tu receta, tengo un kubunto que quiero que funcione como gateway, pero se aloca y siempre les cambia el nombre de las interfaces, un la mac A puede ser eth0 otro dia eth1 y asi, como hago para que siempre la mac A sea eth0 y la mac B eth1?

14/Jan/2010 Refugio

Como puedo cambiar el nombre de la interfaz de red en Solaris 10

04/Mar/2010 Jsuarez

Muchas thankius desde aCore

@Refugio: no creo que se aloque…has probado a borrar el fichero en cuestión como parte del boot del sistema?

@Jsuarez: aunque tengo el dudoso placer de usar Solaris en algún entorno de despliegue, no tengo el honor de administrar esas máquinas

@yago: me alegro de que lo que funciona en trabe también funcione en acore

10/May/2010 Marcos

muy buen aporte. seguid asi

27/Apr/2011 Jordi

me ayuden por favor tengo que colocar un ip publico en mi servidor , por que ahora estoy utilizando ip local cuando cambio en /etc/network/interfaces no reconoce la salida de ip publico que mas tengo que hacer.

16/Sep/2011 Marcos