Acceder a la máquina virtualizada por VirtualBox

3 11 2008

Después de instalar y configurar los puertos USB con VirtualBox, instalé un Ubuntu 8.10 Server mínimo para hacer pruebas con servicios de DNS, HTTP, FTP, etc. Y me encuentro con otro problema: no puedo acceder a la máquina virtualizada desde el anfitrión (mi Ubuntu 8.10 Desktop). Y por lo tanto, no me podía conectar a ella por SSH, ni usar Webmin, ni acceder a ninguno de los servicios que instalé. Menos mal que gracias a la propia ayuda de VirtualBox pude arregarlo sin ningún problema.

La cuestión es que cuando se instala VirtualBox configura las tarjetas de red virtuales para usar NAT (Network Address Translation) por defecto. Y lo hace porque de esta forma no hay que modificar nada ni en el anfitrión ni en el invitado. Sabiendo esto, lo que vamos a hacer es configurar el redireccionamiento de puertos (port fordwarding) para acceder a nuestra máquina virtual.

Como mejor lo podemos ver es con un ejemplo, así que vamos a configurar el acceso por SSH a la máquina virtual (es el mismo que viene en la ayuda de VirtualBox). Partimos de la base de que SSH utiliza el protocolo de transporte TCP y el puerto 22 y que nosotros lo vamos a redirigir al 2222. Pues habiendo quedado esto claro, ejecutamos sólo tendríamos que ejecutar 3 comandos en los que Nombre_Maquina_Virtual tendríamos que sustituirlo por el nombre que tenga nuestra máquina virtual y sshvirtual puede ser cualquier otro nombre pero hay que mantenerlo igual en los tres comandos.
VBoxManage setextradata "Nombre_Maquina_Virtual" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/sshvirtual/Protocol" TCP
VBoxManage setextradata "Nombre_Maquina_Virtual" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/sshvirtual/GuestPort" 22
VBoxManage setextradata "Nombre_Maquina_Virtual" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/sshvirtual/HostPort" 2222

¡Ya está! Sólo quedaría conectarnos desde el anfitrión al equipo virtualizado con el comando:
ssh -l nombre_usuario -p 2222 localhost

Lo mismo cambiando los puertos lo podemos hacer con Webmin, servidor HTTP, FTP, etc.

Espero, no sólo que os sea útil sino, que os funcione.





VirtualBox 2.0.4 en Ubuntu 8.10 con USB (actualizado)

26 10 2008

Durante algún tiempo estuve usando VMware Server para tener máquinas virtuales de diferentes sistemas operativos sobre Ubuntu. Sin embargo, después de asistir a una de los talleres de la Conferencia Internacional de Software Libre que se celebró hace unos días en Málaga sobre virtualización, decidí probar el Sun xVM VirtualBox. Además, como estaba acaba de salir Ubuntu 8.10 lo instalé en sobre ella.

En fin, vayamos al grano. Los pasos para la instalación de VirtualBox son bien sencillos:

  1. Accedemos a la página de descargas para Linux de VirtualBox: http://www.virtualbox.org/wiki/Linux_Downloads
  2. Seleccionamos el paquete apropiado para nuestra distribución (como no lo hay porque estamos sobre Ubuntu 8.10 elegimos Ubuntu 8.04): http://download.virtualbox.org/virtualbox/2.0.4/virtualbox-2.0_2.0.4-38406_Ubuntu_hardy_i386.deb
  3. Una vez descargado, hacemos doble clic sobre el paquete para instalarlo. Y se instala sin problemas.

A continuación reiniciamos el entorno gráfico para que aparezca la entrada en el menú correspondiente, es decir, Aplicaciones –> Herramientas del sistema –> Sun xVM VirtualBox.

Sin embargo, una vez que lo ejecutamos, si accedemos al menú Archivos –> Preferencias… nos aparecerá el siguiente error:

Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might be not installed on the host computer.

Y esto es porque tenemos que hacer algunos cambios para que nos funcionen los puertos USB en VirtualBox. Así que nos ponemos manos a obra otra vez:

  1. Como Intrepid Ibex no monta por defecto /proc/bus/usb, tenemos que editar el fichero /etc/init.d/mountdevsubfs.sh. ¡Ojo! Primero hacemos una copia de seguridad del fichero:
    sudo cp /etc/init.d/mountdevsubfs.sh /etc/init.d/mountdevsubfs.sh.original
    sudo nano /etc/init.d/mountdevsubfs.sh
    Y añadimos las siguientes líneas debajo de la línea domount devpts "" /dev/pts devpts -onoexec,nosuid,gid=$TTYGRP,mode=$TTYMODE:
    #
    # Magic to make /proc/bus/usb work
    #
    mkdir -p /dev/bus/usb/.usbfs
    domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
    ln -s .usbfs/devices /dev/bus/usb/devices
    mount --rbind /dev/bus/usb /proc/bus/usb

  2. A continuación tenemos que dar permisos de escritura al grupo vboxusers a los dispositivos en /proc/bus/usb. Por lo que tenemos que editar el fichero /etc/udev/rules.d/40-basic-permissions.rules y cambiar las siguientes líneas:
    # USB devices (usbfs replacement)
    SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="vboxusers"
    SUBSYSTEM=="usb_device", MODE="0664", GROUP="vboxusers"
  3. También tenemos que añadir el usuario con el que arrancamos VirtualBox al grupo vboxusers:
    sudo adduser tu_usuario vboxusers
  4. Ahora nos toca averiguar el identificador del grupo vboxusers para lo que ejecutamos en un terminal el siguiente comando:
    cat /etc/group | grep vboxusers
    Y nos saldrá una línea como esta:
    vboxusers:x:id_grupo_vboxusers:tu_usuario
  5. Por último, editamos el fichero /etc/fstab y añadimos la siguiente línea al final del fichero teniendo en cuenta que deberemos introducir el identificador del grupo vboxusers que conseguimos en el paso anterior:
    none /proc/bus/usb usbfs devgid=id_grupo_vboxusers,devmode=664
  6. Reinicia el equipo (no sirve con reiniciar el entorno gráfico) y listo.

Y si todo ha ido bien, ya tenemos instalado VirtualBox con los USB habilitados. Espero que os funcione.