————– Actualización ————–
Aunque el método usado en este artículo sigue siendo válido, con las nuevas versiones de VirtualBox ya es posible hacerlo todo desde el menu gráfico, cosa que se agradece bastante.
———————————————–
Últimamente, es bastante común montar servidores en máquinas virtuales y ese fue el caso que me ha llevado a crear este pequeño script que, en esta ocasión, es para sistemas Windows y con el conocido sistema de máquinas virtuales VIRTUALBOX.
En este mismo sistema, al igual que en muchos otros, existen varias opciones para la configuración de las tarjetas de red aunque para este caso en concreto nos centraremos en la opción por defecto y la tarjeta que, al menos antes, siempre se habilitaba por defecto, al menos en mi caso, que siempre es conexión mediante NAT y con la tarjeta PC NET.
Antes de nada diré que si ya está familiarizado con el NAT puede saltarse las siguientes lineas ya que, por si hay alguien a quien solamente “le suene” un poco o que directamente desconozca que es o como funciona, trataré de hacer una pequeña explicación.
Lo primero, como siempre es tener la maquina virtual funcionando (Evidentemente
) y una vez tengamos la conexión mediante NAT, deberíamos poder conectarnos a Internet desde el sistema virtualizado sin ningún problema ni paso adicional que configurar la conexión en dicho sistema como si fuera una instalación física más, es decir, añadiendo una IP, máscara, puerta de enlace y DNS en el caso de que nos vayamos a conectar con una dirección estática o simplemente activando DHCP si tenemos algún dispositivo que nos permita una configuración de IPs dinámica. Sea cual sea el modo de conexión, nos es indiferente a la hora de montar el servidor virtualizado siempre y cuando la IP de nuestra máquina física, es decir, la que alberga la virtual tenga una IP fija o algún sistema que nos permita llamarla siempre de la misma forma aún siendo dinámica (Por ejemplo, algún sistema similar a DynDNS, NoIP de cara a internet o simplemente un router que de la posibilidad de asociar una dirección MAC a una direcc concreta de forma que aunque este configurado todo por DHCP siempre de la misma a la misma máquina ).
Se preguntará ¿¿Porque es necesario esto sobre todo cuando ya me conecto a internet?? pues bien, porque ahora mismo la máquina virtual conecta con “hacia fuera”, por decirlo de alguna manera, pero no admite las peticiones que se le hagan desde la red como podrían ser las que se hacen a cualquier servidor así que es necesario realizar NAT (Network Address Translation) de forma que para acceder a este servidor virtualizado tendremos habilitar la correspondiente configuración en la maquina física que lo alberga para que al apuntar a esta (MAquina física) nos redirija a la máquina virtual. Como explicarme nunca fue mi fuerte, vamos con los ejemplos:
Tenemos los siguiente:
Máquina VIRTUAL:
- IP: 10.0.2.15
- Servidor WEB (Puerto 80)
- Servidor SSH (Puerto 22)
Máquina FISICA (Sobre la que corre la Virtual)
- IP: 192.168.1.10
1 | http://192.168.1.10 |
1 | ssh 192.168.1.10 |
1 | VBoxManage setextradata MAQUINA "VBoxInternal/Devices/pcnet/0/LUN#0/Config/PROCESO/"PUERTO O PROTOCOLO"" PUERTO |
1 | VBoxInternal/Devices/pcnet/0/LUN#0/Conf... |
1 | VBoxManage list vms |
- Nombre de servicio y puerto de la máquina fisica
- Nombre del servicio y puerto de la máquina virtual
- Nombre del servicio y PROTOCOLO usado (Normalmente TCP)
Como pequeña nota, solo queda añadir que si tenemos algun sistema de FIREWALL configurado ya sea en la maquina física como en la Virtual, tendríamos que hacer los pasos pertinentes para que no bloquease el tráfico por lo puertos que haya pensado utilizar.
Pues bien, esa fue la teoría y ahora, el como aplicarla ya es tarea suya. Puede simplemente experimentar por su cuenta con el comando basándose esta breve explicación y, como siempre, también tiene la opción cómoda de descargarse el SCRIPT que he creado para automatizar todo el proceso. He de decir que, al menos en mi caso, es lo que estoy usando siempre gracias a la comodidad y rapidez del mismo.
Este Script no tiene que editarlo para cambiar puertos, protocolo o el nombres de servicio ya que se lo preguntará durante la ejecución del mismo. Eso si, funciona teniendo en cuenta que VirtualBox estará instalado en la unidad C: y el directorio por defecto, es decir:
1 | C:\Archivos de programa\Oracle\VirtualBox |
Si ese no fuera su caso, entonces si tendría que editarlo para modificar las primeras lineas, pues son las únicas que hacen referencia a dicha carpeta. Por supuesto, tambien es totalmente libre de editarlo para ver como está hecho
Enlace de descarga del SCRIPT: SCRIPT VIRTUALBOX a SERVER
Un saludo.







Amigo Alvaro,solo una duda;para el caso que mencionas de que existiera un servidor en la maquina host,las peticiones que haga hacia la maquina guest deberian terminar con el puerto que configure para redirigir, es decir tendria que escribir:
http://xxxx.xxx:“puerto”
????
Saludos y muy buena la info
Hola Jaime, correcto. Si el servidor es web, la direcc tendria que ser:
http://IP_maquina_host:puerto
Pero fíjate que no es la direcc de la máquina virtual la que debes poner sino la de la máquina físicia donde está ubicado el servidor virtual. De la misma forma, el puerto que debes incluir es el puerto de la física (HOST) también.
Esto implica tener un poco de cuidado ya que es posible que la máquina fisica que contiene la virtual tenga ya algún servicio usando algún puerto de escucha, por ejemplo, a mi me gusta tener acceso SSH a todas mis máquinas así que para habilitar el acceso a una máquina virtual por SSH de esta forma hay que tener en cuenta que realmente se le están dando 2 accesos SSH a la misma máquina (LA física que contiene la virtual). Cuando se hace la petición al SSH principal, es decir, el mismo SSH de la maquina física, es el Servidor SSH que tengas configurado el que hace la escucha así que seria una conexión normal PERO cuando al intentar conectar a la máquina virtual realmente es una petición a la física PERO quien está escuchando en el puerto asignado es el propio VIRTUALBOX quien se encarga de comprobar que el puerto al que estás intentando conectar está asociado al servicio ssh de la maquina virtual dada y una vez hecha esa redireccion o mapeo (Realmente eso es el NAT) la petición ya es enviada al servidor ssh instalado en la máquina virtual.
En el caso que expones, un http, seria así:
Peticion a la maquina fisica y puerto de la maquina fisica —-> Virtualbox Acepta la petición y lo reenvia a la máquina virtual (Proceso transparente para quien hace la peticion)
http://ip_maquina_fisica:puerto_maquina_fisica —> VirtualBox –> maquina_virtual:puerto
Es muy interesante todo lo vertido en este post. Ya te agregué a mi lector de feeds RSS, suerte
Perfecto, es justo lo que estaba buscando.
Muchas gracias y feliz 2011.
De nada, me alegro de que te sirva.
Un saludo y feliz año!!!
Gracias, bastante claro. Es justo lo que estaba buscando.
Me alegro de que os sea útil. Aún no he probado este script con la última version de Virtual Box, de hecho, aún no he probado la nueva versión (La 4.0) pero si he leido la lista de cambios y tiene unos cuantos respecto a estos temas, como un GUI para gestionar estas cosas y soporte para hacer los mapeados NAT en caliente, al menos sobre el papel pero ciertamente promete bastante.
hola alvaro quisiera saber como configurar un servidor isa un servidor exchange y un servidor dc en virtual box con todos los servicios practcamente para una pequeña red que necesite estos servicios he tratado en virtualbox y no he podido te agradesco tu ayuda gracias
Hola fercho,
¿Podrías concretar un poquito más tu pregunta? Básicamente lo que es la instalación en si, es igual que si fuese una fisica solamente que después hay que tener clara la estructura de la red, IP´s, donde está cada servicio, que unos enlacen con otros…etc
Pero necesitaría que concretases un poco más la pregunta.
No obstante, como apunte ¿Que versión de VirtualBox tienes? Lo digo porque lo que comento en este mismo artículo ya se puede hacer desde el mismo entorno gráfico del propio VirtualBox a partir de la versión 4.
Un saludo
Hola, buscando la solución a mi problema con virtualbox he dado con tu articulo, y me ha sido de gran ayuda, solo que tengo una pequeña duda, ¿ hace falta poner la tarjeta en modo NAT?. Muchas gracias anticipadas.
Hola David,
Ten en cuenta que, aunque puedes seguir haciéndolo como indico en el artículo, con la nueva versión de VirtualBox (VirtualBox 4) incluyen varias características nuevas, entre las que destaca un modo gráfico desde las mismas opciones, para realizar esto mismo y que, al parecer (Digo ‘al parecer’ porque aún no he podido probarlo) no es necesario ni reiniciar la máquina para ir aplicando los cambios.
Ciertamente esta nueva versión de VirtualBox promete mucho y estoy deseando meterme de lleno con ella, nada más que me libere un poco de tiempo.
Solucionado! Muchas gracias, ya tengo la maquina funcionando y en perfectas condiciones
Saludos, amigo no se si me puedes ayudar con esto, pero quiero saber si esto aplica con un modem 3g, pero el inconveniente es que cada ves que marca cambia la ip publica. por modo bridge no se puede porque no me aparece en las interfaces de red. Si me puedes dar una mano te lo agradeceria mucho.
Hola Andrés,
Cuando hablas de un modem 3G entiendo que es porque quieres acceder al servidor instalado en la máquina virtual desde cualquier sitio con internet PERO fuera de tu casa/empresa/sitio donde esté la máquina virtual. Si es desde la lan o red “casera”, o desde el mismo ordenador que tiene la máquina virtual, da igual que la conexión a internet sea a través de un modem.
De ser lo primero y que quieras acceder desde cualquier otro sitio que no sea la propia red/host donde está la VM, es decir, a través de internet, lo primero que deberías hacer es darte de alta en algún servicio del tipo “no-ip” o “dyndns”. Este tipo de servicios, que tienen modalidad gratuita, lo que hacen es permitirte tener un servidor localizado por dns, tras una redirección de subdominio, a pesar de que tenga ip dinámica. Esto es, cada vez que te cambia la IP, este servicio se encarga de actualizarse, a través de un pequeño cliente que deberás instalar previamente, para apuntar a tu nueva IP asignada, de forma que siempre que trates de acceder a tu servidor a través de el subdominio que registres con ellos, no tendrás problema. Dicho subdominio suele ser del tipo:
EscribesLoQueSea.no-ip.com (Siempre y cuando la direcc esté libre, lógicamente)
EscribesLoQueSea.dyn-dns.org (Siempre y cuando la direcc esté libre, lógicamente)
…etc…etc
Si por el contrario es desde la misma lan o el mismo host donde está la máquina virtual que hace de servidor… el tema se simplifica bastante ya que es, básicamente, limitarse a los pasos del artículo que, te recuerdo, puedes configurar de forma gráfica (Sin script) desde el mismo panel de configuracion de VirtualBox a partir de la versión 4 (El artículo salió bastante antes… por desgracia :S)
muchas gracias por responder, si efectivamente era para que el servidor fuera visible desde afuera, configure la dirección en modo gráfico pero no me funciono, Me fue muy útil tu articulo porque investigue y di con esto y solucione lo que quería, la cuestión era que me tomaba en NAT la tarjeta intel por defecto y solo tuve que cambiar pcnet por e1000 como se muestra aquí.
$ VBoxManage setextradata “Server” “VBoxInternal/Devices/e1000/0/LUN#0/Config/guestweb/Protocol” TCP
$ VBoxManage setextradata “Server” “VBoxInternal/Devices/e1000/0/LUN#0/Config/guestweb/GuestPort” 80
$ VBoxManage setextradata “Server” “VBoxInternal/Devices/e1000/0/LUN#0/Config/guestweb/HostPort” 8080
Muchas gracias.
Muchas gracias funciona perfecto.
Hola, pues cuando leí que se podía hacer gráficamente se me aliviano el cerebro xd, y automáticamente capte que la opción rennvío de puertos servía para eso. Esto de las interfáces lo hace todo muy cómodo…saludos
Thank you a bunch for sharing this with all people you actually realize what you are speaking about! Bookmarked. Kindly additionally seek advice from my site =). We could have a hyperlink alternate contract between us
Muchas gracias hace rato que estaba buscando esto, solucionaste mis problemas xD bastante completo y por fin algo util!