miércoles, 30 de enero de 2013

Identificación de interfaces de red en Linux bajo VMware

Hoy en día, y aunque pareciese poco concebible hace pocos años, sería raro estar escribiendo sobre administrar un sistema operativo Linux corriendo sobre un servidor físico; la virtualización ha pasado de ser una opción a mirar de reojo y desde la desconfianza a convertirse en prácticamente la única manera eficiente de montar un sistema corporativo.

VMware es un sistema robusto, maravilloso y eficiente. No obstante y pese a su excelente transparencia y múltiples ventajas, a veces surge algún pequeño inconveniente de muy fácil solución pero que nos puede tener entretenidos durante horas. Me ocurrió en cierta ocasión que tuve que clonar una máquina virtual corriendo una distribución Fedora (entiendo que esto os puede ocurrir con otras muchas distribuciones, especialmente todas las de "sabor RedHat" como CentOS, Fedora, Scientific Linux, etc.).


La máquina clonada en este escenario va a presentar con casi toda seguridad problemas para reconocer correctamente las interfaces ethernet (eth1, eth2...) debido a que al clonar la máquina, VMware asigna nuevas direcciones MAC a las interfaces virtuales. Esto es así para garantizar que cada interfaz sigue teniendo un identificador unívoco dentro de cualquier red, física o virtual.

Cabría esperar que en ese caso, el OS simplemente ignoraría las interfaces de origen y detectaría unas nuevas interfaces, bien automáticamente, o bien tras ejecutar un modprobe pcnet32 (por ejemplo etc3, etc4...) pero en la práctica no siempre es tan fácil, pues estas nuevas interfaces quizás no aparezcan con la herramienta system-config-network.

Pasos para la solución rápida


Hay muchas maneras de volver a arreglar esto, pero la manera que me parece más rápida y directa es la siguiente:

  1. Justo tras clonar la máquina, y una vez preparada para su arranque, obtenemos la nueva dirección MAC de las interfaces virtuales de red de VMware. En el caso de ESXi, seleccionamos la máquina a clonar y hacemos right-click y abrimos la opción "Edit settings...". Seleccionamos la interfaz de red y apuntamos la dirección MAC:

  2. Editamos el archivo /etc/udev/rules.d/70-persistent-net.rules y donde aparece la antigua MAC, ponemos la nueva y guardamos:


  3. En el subdirectorio /etc/sysconfig/network-scripts/ buscamos los scripts de configuración de cada interfaz eth. Si la interfaz se llama eth0, el script será ifcfg-eth0. Modificamos también con la nueva MAC y guardamos cambios:
  4. Reiniciamos el servicio de red o bien hacemos un reboot completo de la máquina virtual. Una vez arrancado deberíamos de tener las mismas interfaces ethernet de la máquina original, con los mismos nombres de dispositivo y funcionando perfectamente.