Sábado 15 de Marzo, 2008  //  Etiquetas: , ,

Automatizar el acceso a la red de Qemu mediante tun/tap

Continuo el tutorial acerca de la creación de máquinas virtuales con Qemu. En esta parte voy a comentar la automatización de la creación del puente (bridge) en nuestro Linux para que Qemu utilice el dispositivo tun/tap sin que antes debamos escribir todos los comandos uno por uno. Utilizaré la imagen de windows xp que creé en la entrada anterior.

El primer paso es cargar los módulos necesarios en memoria (en el caso que no los tengamos compilados directamente en el kernel). Para ello, los añadimos a la lista de módulos que se van a cargar durante el arranque de nuestro sistema

su -c ‘echo tun >> /etc/modules’
su -c ‘echo bridge >> /etc/modules’

El siguiente paso es instalar sudo (si no lo tenemos instalado) y dar los permisos correspondientes para que un usuario normal (sin privilegios) pueda ejecutar qemu con soporte tun/tap.

su -c ‘apt-get install sudo’

Utilizando la herramienta visudo con el usuario root editamos el archivo sudoers y damos permisos de ejecución de los comandos que necesitaremos al usuario en cuestión que ejecutará qemu. El archivo, al final, quedará así:

# /etc/sudoers
#
# This file MUST be edited with the ‘visudo’ command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
#
# Cmnd alias specification
Cmnd_Alias QEMU=/sbin/ifconfig, /usr/sbin/brctl, /usr/sbin/tunctl, /sbin/route
#
# User privilege specification
root ALL=(ALL) ALL
jordi ALL=NOPASSWD: QEMU

En este ejemplo, jordi es el nombre de mi usuario, y debe cambiarse por el nombre de usuario que vayas a utilizar.

Seguidamente, crearemos un par de scripts. El primero, llamado qemu-bridge-up nos va a crear el puente y a añadirle nuestro dispositivo de red (eth0)

#!/ bin/sh
sudo ifconfig eth0 down
sudo brctl addbr br0
sudo ifconfig eth0 0.0.0.0 up
sudo brctl addif br0 eth0
sudo ifconfig br0 192.168.1.12 up # indica aquí la IP de tu host
sudo route add default gw 192.168.1.1 # indica aquí la IP de tu puerta de enlace (router)

El segundo script que crearemos lo he llamado runwin y es el que va a ejecutar qemu.

#!/ bin/sh
USERID=`whoami`
iface=`sudo tunctl -b -u $USERID`
./qemu-bridge-up
qemu -hda /home/$USERID/vms/windows -m 384 -localtime -net nic -net tap,ifname=$iface
sudo tunctl -d $iface &>/dev/null

En este script, el parámetro /home/$USERID/vms/windows es el path al archivo que contiene la imagen que creamos anteriormente de windows xp. Esto debes cambiarlo por el camino donde se encuentra la imagen que tu has creado.

Si lo crees conveniente, puedes cambiar la llamada a qemu a tu gusto, pero manteniendo siempre los parámetros -net nic -net tap,ifname=$iface

Ahora damos permisos de ejecución a estos dos scripts

chmod 700 qemu-bridge-up runwin

Finalmente solo queda añadir unas lineas al script que qemu ejecuta por defecto cuando arranca y que se encuentra en /etc/qemu-ifup. Lo editamos con root

#!/ bin/sh
echo “$1 device up”
sudo ifconfig $1 0.0.0.0 promisc up
sudo brctl addif br0 $1

Esto activa y añade el dispositivo tap0 al puente br0 que hemos creado en el script anterior, qemu-bridge-up. Nos aseguramos que qemu-ifup tenga suficientes permisos de ejecución para cualquier usuario

su -c ‘chmod 755 /etc/qemu-ifup’

Una vez hecho todo esto, comprobamos que funciona ejecutando el script runwin. Una vez sabemos que funciona, podemos incluir un acceso directo en el escritorio, por ejemplo, que ejecute este script.

En la siguiente entrada comentaro como acelerar la ejecución de qemu mediante kqemu.



Entradas relacionadas

Un comenario de Automatizar el acceso a la red de Qemu mediante tun/tap
Escribe un comentario  No nofollow

XHTML: Puedes usar los tags siguientes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

 
Suscríbete a Dokudoki vía RSS!

Cerrar
Enviar por Correo