Añadir nuevo comentario

Abrir puertos en VirtualBox

Abrir puertos en virtualbox

Abrir puertos

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 maquina 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

Si nos fijamos en cada línea, veremos que ponemos pcnet. Esto es el dispositivo de red que esta usando la máquina virtual para emular una tarjeta de red del tipo que le hemos dicho en la configuración. Dependiendo de un tipo u otro, tendremos que poner una cadena u otra. Los posibles tipos que hay son los siguientes:

  • Intel Network Adapter: e1000
  • PCNet: pcnet
  • ...

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.

Problemas

Error get MAC

Al encender la máquina virtual después de haber abierto puertos, nos indica este error:

Configuration error: Failed to get the "MAC" value.
VBox status code: -2103 (VERR_CFGM_VALUE_NOT_FOUND).

Solución

Este error aparece cuando abrimos los puertos indicando una tarjeta de red que no es la que le hemos indicado en la configuración a la máquina (pcnet, e1000, ...). Para solucionarlo tendremos que cambiar la tarjeta de red en la configuración de la máquina virtual por la correspondiente que hayamos puesto al abrir el puerto. O sino borrar los datos del puerto abierto y volverlo a poner para la tarjeta de red correcta. (Para mas información leer la guia de esta página)

Fuente