lunes, 15 de septiembre de 2008

Virtual Box activando red en modo anfitrión

En estos dias estoy probando a pasarme directamente todo el dia a Linux pero aun necesito de algunos programitas que no corren bien emulados en Wine :S por ende empezé a probar el modo Seamless que trae VirtualBox para que el cambio no sea tan brusco.
Por defecto Virtualbox te pone la placa de red en modo NAT el cual te asigna cualquier otro rango de ip que no es de tu LAN.
Encontré en el blog de metalklesk un script que te permite poner la placa de red en modo anfitrion habilitando las placas Tun/tap. Para que el script funcione previamente tenemos que instalar 2 paquetes
* bridge-utils
* uml-utilities

A continuación les dejo el script que funcionó de primera. (modificar los parametros necesarios)
#!/bin/bash

#INICIALIZACION DE VARIABLES
#Deben cambiar los valores segun corresponda a su realidad
#seteamos el usuario
USUARIO="metalklesk"

#seteamos la cantidad de maquinas virtuales (guests) que deseamos tener en el host
CANTIDAD_VM=2

#seteamos la interface de red real
INTERFACE_RED_REAL="eth0"

#seteamos el ip del host
IP_HOST="192.168.0.144"

#seteamos la pasarela (gateway)
PASARELA="192.168.0.1"


#CONFIGURACION
#creamos el puente (bridge)
brctl addbr br0

#seteamos la interface de red real para que sea promiscua
ifconfig $INTERFACE_RED_REAL 0.0.0.0 promisc

#insertamos la interface de red real al puente br0
brctl addif br0 $INTERFACE_RED_REAL

#creamos una interface tap para cada guest (maquina virtual),
#los insertamos en el puente y los subimos
CONTADOR=0
while [ $CONTADOR -lt $CANTIDAD_VM ]
do
tunctl -t tap$CONTADOR -u $USUARIO
brctl addif br0 tap$CONTADOR
ifconfig tap$CONTADOR up
let CONTADOR=$CONTADOR+1
done

#asignamos una ip al puente br0 mediante dhcp
#dhclient br0

#asignamos la ip del host al puente br0 de forma manual
ifconfig br0 $IP_HOST

#asignamos la pasarela al puente br0
route add default gw $PASARELA br0

#cambiamos los permisos de /dev/net/tun
chmod 0666 /dev/net/tun

#NOTAS.
#
# Un Bridge es contrario a un firewall, por lo tanto si el firewall esta arriba es posible que por default
# este bloqueando la interfaz br0 (u otra). La solucion mas simple es deshabilitar el firewall, pero no es
# recomendable ya que eso resta seguridad. Entonces lo que hay que hacer es configurar el firewall para que
# permita, a la interfaz br0, salir al exterior (y ser vista desde el exterior y dentro de la red). En el caso
# de openSUSE 10.3 es muy simple de hacer, simplemente hay que abrir con un editor de texto (como root) el
# archivo de configuracion del firewall:

# /etc/sysconfig/SuSEfirewall2

# bajar al final y buscar la linea que dice:

# FW_FORWARD_ALWAYS_INOUT_DEV=""

# En esa linea hay que agregar las interfaces que queremos separadas por espacios, en este caso corresponde al
# bridge br0, la linea queda de la siguiente forma:

# FW_FORWARD_ALWAYS_INOUT_DEV="br0"

# Ya con eso simplemente hay que reiniciar el firewall (desde Yast o desde consola) y listo.
# Lo que resta es configurar la red de la maquina virtual. Desde VirtualBox se crea una maquina virtual, luego
# hay que ir a Settings -> Network -> Adapter0 y cambiar Attached to de "Not attached" a "Host Interface" y en
# Interface Name escribir tap0 o la interfaz que corresponda (depende de cual le quieren asignar a la
# maquina virtual).
# Ya con eso pueden instalar tranquilamente el SO Guest en VirtualBox, luego configurar la red de este dándole una
# ip a mano o a traves de dhcp que esté dentro del rango provisto por la subred. Con todo lo anterior (incluidos
# los comandos de este script) tienen configurado una red con las maquinas virtuales y cada una con su propia ip,
# lo cual es muy util para configurar servidores.

#FIN

No hay comentarios: