MeltIT
22Feb/140

VirtualBox: Conectar host a invitado

Estoy probando sistemas operativos por virtualización. Hoy estaba instalando Gentoo y quería conectarme mediante SSH (host: Arch Linux).

Aquí surgió un problema, obtenía un "Connection refused" al intentar conectarme. Lo mismo los pings no respondían.

Encontré el problema: La placa de red viene configurada en NAT por defecto. Con lo cual, desde el invitado (guest) si podía hacerle ping al host.

Hay dos opciones de configurar para hacer la conexión.

Reenvío de puertos:

Dentro de Configuración > Red.

El adaptador debe estar en "Conectado a: Nat". Luego en Avanzadas, está el botón Reenvío de puertos. Aquí se configura una redirección de un puerto del invitado hacía un puerto local para el Host (anfitrión):

  • Nombre: Una etiqueta para la regla.
  • Protocolo: TCP/UDP. Probablemente sea TCP (ej, SSH, httpd), pero dependé del programa que se quiera conectar.
  • IP anfitrión: La IP a la que apuntaremos en el Host para conectarnos. Utilizaremos: 127.0.0.1.
  • Puerto anfitrión: El puerto al que deberá conectarse el host, por ej 2222.
  • IP invitado: La dirección IP del invitado, a donde apuntará la conexión que se realize en el host, por ej 10.0.2.15.
  • Puerto invitado: El puerto destino. Ej. SSH es 22, o httpd 80.

Este método permite agregar reglas para puertos específicos. En el ejemplo utilizado para SSH, bastará luego conectarse desde el host mediante ssh -p 2222 root@127.0.0.1

Adaptador sólo-anfitrión:

Para mantener la conexión a internet, deberemos agregar un adaptador adicional. Este pondrá a ambas maquinas en una red, ambos sistemas tendrán un adaptador de red adicional.

Primero tendremos que crear una red para esta tarea. Dentro de Archivo > Configuración > Red > Redes solo-anfitrión. Allí, sobre la derecha el botón Agregar red sólo-anfitrión. Esto creará una nueva red y un adaptador de red virtual en el host, con mismo nombre, por ej vboxnet0. Se puede editar la red para asignarle una dirección IPv4 y/o IPv6 al host y configurar los parámetros del servidor DHCP que le servirá IPs al invitado.

Luego hay que ir a ConfiguraciónRed de la maquina virtual. Si se quiere preservar la conexión a internet, deberemos añadir un dispositivo adicional, dirigiéndonos a la solapa por ej. Adaptador 2. Allí cambios Conectado a: Adaptador sólo-anfitrión. En nombre hay que ingresar el de la red que creamos, por ej vboxnet0.

Cuando iniciemos la maquina está tendrá un adaptador de red adicional, con DHCP habilitado, la IP de está será la cual el host verá. Así mismo, el Host tendrá un dispositivo de red adicional bajo el mismo nombre de la red, y la IP de esté será la que usará el invitado para comunicarse.

Troubleshooting:

Para realizar el segundo método, se deberá haber cargado los módulos del Kernel vboxnetadp y vboxnetflt. O de lo contrarió aparece un error:

Fallo para crear la interfaz de red anfitrión.
VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory.

Un método es cargarlos manualmente, ej. modprobe -a vboxnetadp vboxnetflt. O para que ya se carguen al inicio del sistema, se puede crear un archivo en /etc/modules-load.d/virtualbox.conf (el nombre del .conf es a elección), y dentro de este las líneas:

vboxdrv     #Este carga el driver the virtualbox
vboxnetadp  # Este y el de abajo son relacionados a la red sólo-anfitrión.
vboxnetflt