viernes, mayo 01, 2015

VMware Fusion: Redes

Esta es la segunda de una serie de entradas donde quiero describir la configuración de las redes que utiliza VMware Fusion

Fusion tienen tres mecanismos para virtualizar las redes.

  • Usar un puente que se conecta a una de las interfaces físicas de la máquina anfitriona. VMware se encargará de pasar las tramas desde las máquinas virtuales a la red física. La máquina virtual estará en el mismo dominio de difusión que la máquina anfitriona donde se ejecuta Fusion. El proceso donde está esta funcionalidad es vmnet-bridge y vmnet-netifup
  • Redes privadas. Este es el tipo de redes que se describen en el post anterior. Estas redes las controlan el proceso vmnet-dhcpd
  • Redes NATeadas. Son redes privadas donde existe un mecanismo de traducción de direcciones donde las direcciones IP pueden ser enrutadas al exterior al usar este mecanismo para cambiar las direcciones IP origen y destino según corresponda. Además de los procesos del punto anterior, usa el proceso vmnet-natd para realizar estos procesos de tradución.

Cuando se instala por primera vez, Fusion va a crear dos interfaces virtuales, vmnet1 y vmnet8. vmnet1 es la intefaz host only, es una red que no se ve fuera del entorno de virtualización. Varias máquinas conectadas a esta red se verán entre ellas y con la configuración por defecto, con el Mac. vmnet8 es la intefaz NAT que por defecto configura Fusion. Las máquinas conectadas a esta red, por defecto podrán conectarse a otras redes a través de los mecanismos del NAT.

¿Dónde están los diferentes ejecutables de los procesos que he mencionado anteriormente?. Bien, como muchos programas de MacOS X , son un Bundle, es decir un directorio que agrupa un conjunto de recursos, entre otros los ejecutables de los programas. Por defecto, Fusion se instala en el directorio /Applications/VMware Fusion.app. Dentro del mismo, en la ruta Contents/Library nos encontraremos los diversos ejecutables usados para implementar las diferentes funciones del producto. Para el funcionamiento de las interfaces de redes los ejecutables que nos interesan serán vmnet-cli y vmnet-cli.

En la versión 6.x Fusion almacena sus archivos de configuración en el directorio /Library/Preferences/VMware Fusion. De los ficheros que hay en el mismo nos interesará a la hora de configurar la red el fichero networking que es una plantilla a partir de la cual se generarán la información que se almacena en los directorios vmnet* con la configuración de las interfaces. Dentro de cada directorio, existirá un fichero de configuración de dhcp , dhcpd.conf que será utilizado para proveer las direcciones en cada una de las subredes virtuales que se creen. Si además existe NAT en la red, existirá un fichero nat.conf con la configuración de la misma. Estos ficheros de configuración son usados por los procesos de Fusion para poder dar servicio sobre las redes virtuales.

Las interefaces virtuales sólo están presentes en el sistema cuando está ejecutándose el proceso de Fusion. Esto puede comprobarse con la ayuda del programa ifconfig -a , donde veremos interfaces llamadas vmnet1, vmnet8 por defecto si está en funcionamiento.

Una de las primeras tareas de configuración que se pueden plantear en este entorno es cambiar el direccionamiento de las redes que utiliza por defecto Fusion para su intefaz vmnet1, aquella que sólo da conectividad entre las máquinas conectadas a él. Por ejemplo, en mi sistema, si arranco Fusion y en el mac utilizo el ifconfig para ver su configuración:

baldurgate:VMware Fusion root$ifconfig vmnet1
vmnet1: flags=8863 mtu 1500
    ether 00:50:56:c0:00:01 
    inet 192.168.159.1 netmask 0xffffff00 broadcast 192.168.159.255

La red utiliza el direccionamiento 192.168.159.0/24 para proveer direcciones. Supongamos que se quiere configurar usando el direccionamiento 192.168.100.0/24. La manera más sencilla es editar la plantilla /Library/Preferences/VMware Fusion/networking para que utilice dicho rango de direcciones y hacer que el propio Fusion reescriba los ficheros dentro del directorio vmnet1 con ayuda del programa vmnet-cli. Posteriormente reiniciamos usando este mismo programa los procesos encargados de dar soporte a la red virtual. Si se edita la plantilla la sección que nos interesa es esta:

answer VNET_1_DHCP yes
answer VNET_1_DHCP_CFG_HASH 5E190C04568D690AE581FDFE8FF0B201744BF181
answer VNET_1_HOSTONLY_NETMASK 255.255.255.0
answer VNET_1_HOSTONLY_SUBNET 192.168.159.0
answer VNET_1_VIRTUAL_ADAPTER yes

Cambiándose por

answer VNET_1_DHCP yes
answer VNET_1_DHCP_CFG_HASH 5E190C04568D690AE581FDFE8FF0B201744BF181
answer VNET_1_HOSTONLY_NETMASK 255.255.255.0
answer VNET_1_HOSTONLY_SUBNET 192.168.100.0
answer VNET_1_VIRTUAL_ADAPTER yes

Ahora como root nos vamos al directorio del bundle donde están los programas encargados de configurar la red y ejecutamos las siguientes órdenes:

baldurgate:Library root$pwd
/Applications/VMware Fusion.app/Contents/Library
baldurgate:Library root$./vmnet-cli --configure
Stopped DHCP service on vmnet1
Disabled hostonly virtual adapter on vmnet1
Stopped DHCP service on vmnet8
Stopped NAT service on vmnet8
Disabled hostonly virtual adapter on vmnet8
Stopped all configured services on all networks
Backed up existing network settings to backup file "/tmp/vmware.b74CtC"
Restored network settings
baldurgate:Library root$./vmnet-cli --stop
Stopped all configured services on all networks
baldurgate:Library root$./vmnet-cli --start
Enabled hostonly virtual adapter on vmnet1
Started DHCP service on vmnet1
Started NAT service on vmnet8
Enabled hostonly virtual adapter on vmnet8
Started DHCP service on vmnet8
Started all configured services on all networks

He añadido la orden pwd para que se vea el directorio del sistema desde donde se están ejecutando las órdenes. Ahora se puede comprobar con ifconfig que se ha cambiado correctamente la interfaz

baldurgate:VMware Fusion root$ifconfig vmnet1
vmnet1: flags=8863 mtu 1500
    ether 00:50:56:c0:00:01 
    inet 192.168.100.1 netmask 0xffffff00 broadcast 192.168.159.255

Es interesante ver el fichero de configuración para la interfaz vmnet1 que ha generado el sistema. El fichero dhcpd.conf es un fichero de configuración para el servidor de dhcp del ISC. Asigna el rango de direcciones de DHCP que van a recibir las máquinas que se conecten a dicha interfaz y deja configurada la primera direccion fija para que la use el Mac para conectarse con las máquinas virtuales que tengan interfaces en esa red.


Referencias

No hay comentarios: