Inicio / Blog's y documentación / Blogs / jmedina

En este documento se explicará paso a paso como instalar y preparar un entorno de para-virtualización con Xen 3.2 sobre Ubuntu Server 8.,04.1 en un sistema de 64-bits.

Caracteristicas de la implementación

  • Entorno solo Para-Virtualizacaión sobre arquitectura Intel 64bits
  • Automatización de maquinas virtuales mediante xen-tools
  • Uso de Linux Volume Manager (LVM) como sistema de almacenamiento
  • Soporte para hacer snapshots de maquinas virtuales usando LVM
  • Las maquinas virtuales tendrán Ubuntu Hardy 8.04.1

Terminología

Host = Equipo en donde se alojan las maquinas virtuales

Dom0 = En terminología de Xen este es el Host

Guest = Maquina virtual que se ejecuta en el Host

DomU = Maquina virtual en terminología de Xen

Configuración de Hardware

Se instalará Ubuntu Server Hardy 8.04.1 64bits.

Al terminar de instalar el sistema con el siguiente esquema de particiones

Disco Duro Sata 80GB (/dev/sda)

Partición /dev/sda1 /boot 200MB

Partición /dev/sda2 swap 2000MB

Partición /dev/sda3 LVM Resto

/dev/sda3 es el Physical Volume (PV) el cual será parte de un Volume Group (VG) VGsystem01 en el cual se crearán Volumens Lógicos (LV) para la partición raíz de la maquina Host (Domain0) y también las particiones para todas las demás maquinas virtuales (DomainU).

Volumens Lógicos

/dev/mapper/VGsystem01-root / 10G

NOTA: En este momento no crearemos más LV ya que las herramientas xen-tools se encargarán de automatizar la creación al momento de crear las maquinas virtuales.

Al terminar la instalación reiniciamos y confirmamos que tenemos instalado un kernel con soporte SMP y de 64bits:

# uname -a

Ahora actualizaremos el sistema con apt

# apt-get update
# apt-get upgrade

Instalar el servidor OpenSSH

apt-get install openssh-server

Ahora podemos continuar con la instalación de los elementos de xen.

Instalación de Ubuntu Xen Server

Instalación del kernel de xen y las herramientas para nuestro entorno, este paso lo podemos automatizar instalando el metapaquete ubuntu-xen-server

root@actiaxh:~# aptitude install ubuntu-xen-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Building tag database... Done
The following NEW packages will be automatically installed:
  binutils binutils-static bridge-utils debootstrap gcc gcc-4.2 libasound2 libbeecrypt6
  libc6-dev libconfig-inifiles-perl libcurl3 libdirectfb-1.0-0 libexpect-perl libgomp1
  libio-pty-perl libio-stty-perl libneon27 librpm4.4 libsdl1.2debian libsdl1.2debian-alsa
  libterm-readline-gnu-perl libterm-size-perl libtext-template-perl libxen3 libxml2
  linux-libc-dev linux-restricted-modules-common linux-xen nvidia-kernel-common perl-doc
  python-dev python-xen-3.2 python2.5-dev rinse rpm screen sgml-base vnstat xen-docs-3.2
  xen-hypervisor-3.2 xen-shell xen-tools xen-utils-3.2 xfsprogs xml-core
The following NEW packages will be installed:
  binutils binutils-static bridge-utils debootstrap gcc gcc-4.2 libasound2 libbeecrypt6
  libc6-dev libconfig-inifiles-perl libcurl3 libdirectfb-1.0-0 libexpect-perl libgomp1
  libio-pty-perl libio-stty-perl libneon27 librpm4.4 libsdl1.2debian libsdl1.2debian-alsa
  libterm-readline-gnu-perl libterm-size-perl libtext-template-perl libxen3 libxml2
  linux-image-2.6.24-23-xen linux-image-xen linux-libc-dev
  linux-restricted-modules-2.6.24-23-xen linux-restricted-modules-common
  linux-restricted-modules-xen linux-ubuntu-modules-2.6.24-23-xen linux-xen
  nvidia-kernel-common perl-doc python-dev python-xen-3.2 python2.5-dev rinse rpm screen
  sgml-base ubuntu-xen-server vnstat xen-docs-3.2 xen-hypervisor-3.2 xen-shell xen-tools
  xen-utils-3.2 xfsprogs xml-core
0 packages upgraded, 51 newly installed, 0 to remove and 0 not upgraded.
Need to get 56.4MB of archives. After unpacking 196MB will be used.
Do you want to continue? [Y/n/?] Y

