Fecha de creación del tutorial: 2007-10-22
Como hacer visible en toda la red nuestra máquina virtual con KVM, en Debian GNU/Linux
Creación: 13-10-2007
Índice de contenidos
1.
Introducción
2.
Entorno
3.
Instalación
4.
Creando el bridge
5.
Configurando la red en KVM
6.
Un script para lanzar todo el "tinglado"
7.
Comprobando que todo funciona según lo esperado
8.
Conclusiones
9. Sobre el
autor
1. Introducción
En el tutorial http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=debianKvm hemos visto como conseguir una máquina virtual con KVM.
Incluso vimos cono configurar la red para acceder desde la máquina que hace de anfitrión o host (la máquina física) a la máquina que hace de invitado o guest (la máquina virtual). Pero esta configuración se nos queda corta si lo que queremos es acceder a la máquina virtual como si se tratar de otra máquina cualquier en nuestra red, o como si se tratara de un servidor para explotar sus servicios.
Este tutorial sería la continuación de aquel, y vamos a ver como conseguir que la máquina virtual se vea como otra máquina más en nuestra red. Para ello usaremos un bridge que, básicamente, se encarga de pasar paquetes de una interfaz a otra (en nuestro caso pasará paquetes de la interfaz del host a la interfaz del guest, y viceversa).
Este tutorial está inspirado en el que ya publico mi compañero Germán (http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=qemuIntranetDebian) sobre como hacer lo mismo en el Qemu (veréis que se muy similar). Aquí vamos a ver como hacerlo para el KVM.
2. Entorno
El tutorial está escrito usando el siguiente entorno:
Hardware: Portátil Asus G1 (Core 2 Duo a 2.1 GHz, 2048 MB RAM, 120 GB HD).
Sistema Operativo: GNU / Linux, Debian (unstable), Kernel 2.6.22, KDE 3.5
kvm 36-0.1
bridge-utils 1.2-1
3. Instalación
Sólo necesitamos instalar el paquete bridge-utils:
# apt-get -u install bridge-utils
4. Creando el bridge
Modificamos el fichero /etc/network/interfaces y
añadimos:
iface br0 inet dhcp
bridge_ports
eth1
bridge_stp off
Con estas líneas estamos creando una nueva interfaz llamada br0, que será el bridge.
Nótese que no tenemos ninguna línea del estilo auto
br0, esto es porque no queremos que el bridge se
levante siempre que se arranque la máquina, el bridge
sólo lo vamos a levantar cuando usemos el KVM (la interfaz la
levantaremos con ifup br0, pero eso lo veremos un poco
más adelante).
Con bridge_ports eth1, lo que estamos haciendo es
añadir al bridge el puerto eth1. Podríamos
decir que estamos definiendo uno de los extremos del bridge
(luego veremos como definimos el el otro extremo).
STP (Spanning Tree Protocol) es un protocolo para correr múltiples
bridges, o bridges redundantes. Como no es nuestro caso
lo desactivamos lo desactivamos con bridge_stp off. Como
no usamos STP no hace falta que tengamos líneas del estilo:
bridge_fd 9, bridge_hello 2, o
bridge_maxage 12, ya que esto lo que hace es definir
parámetros del STP.
5. Configurando la red en KVM
Ahora vamos a editar el fichero /etc/kvm/kvm-ifup, y
cambiamos su contenido por (quitamos lo que habíamos puesto en
el otro tutorial y lo sustituimos por esto):
ifconfig $1 0.0.0.0 promisc
up
brctl addif br0 $1
exit 0
Aquí vemos como con brctl addif br0 $1
estamos añadiendo el otro extremo del bridge. Nuestro
bridge ya está completo y pasará los paquetes de
eth1 (el sistema host) a tap0 (el
sistema guest) y viceversa.
6. Un script para lanzar todo el "tinglado"
Vamos a mostrar un sencillo script para lanzar nuestras imágenes. Podría ser algo así:
#!/bin/sh#
Para ejecutar con
qemu
#VIRTUALIZATION_MODULE=kqemu
#VIRTUALIZATION_PROGRAM=qemu#
Para ejecutar con kvm. Recomendable si el HW lo
soporta.
VIRTUALIZATION_MODULE=kvm-intel
VIRTUALIZATION_PROGRAM=kvm#
Parámetros para lanzar qemu o kvm
QEMU_PARAMS="-m
1024 -net nic -net tap"#
Los siguientes parámetros del qemu permiten arrancar la imagen
como un demonio. Es decir, sin
# salida gráfica. Esto puede
resultar muy útil para arrancar la imagen en un servidor. Si
dentro
# la imagen tienes instalado un VNC, puede ser el
complemento perfecto para administrar la imagen.
#--nographic
--daemonize#
El nombre de la imagen que vamos a lanzar
IMAGE="windowsXP.qcow2"#
Levantamos el módulo del kernel (qemu o kvm)
modprobe
$VIRTUALIZATION_MODULE
echo 1024 >
/proc/sys/dev/rtc/max-user-freq#
Levantamos el bridge
ifup br0#
Ejecutamos la imagen
$VIRTUALIZATION_PROGRAM
$QEMU_PARAMS $@ -hda $IMAGE#
Tiramos el bridge
ifdown br0
7. Comprobando que todo funciona según lo esperado
Después de arrancar la imagen con el script que presentábamos en el apartado anterior, podemos ejecutar:
# brctl show
y deberíamos ver algo como:
bridge name bridge id STP enabled interfaces
br0 8000.001a928d3dd1 no eth1
tap0
Podemos apreciar como el bridge br0 está
levantado y "enganchado" a eth1 y tap0.
Si entramos en nuestra imagen (el XP que estamos corriendo como sistema guest) deberíamos tener acceso a Internet, pero ojo, debemos acordarnos de configurar el XP para que esté dentro de nuestra red. Ya sea con DHCP o con IP fija, debemos configurar el Windwos XP. Una vez configurado adecuadamente nuestro sistema guest, deberíamos poder hacerle ping o acceder a sus servicios desde cualquier punto de nuestra red.
8. Conclusiones
Veis que prácticamente hemos hecho lo mismo que nos proponía Germán en su tutorila, pero un poco adaptado a KVM.
Además hemos presentado un posible script para lanzar las imágenes que, cambiando un par de variables, nos sirva tanto para usarlo con qemu como con kvm.
Y en definitiva hemos conseguido lo que queríamos, poder acceder desde cualquier punto de la red a nuestra máquina virtual.
9. Sobre el autor
Alejandro Pérez García, Ingeniero en Informática (especialidad de Ingeniería del Software)
Socio fundador de Autentia (Formación, Consultoría, Desarrollo de sistemas transaccionales)
mailto:alejandropg@autentia.com
Autentia Real Business Solutions S.L. - "Soporte a Desarrollo"
Anímate y coméntanos lo que pienses sobre este tutorial
Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.
| Autor | Mensaje de usuario registrado |
|---|
- Puedes inscribirte en nuestro servicio de notificaciones haciendo clic aquí.
- Puedes firmar en nuestro libro de visitas haciendo clic aquí.
- Puedes asociarte al grupo AdictosAlTrabajo en XING haciendo clic aquí.
- Añadir a favoritos Technorati.
Esta obra está licenciada bajo licencia Creative Commons de
Reconocimiento-No comercial-Sin obras derivadas 2.5
Recuerda
Autentia te regala la mayoría del conocimiento aquí compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseño ... y muchas otras cosas.
¿Nos vas a tener en cuenta cuando necesites consultoría o formación en tu empresa?, ¿Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros?
Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...
Autentia = Soporte a Desarrollo & Formación.
Tutoriales recomendados
| Nombre | Resumen | Visitas | Valoración | Votos | ||
|---|---|---|---|---|---|---|
| Cómo generar versiones imprimibles de páginas web | En este gran océano de textos, imágenes y enlaces que es Internet hay algunas cosas que merecen la pena ser impresas. Estoy seguro de que alguna vez has necesitado imprimir alguna página web y no has podido hacerlo directamente porque la impresión iba a q | 2010-02-08 | 140 | - | - | ![]() |
| Primeros pasos con Enterprise Architect y UML 2.x | Introducción básica a la herramienta EnterpriseArchitec mediante el uso de diagramas UML 2 | 2010-02-04 | 261 | - | - | ![]() |
| JMeter. Uso de funciones. | En este tutorial tratamos el uso de las funciones más habituales de la herramienta JMeter. | 2010-01-26 | 464 | - | - | ![]() |
| Introducción a jQuery. | jQuery es una librería javascript ligera, rápida y concisa que simplifica el tratamiento de documentos HTML, el manejo de eventos, la creación de animaciones y las interacciones vía Ajax, para agilizar el desarrollo de aplicaciones web. | 2010-01-18 | 828 | Bueno | 1 | ![]() |
| Cómo consumir un servicio web RESTful con el soporte de Ajax y JSON de jQuery. | En este tutorial vamos a seguir analizando cómo explotar las funcionalidades de jQuery. | 2010-01-18 | 526 | - | - | ![]() |
| jQuery: cómo crear nuestros propios plugins. | En este tutorial vamos a ver cómo crear un plugin para jQuery sencillo, para sentar las bases, y otro un poco más elaborado. | 2010-01-18 | 603 | - | - | ![]() |
| Introducción a jQuery UI. | En los tutoriales anteriores hemos hecho una introducción a jQuery y hemos visto cómo crear plugins para jQuery. Ahora se trata de seguir ampliando conocimientos, haciendo uso de una librería que se basa en la misma. | 2010-01-18 | 812 | - | - | ![]() |
| Autenticando los usuarios de Sonar contra un LDAP | En este tutorial vamos a ver cómo podemos hacer que la autenticación de Sonar sea a través de un LDAP. | 2010-01-18 | 441 | - | - | ![]() |
| Introducción a Tapestry 5 | Si estás cansado de programar con frameworks web con los que para hacer un simple holamundo tienes que tirar muchísimas líneas de código de XML o peor sigues trabajando con JSP donde además metes código Java en forma de snippets que son difícil de depurar | 2010-01-17 | 502 | - | - | ![]() |
| JMeter. Gestión de usuarios | En este tutorial tratamos la simulación de distintos usuarios, en la herramienta JMeter, mediante el archivo externo users.xml o mediante la función Counter. | 2010-01-14 | 698 | - | - | ![]() |
Nota:
Los tutoriales mostrados en este Web tienen como objetivo la difusión del conocimiento.
Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores.
En algún caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueños. Si algún afectado desea que incorporemos alguna reseña específica, no tiene más que solicitarlo.
Si alguien encuentra algún problema con la información publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolución.







