viernes, 22 de octubre de 2010

Ver un PC virtual con VMWare Player desde la red

Hoy ha sido un día un interesante de trabajo para mi compañero Miguel Ángel y para mí. Estamos preparando un sistema de integración continua para nuestro proyecto y nos habíamos decidido por probar la solución de TeamCity, la cual ofrece una versión gratuita. La idea era montar este servicio sobre una unidad virtual en uno de los ordenadores de la red para que el resto del equipo tuviese acceso también.

Creamos la unidad virtual con VMWare Player v3.1.2 con Windows 7 Profesional e instalamos TeamCity sin complicaciones. La nueva unidad virtual puede ver sin problemas el resto de los ordenadores de la red así que configuramos TeamCity para que se conecte a los repositorios de código fuente. Todo perfecto… hasta aquí.

El problema

Si como he dicho antes la unidad virtual podía ver los ordenadores de la red, no era lo mismo al revés. Nadie, ni tan siquiera el host que albergaba a la unidad virtual era capaz de ver al equipo, y por tanto, acceder al servicio.

Buscamos por Internet suponiendo que este problema sería bastante común y que fácilmente encontraríamos la manera de configurar el sistema para solucionarlo. El caso es que no es así, y que además, la manera de solucionarlo es bastante… “truqui del almendruqui”.

Buscando la solución

Lo primero que debemos hacer es configurar la unidad virtual con configuración de red NAT como se muestra en la imagen:

clip_image002

Con esto hacemos que la unidad virtual comparta la misma IP que nuestro equipo host. Pero atención, debemos tener en cuenta que cuando instalamos VMware Player, automáticamente te instala un par de adaptadores de red: VMnet1 y VMnet2. Puedes verlo haciendo una llamada a ipconfig desde la consola:

clip_image003

Para hacer que la unidad virtual utilice de manera correcta el adaptador el adaptador, en nuestro caso VMnet8, necesitamos usar la herramienta de VMware: Virtual Network Editor.

Ya te puedes hinchar de buscar que no la vas a encontrar. Parece ser que no viene con la distribución gratuita de VMware Player. ¿O sí?

Conseguir Virtual Network Monitor

Por lo visto, a los chicos de VMware se les ha ocurrido una curiosa manera de “darte” esta aplicación, pero como si no existiera. En realidad la tienen oculta dentro del fichero de instalación. Para conseguirla tienes que seguir estos pasos:

1. Extrae todo el contenido del instalador mediante la llamada:
c:\> VMware-player-3.1.2.<versión>.exe /e vmware_temp

2. Dentro de la carpeta vmware_temp encontrarás un fichero network.cab. Descomprimelo con WinRAR o 7zip y dentro encontrarás el ejecutable que buscas: vmnetcfg.exe

3. Como este ejecutable tiene muchas dependencias con otras librerías, es aconsejable copiarlo a la carpeta donde esté instalado VMware Player.

4. Listo para configurar.

Configuración con Virtual Network Monitor

Una vez arranquemos la herramienta, realizará una búsqueda de todos los adaptadores de redes virtuales que se encuentren en el PC host. Entre ellos encontrará activados VMnet1 y VMnet8. Nosotros nos centramos en VMnet8. El cual configuramos de la siguiente manera:

clip_image005

Debemos asegurarnos que también esté configurado como NAT y que la IP y la máscara de subred corresponden con lo mostrado en la configuración que muestra el host con el ipconfig que le hicimos en VMnet8.

Con esto ya hemos conseguido configurar el adaptador de red que está asociado a nuestra unidad virtual.

Dado que desde fuera del host, no se tiene acceso a esa subred, y por tanto a la unidad virtual, debemos configurar el NAT para que el host haga de puente entre la red y la unidad virtual. Para ello, asociamos un puerto del host con un puerto de la unidad virtual.

Sabiendo que TeamCity lo que expone es un servicio web y por tanto se accede usando el navegador, configuramos el puerto 8080 del host para que se correspondiera con el puerto 80 de la unidad virtual:clip_image006

Es interesante destacar que hay que hacerlo tanto para el protocolo TCP y UDP, sino, no funciona.

Y listo. Cualquier ordenador de la red que acceda desde el navegador a la dirección 192.168.14.248:8080, realmente está accediendo a la subred privada 172.16.37.128:80

A continuación la configuración de red de la unidad virtual:

clip_image008

6 comentarios:

  1. Podrias detallar un poco mas como extraer el network.cab me esta dando problemas

    ResponderEliminar
  2. hola, muchas gracias muy buen articulo pero el vmnetcfg.exe no aparece cuando extraigo mediante el dos. Sabes donde mas lo puedo encontrar? Gracias de antemano

    ResponderEliminar
  3. acá está los dos archivos para poder ejecutar el "Virtual Network Editor" en VMware 6.0.1
    http://ninety9names.blogspot.com/2013/12/download-vmnetcfgexe-and-vmnetcfglibdll.html

    ResponderEliminar
  4. Buenas,

    Muchas gracias por este post. Nos ha sido util para redireccionar los puertos ya que desconociamos esta utilidad en el VMWare.

    Un consejo: no pongais en el NAT Settings, la Gateway IP con la misma direccion que al adaptador virtual VMNet8 ya que os va a dar conflicto de IP en el HOST. Esto es, podeis poner como GW la 172.16.37.2 ya que la 172.16.37.1 la estais usando en el VMNet8.

    Con esto corregis el problema de conflicto de IP'S en el HOST.

    un saludito,
    Klibre

    ResponderEliminar
  5. Ah, y el Virtual Network Editor lo podeis abrir ejecutando el siguiente comando desde los archivos de instalacion del VMWare player en c:\Archivos de Programa\VMWare....:

    rundll32.exe vmnetui.dll VMNetUI_ShowStandalone

    Os recomiendo meter esta linea en un .bat y lo guardais en esa misma carpeta. Asi lo podeis ejecutar siempre que querais abrir el Network Editor.

    Klibre

    ResponderEliminar