Cuando terminen de instalar los paquetes, automaticamente se agregará una entrada a la configuración del gestor de arranque GRUB, la podemos ver así:

# grep -A 5 "Xen 3.2" /boot/grub/menu.lst
title           Xen 3.2 / Ubuntu 8.04.2, kernel 2.6.24-23-xen
root            (hd0,0)
kernel          /xen-3.2.gz
module          /vmlinuz-2.6.24-23-xen root=/dev/mapper/VGsystem01-root ro console=tty0
module          /initrd.img-2.6.24-23-xen
quiet

Ahora reiniciamos el sistema para que inicie con el kernel de Xen

# reboot

Despues de reiniciar podemos confirmar que estamos sobre un kernel de xen con el siguiente comando:

# uname -a
Linux actiaxh 2.6.24-23-xen #1 SMP Mon Jan 26 03:09:12 UTC 2009 x86_64 GNU/Linux

Y podemos usar el coman xm para ver que este corriendo el Dominio0 de Xen

root@actiaxh:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                  0    1879  2                r-----   44.4

Preparando la configuración de xen-tools

Los archivos de configuración de xen-tools residen en el directoro /etc/xen-tools/, haremos algunos cambios en los archivos de configuración para personalizar nuestro entorno y predefinir los parametros de creación de maquinas virtuales.

root@actiaxh:~# cd /etc/xen-tools/

Respaldamos el archivo de configuración principal

root@actiaxh:/etc/xen-tools# cp xen-tools.conf xen-tools.conf.orig

Ahora cambiaremos los parametros:

Predefiniendo el Volume Group (VG) a utilizar

Aproximadamente en la linea 55 descomentamos la linea

# lvm = skx-vg

Por

lvm = VGsystem01
Definiendo parametros para discos de maquinas virtuales

Por default al crear una maquina virtual solo se crean dos volumens uno para la partición raíz de 4Gb y otro para la partición swap de 128Mb, cambiaremos esos valores.

Para cambiar el tamaño predeterminado para la partición raíz cambiamos el parametro:

size   = 4Gb

Por

size   = 6Gb

Para cambiar el tamaño predeterminado de la partición swap cambiamos el parametro:

swap   = 128Mb

Por

swap   = 512Mb

NOTA: Si no se desea utilizar los valores predeterminados, puede cambiarlos al momento de crear las maquinas virtuales con los parametros --size y --swap del comando xen-create-image.

Definiendo parametros para la memoría RAM asignada a las maquinas virtuales

Por default se asignan 128Mb de RAM a las maquinas virtuales, si queremos predefinir un tamaño de 512Mb, cambiamos el parametro

memory = 128Mb

Por

memory = 512Mb
Definiiendo la distribución por default para las maquinas virtuales

La configuración de xen-tools por default tiene definido a etch como la distribución predefinida, en nuestro caso utilizaremos la distribución Ubuntu Hardy, por lo que cambiaremos la opción

dist   = etch

Por

dist   = hardy
Definiendo el URL o ruta al repositorio de paquetes para hardy

xen-tools utiiliza la herramienta debootstrap para la automatización de maquinas virtuales, el metodo debootstrap por default baja todos los paquetes de Internet.

TODO: Meter nota sobre el cache.

Por default se tiene definido la ruta a los repositorios de Debian, para utilizar los repositorios de Ubuntu cambiamos

mirror = http://ftp.us.debian.org/debian/

Por

mirror = http://archive.ubuntu.com/ubuntu/

Este cambio será el último, guarde el archivo /etc/xen-tools/xen-tools.conf

Corrección de bug en el script de inicio xendomain

El script /etc/init.d/xendomains es el encargdo de iniciar y detener automaticamente las maquinas virtuales configuradas para arranque automático al inicio y el apagado del sistema.

Existe un bug en el script xendomains (bug 216761) que forma parte de paquete xen-utils-3.2, el problema es que cuando trata de iniciar las maquinas virtuales automaticamente o al tratar de detenerlas al apagar o reiniciar el sistema manda algunos errores en la pantalla referentes a un mal encomillado en las sentencias test del script.

# cd /etc/init.d/

Respaldamos el script original

root@actiaxh:/etc/init.d# cp xendomains xendomains.orig

Descargando y aplicando el parche

root@actiaxh:/etc/init.d# wget http://verde.e-compugraf.com/jm-confs/xen/hardy.xendomains.diff

