Abrir puertos al exterior en Virtualbox

Virtualbox

  Puede darse el caso de que nos encontremos con la necesidad de tener que acceder a un puerto de nuestra máquina virtual desde el exterior (Por ejemplo, si queremos acceder por ssh a la máquina virtual el puerto 22 tendrá que ser accesible desde el exterior). Para configurar esto no hay de momento forma de hacerlo con la interfaz gráfica de Virtualbox, pero se puede hacer por línea de comandos. Para abrir un puerto al exterior de una máquina virtual (Por ejemplo de nombre windows) tendremos que crear una regla (Por ejemplo, de nombre apache) para abrir un puerto de la máquina virtual (Por ejemplo el 80) para un protocolo (Por ejemplo, TCP) en un puerto de la máquina donde esta instalado el virtualbox (Por ejemplo, el 20080). De esta manera cuando accedamos al puerto que le indiquemos de la máquina que tiene instalado el VirtualBox, estaremos accediendo al puerto indicado de la máquina virtual.

Para hacer esto tendremos que apagar la máquina virtual (apagarlo, no pausarlo). Después ejecutaremos las siguientes ordenes:

>> VBoxManage setextradata "windows" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol" TCP
>> VBoxManage setextradata "windows" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort" 80
>> VBoxManage setextradata "windows" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort" 20080

Para comprobar que se ha introducido bien podemos listar todas propiedades de la maquina virtual (Por ejemplo para la máquina de nombre windows):

>> VBoxManage getextradata windows enumerate
  VirtualBox Command Line Management Interface Version 1.5.6_OSE
  (C) 2005-2008 innotek GmbH
  All rights reserved.
 
  Key: GUI/LastWindowPostion, Value: 425,339,644,531,max
  Key: GUI/Fullscreen, Value: off
  Key: GUI/Seamless, Value: off
  Key: GUI/AutoresizeGuest, Value: on
  Key: GUI/LastCloseAction, Value: save
  Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol, Value: TCP
  Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort, Value: 80
  Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort, Value: 20080

Como podemos observar aparecen las propiedades que hemos introducido. Ahora ya podremos acceder a la máquina virtual a través de nuestra ip y el puerto público.

Como siempre, la última versión de como hacer esto estará actualizada en mi wiki.

temas: 

Comentarios

La verdad es que fácil no es. Espero que en el futuro lo hagan para "dummies" y no nos compliquemos tanto Blum 3

Si señor!

no che, no funcionó. 

tengo instalado el servidor sql en un xp virtualizado, y desde linux (host) quiero haceder al servidor mysql de ese xp. coloque esto:

 

VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/mysql/Protocol" TCP

VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/mysql/GuestPort" 3306

VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/mysql/HostPort" 3306

además el firewall de windows lo tengo desactivado.

no se si me podran dar alguna idea, se los agradesco.

 

fernando

 

 Hola Fernando,

¿Con que usuario te estas intentando conectar? ¿te conectas a través de un programa?

Saludos

A mí este método no me funciona. Me dice:

VBoxManage: error: Could not find a registered machine named 'winxp'

(winxp es el nombre de mi maquina virtual)

 

Pero me funciona al editar el archivo de configuración (/home/[usuario]/.VirtualBox/VirtualBox.xml)

Por si le interesa a alguien, habría que añadir al campo <ExtraData> algo así:

<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort" value="80"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort" value="20080"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol" value="TCP"/>

 

Un saludo

Añadir nuevo comentario