viernes, abril 11, 2008

VirtualBox en Debian Lenny

Hace ya tiempo estuve probando VirtualBox un software de virtualización al estilo VMware, la principal diferencia es que este es totalmente gratuito.
El software se puede bajar de este enlace, de la página de Sun Microsystems ya que Sun compró Innotek hace relativamente poco tiempo, la versión que se encuentra en los repositorios nunca me ha llegado e funcionar.
Una vez bajado lo instalamos(aunque la versión sea para Etch funciona correctamente en Lenny):
dpkg -i virtualbox_1.5.6-28266_Debian_etch_amd64.deb
Con esto ya tenemos VirtualBox instalado en nuestro sistema, sólo queda hacer unos cuantos retoques y configurar la red.
Añadimos nuestro usuario al grupo vboxusers y ponemos los permisos apropiados a /dev/vboxdrv:
usermod -G vboxusers -a "USUARIO"
chmod 666 /dev/vboxdrv

Para poder obtener IP desde la máquina virtual debemos de seguir los siguientes pasos.
Instalamos las herramientas necesarias para crear puentes:
apt-get install bridge-utils uml-utilities
Para poder crear los puentes se debe de tener soporte en el Kernel, la opción necesaria se encuentra en:
Networking-->Network Options-->802.1d Ethernet Bridging

Una vez recompilado el Kernel ya podemos hacer los puentes y unirlos, este script nos será de ayuda para tal tarea.

#!/bin/bash
#Descargamos el módulo de VirtualBox y lo volvemos a cargar:
/etc/init.d/vboxdrv stop
/etc/init.d/vboxdrv start
#Deshabilitamos la red VirtualBox y la volvemos a habilitar:
/etc/init.d/vboxnet stop
/etc/init.d/vboxnet start
#Le damos los permisos necesarios a la interfaz de tunneling:
chmod 666 /dev/net/tun
#Creamos el bridge(puente):
brctl addbr br0
#Preparamos la interfaz de red real para ser conectada al bridge:
ifconfig eth0 0.0.0.0 promisc
#Conectamos eth0 al bridge:
brctl addif br0 eth0
#Pedimos IP para el bridge:
dhclient br0
#Permitimos el tap0 por parte de nuestro usuario:
tunctl -t tap0 -u "USUARIO"
#Conectamos tap0 al bridge:
brctl addif br0 tap0
#Asignamos IP a tap0:
ifconfig tap0 "IP CUALQUIERA DE LA SUBRED" up
#Habilitamos el soporte para operar como proxy ARP:
bash -c 'echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp'
#Añadimos la ruta hasta el anfitrión por la interfaz tap0:
route add -host "IP ANFITRION" dev tap0
#Modificamos nuestra tabla ARP para que el proxy funcione correctamente:
arp -Ds "IP ANFTRION" eth0 pub
#Le damos los permisos necesarios a la interfaz de tunneling:
chgrp vboxusers /dev/net/tun
chmod 666 /dev/net/tun

Con todo esto ya tenemos las máquinas virtuales capacitadas para poder acceder a la red, en configuración de red de la máquina virtual le pondremos.
Conectar a: Interface anfitrión
Configuración de interface anfitrión --> Nombre de la interface:tap0
Bueno pues creao que ya está todo explicado, sólo hay que tener en cuenta un pequeño detalle que a mí me trajo algunos problemas, mucho cuídado con las reglas IpTables, en mi caso por defecto lo bloquea todo y no me funcionaba hasta que descargué mis reglas personalizadas.
NOTA:Si alguien sabe como hacer que IpTables permita el paso de la información necesaria para que la red funcione correctamente le agradecería que escribiese un comentario explicandolo.

2 comentarios:

RoDD dijo...

Jujo felicidades por el blog :P

Veo que la charla del jueves pasado de Sun te hizo que pensar.

Un abrazo

Paco Rabadán dijo...

Hola y gracias por el post. Entiendo, entonces, que para poder hacer bridge con el virtualbox ¿hay que compilar el kernel? Gracias otra vez.