root@actiaxh:/etc/init.d# patch -p0 --verbose < hardy.xendomains.diff
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- xendomains.orig    2009-01-29 12:57:45.000000000 -0600
|+++ xendomains 2009-01-29 15:09:53.000000000 -0600
--------------------------
Patching file xendomains using Plan A...
Hunk #1 succeeded at 63.
Hunk #2 succeeded at 80.
Hunk #3 succeeded at 183.
Hunk #4 succeeded at 193.
Hunk #5 succeeded at 268.
Hunk #6 succeeded at 310.
done


Para ver más información sobre este problema vea

.

NOTA: Este bug ya fue corregido en las ultimas versiones de Xen 3.2 den Ubuntu Hardy, ver historial de paquete xen 3.2

Corrigiendo bug en el script /usr/bin/xen-create-image

TODO: Creo que esto solo es para cuando usa archivos loopback para las particiones de los DomU.

El script /usr/bin/xen-create-image tiene un error

Los archivos de confguración que genera xen-tools utilizan el parametro file:// dentro del
bloque de configuración disk para indicar la ruta a los dispositivos que usará la maquina virtual,
en Xen 3.2, el parametro file se ha dejado de usar en favor del parametro tap:aio, por ejemplo
para vmbase:

Respaldando el archivo originial

root@actiaxh:~# cd /usr/bin/

root@actiaxh:/usr/bin# cp xen-create-image xen-create-image.orig

Descargando e instalando el parche

root@actiaxh:/usr/bin# wget http://verde.e-compugraf.com/jm-confs/xen/hardy.xen-create-image.diff

root@actiaxh:/usr/bin# patch -p0 --verbose < hardy.xen-create-image.diff
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- xen-create-image.orig      2009-02-07 05:23:16.000000000 -0600
|+++ xen-create-image   2009-02-07 05:24:22.000000000 -0600
--------------------------
Patching file xen-create-image using Plan A...
Hunk #1 succeeded at 2408.
done

Con este parche se corrige el problema.

Configuración del reloj de sistema y hardware

Es importante que el reloj del sistema Host este correctamente configurado y que se este sincronizando constantemente ya que el reloj de las maquinas virtuales es sincronizado con el reloj del Host.

Verificando que nuestro sistema este usando UTC

# date -u
Sat Feb  7 14:28:04 UTC 2009

Ahora reconfiguraremos el sistema para definir la zona horaría

# dpkg-reconfigure tzdata

Seleccionar America y Mexico City.

Sincronización manual con ntpdate

# ntpdate mx.pool.ntp.org
 7 Feb 08:30:30 ntpdate[9272]: adjust time server 201.155.229.129 offset -0.014936 sec

Ahora instalamos el servidor NTP para mantener sincronizado el reloj del sistema utilizando una fuente externa

# apt-get install ntp

Al terminar de instalar el paquete, el servidor NTP es automaticamente iniciado, además, el servicio ntp se configuro para arrancar automaticamente al inicio del sistema.

Agregando varios servidores del Pool de servidores NTP de México a la configuración del servidor NTP.

Editar el archvo /etc/ntp.conf y cambiar la linea

server ntp.ubuntu.com

Por

server mx.pool.ntp.org
server mx.pool.ntp.org
server mx.pool.ntp.org

Guardar el archivo y de configuración y reinciar el servicio ntp

root@actiaxh:~# /etc/init.d/ntp restart
 * Stopping NTP server ntpd          [ OK ]
 * Starting NTP server ntpd            [ OK ]

Creando una maquina virtual con dos particiones, una raiz y una swap

# xen-create-image --lvm=VGsystem01 --hostname=firewall --dhcp \
--install-method=debootstrap --mirror=file://media/cdrom/ --passwd

Por ahora no iniciaremos la maquina, aun falta la configuración de red?????????

Si deseamos que este DomU sea iniciado automaticamente al arranque del sistema debe de crear un enlace simbolico del archivo /etc/xen/firewall.cfg en el directorio /etc/xen/auto/, por ejemplo:

root@actiaxh:~# cd /etc/xen/auto

root@actiaxh:/etc/xen/auto# ln -s ../firewall.cfg firewall

root@actiaxh:/etc/xen/auto# ls -l firewall
lrwxrwxrwx 1 root root 15 2009-02-09 10:12 firewall -> ../firewall.cfg

De ahora en adelante, cuando usted apague el servidor este DomU será apagado limpiamente y tambíen será iniciado automaticamente cuando el sistema arranque.

Creando una maquina virtual con más de un volumen

Si queremos crear DomU con más de un volumen, por ejemplo, queremos instalar un servidor que va a tener una partición independiente para /home y otra para /var, para lograr esta configuración debemos de crear más volumens logicos y asignarlos al sistema, afortunadamente xen-tools nos provee de las funcionalidades para lograr esta tarea de forma sencilla creando plantillas de particiones.

Crearemos una plantilla para el siguiente esquema de particiones:

Volumen Punto de Montaje Tamaño
/dev/VGsystem01/fileserver-disk / 4GB
/dev/VGsystem01/fileserver-swap swap 1GB
/dev/VGsystem01/fileserver-home /home 10GB
/dev/VGsystem01/fileserver-var /var 10GB

Ahora crearemos un archivo de configuración para nuestra plantilla, por ejemplo creamos el archivo /etc/xen-tools/partitions.d/root-swap-home-var con el siguiente contenido:

[root]
size=4G
type=ext3
mountpoint=/
options=sync,errors=remount-ro

[swap]
size=1G
type=swap

[home]
size=10G
type=ext3
mountpoint=/home

[var]
size=10G
type=ext3
mountpoint=/var

Y para crear un nuevo DomU con que use este esquema utilizamos el siguiente comando:

xen-create-image --hostname=fileserver --partitions=root-swap-home-var --dhcp \
--install-method=debootstrap --mirror=file://media/cdrom/ --passwd

Nos mostrará una salida como la siguiente, donde nos muestra los volumenes logicos que se crearon

General Information
--------------------
Hostname       :  fileserver
Distribution   :  hardy
Partitions     :  swap            1G    (swap)
                  /               4G    (ext3)
                  /home           10G    (ext3)
                  /var            10G    (ext3)
Image type     :  full
Memory size    :  128Mb
Kernel path    :  /boot/vmlinuz-2.6.24-23-xen
Initrd path    :  /boot/initrd.img-2.6.24-23-xen

Networking Information
----------------------
IP Address     : DHCP [MAC: 00:16:3E:44:7F:74]


Creating swap on /dev/VGData01/fileserver-swap
Done

Creating ext3 filesystem on /dev/VGsystem01/fileserver-disk
Done

Creating ext3 filesystem on /dev/VGsystem01/fileserver-home
Done

Creating ext3 filesystem on /dev/VGsystem01/fileserver-var
Done
Installation method: debootstrap

Esto creo los 4 volumens, en la configuración nos muestra así:

disk        = [
                  'phy:/dev/VGsystem01/firewall-swap,xvda1,w',
                  'phy:/dev/VGsystem01/firewall-disk,xvda2,w',
                  'phy:/dev/VGsystem01/firewall-home,xvda3,w',
                  'phy:/dev/VGsystem01/firewall-var,xvda4,w',
              ]

Como agregar otro disco o volumen a un DomU

Sobre crear volumen LVM manual

Sobre agregar un RAID

Configuración de disk en .cfg

Prreparando la configuración de red en modo bridge para Xen

Xen puede ser configurado para permitir que las maquinas virtuales puedan usar la infraestrucutra de red existente y los segmentos de red. Xen permite configurar la red tanto del Dom0 como de los DomU, desde configuraciones básicas hasta otras más avanzadas usando bridges, STP, NAT, VLANs. En general, se puede configurar casi cualquier escenario que se pueda configurar en una red con Hosts no virtualizados.

La primer vez que se arranca el sistema con el kernel de Xen y sin tener definido un modo de configuración de red en Xen, se tiene un esquema similar al que se muestra en la siguiente figura

Xen_Red_Bridge_una_interfaz

Basicamente existen dos tipos de configuración de red en xen, configuración basada en bridge y configuración enrutada.

En este documento se describirá la configuración de red en Xen en modo bridge.

La configuración de red en modo bridge es la más simple y fácil de configurar dentro de Xen. Este tipo de red permite de forma simple y transparente a los DomU usar una interfaz de red virtual conectada a un switch virtual (bridge) creado y configurado en Dom0, la interfaz de red fisica eth0 en Dom0 esta conectada fisicamente al switch de la empresa y esta misma a su vez esta conectada al switch virtual, por lo que toda la comunicación es transparente para todos los hosts ya que todos estan conectados virtualmente a un mismo switch.
Con una configuración en modo bridge nos permitirá:

  • Las maquinas virtuales podrán utilizar direcciones IP estaticas tal y como lo hacen las demás maquinas conectadas a tu red fisica, o inclluso utilizar un servicio DHCP.
  • Quieres que las maquinas virtuales sean vistas de forma transparente desde las maquinas en la red fisica, es decir, que haya flujo entre las dos redes de forma transparente.
  • Incluso puede utilizar tecnologias como VLAN para crear redes locales virtuales y completamente aisladas unas de otras
  • Su equipo Host puede tener varias interfaces de red fisicas y quiere asignar o delegar una interfaz o más interfaces exclusivamente para un host, de esta forma puede tener DomU conectados a diferentes redes fisicas, o incluso puede beneficiarse de las funcionalidades de VLAN y Bonding o Link Aggregation (Ether Channel)

Configurando Xen en modo bridge

Los parametros de configuración para la red en se estan en el archivo /etc/xen/xend-config.sxp, en este archivo deben de haber dos lineas donde se especifica el script para la creación de bridges (network-script) y otra para la creación de las interfaces virtuales para los DomU (vif-script).

Para configurar Xen en modo de red bridge ha y que asegurarnos que solo haya una linea descomentada de network-bridge y una de vif-script, tal y como se muestera abajo.

(network-script network-bridge)

(vif-script vif-bridge)

Las configuraciones en modo bridge dependerá del numero de redes fisicas a conectar y de el número de interfaces fisicas en el Dom0, La configuración de Xen 3.2 en Ubuntu Hardy esta preconfigurada para sistemas con una sola interfaz fisica, y todas las los DomU utilizarán esta interfaz para el flujo de datos entre las diferentes redes, tanto de entrada como de salida,

Ahora reiniciamos el servidor para que inicie con la configuración de modo bridge.

Configuración predeterminada para una sola interfaz de red

Cuando Ubuntu inicia con xen en modo bridge se ejecuta el script /etc/xen/scripts/network-bridge realiza las siguientes tareas:

  1. Crea un nuevo bridge llamado xenbr0
  2. La interfaz Ethernet real eth0 es desactivada
  3. La dirección IP y MAC de eth es copiada a la interfaz de red virtual veth0
  4. La interfaz real eth0 es renombrada a peth0
  5. La interfaz virtual veth0 es renombrada a eth0
  6. peth y vif0.0 son agregadas al bridge xenbr0
  7. El bridge, peth0, eth0 y vif0.0 son activados

Al final el sistema quedará algo así:

Xen_Red_Bridge_una_interfaz_y_puertos

Como vemos la interfaz fisica peth0 esta conectada al switch de la red LAN y a su vez al bridge eth0, el cual se usa como la interfaz local para el Dom0, y usará la configuración definida en /etc/network/interfaces, por ejemplo, el archivo /etc/network/interfaces en Dom0 esta así:

# Interfaz Local para red LAN
auto eth0
iface eth0 inet static
  address 192.168.1.163
  netmask 255.255.255.0
  gateway 192.168.1.1

Podemos ver información de la red así

root@actiaxh:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:18:8b:fd:7b:7c
          inet addr:192.168.1.163  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::218:8bff:fefd:7b7c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:251 errors:0 dropped:0 overruns:0 frame:0
          TX packets:223 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:23932 (23.3 KB)  TX bytes:23395 (22.8 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

peth0     Link encap:Ethernet  HWaddr 00:18:8b:fd:7b:7c
          inet6 addr: fe80::218:8bff:fefd:7b7c/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:247 errors:0 dropped:0 overruns:0 frame:0
          TX packets:227 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:28074 (27.4 KB)  TX bytes:24633 (24.0 KB)
          Interrupt:16

Podemos ver el bridge y sus puertos con el siguiente comando

root@actiaxh:~# brctl show
bridge name     bridge id               STP enabled     interfaces
eth0            8000.00188bfd7b7c       no              peth0

Cuando creamos maquinas virtuales con xen-create-image solo le asignamos la configuración para la interfaz de red eth0 (predeterminada) en DomU, esto creará un nuevo puerto en el bridge, una interfaz vif1.0 la cual estará conectada a la interfaz virtual eth0 en el DomU, como se muestra en la siguiente imagen.

Xen_Red_Bridge_una_interfaz_y_un_DomU

Si crea más DomU se crearán más interfaces vifX, por ejemplo el DomU 2 tendrá asignada una interfaz virtual eth0 la cual estará conectada al bridge mediante el puerto vif2.0, todas las maquinas DomU por default peth0 para comunicarse con la demás red, habrá ocaciones en donde usted no quiere que todas sus maquinas salgan por una misma interfaz de red, ya se por cuestiones de rendimiento o de seguridad, en todo caso, usted puede agregar una interfaz de red fisica a su sistema y puede crear otro bridge a la que se conectará la maquina virtual, por ejemplo quiere tener una m aquina virtual como firewall/router y quiere tener una interfaz conectada directamente el modem de internet o router y que además este conectado al primer bridge para que todas las demás maquinas en la red puedan usar este equipo como gateway para salir a Innterne, en la sección se verá.

Configuración de Xen con red basada en bridge con multiples interfaces de red fisicas

La configuración actual no nos sirve del todo ya que solo se crea un bridge al que se le conecta una sola interfaz fisica, en nuestro caso vamos a agregar una interfaz fisica al sistema, la cual queremos que sea usada exclusivamente por el firewall/gateway, para esta nueva configuración tendremos que crear un script wrapper para /etc/xen/scripts/network-bridge el cual lo ejecutará dos veces para crear dos bridges.

Crearemos el script /etc/xen/scripts/multi-network-bridge con el siguiente contenido

#!/bin/sh
/etc/xen/scripts/network-bridge $1 netdev=eth0
/etc/xen/scripts/network-bridge $1 netdev=eth1

Guarde el archivo y asignele permisos de ejecucón

root@actiaxh:~# chmod +x /etc/xen/scripts/multi-network-bridge

Ahora tiene que cambiar la ruta del script para crear bridges en el archivo de configuración /etc/xen/xend-config.sxp, cambiar de

(network-script network-bridge)

por

(network-script multi-network-bridge)

Ahora reinicie el equipo, este será el último por ahora.

Al iniciar Xen se ejecutará el script multi-network-script y creará el segundo bridge eth1 conectado a la interfaz peth0, como se ve aqui

root@actiaxh:~# ifconfig peth1
peth1     Link encap:Ethernet  HWaddr 00:15:17:38:3e:28
          UP BROADCAST PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0xece0 Memory:fe9e0000-fea00000

También podemos ver la información de los bfidges

root@actiaxh:~# brctl show
bridge name     bridge id               STP enabled     interfaces
eth0            8000.00188bfd7b7c       no              peth0
eth1            8000.001517383e28       no              peth1

eth0 de DomU2 estará conectada al bridge eth0 y

eth1 de Domu2 estará conectada al bridge eth1 que estará conectada directamente al modem de internet

Modificaremos el archivo de configuración /etc/xen/firewall.cfg y cambiaremos la linea vif para indicarle los bridges

Por default easta así:

vif         = [ 'mac=00:16:3E:EF:91:2F' ]

Ese MAC address se genero automáticamente y por default quedamos que utiliza el primer bridge eth0, para agregarle otra interfaz a este DomU debemos de cambiar la linea así:

vif         = [ 'mac=00:16:3E:EF:91:2F, bridge=eth0',
                'mac=00:16:3e:07:31:85, bridge=eth1']

Se recomienda utilizar el rango de direcciones MAC reservadas para Xen, el rango es 00:16:3e:xx:xx:xx, puede utilizar un script para generar MAC de forma aleatoria, cree el script /usr/local/bin/macgen.py con el siguiente contenido:

#! /usr/bin/python
# macgen.py script generates a MAC address for Xen guests
#
import random
mac = [ 0x00, 0x16, 0x3e,
random.randint(0x00, 0x7f),
random.randint(0x00, 0xff),
random.randint(0x00, 0xff) ]
print ':'.join(map(lambda x: "%02x" % x, mac))

Guarde el archivo y dele permisos de ejecución.

root@actiaxh:~# chmod +x /usr/local/bin/macgen.py

Ahora genere una dirección MAC aleatoria.

root@actiaxh:~# macgen.py
00:16:3e:29:c6:fb

NOTA: No olvide verificar que no este utilizando una dirección que ya este asignada.

Cuando ininicia la maquina firewall con esta configuración la red se verá así:

Xen_Red_Bridge_Dos_interfaces_y_Dos_DomU

Comandos para administrar las maquinas virtuales

xm

Referencias

http://wiki.xensource.com/xenwiki/XenNetworking

Este es mi blog personal en Compugraf, el objetivo es que sirva como una bitácora con experiencias, tips, noticias relacionadas al software libre y GNU/Linux. Me pueden contactar en:

E-mail: jmedina[aRR0Ba]e-compugraf.com

IM (MSN/Gtalk): jmedina[aRR0Ba]e-compugraf.com

Mis Galerias

Lun Mar Mié Jue Vie Sáb Dom
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28