Usar múltiples interfaces de red en virtualización Xen

El sistema de virtualización Xen, por defecto configura tanto la Dom0 como las DomU bajo la misma interfaz de red (eth0). En caso de necesitar configurar dos interfaces de red distintas dentro de una misma DomU, o separar cada DomU en una tarjeta de red distinta, hay que realizar ciertos cambios en la configuración.

En este caso vamos a configurar Xen para que una DomU pueda tener dos tarjetas de red virtuales. Para ello debemos crear un nuevo bridge que trabaje con la segunda interfaz de red (eth1).

La configuración inicial de xen es tener un bridge xenbr0 trabajando con la interfaz eth0. Lo que vamos a hacer es crear un nuevo bridge para que trabaje con la interfaz eth1 (xenbr1). Para ello, creamos un nuevo
script dentro de “/etc/xen/scripts/” que levante los dos bridges en el arranque de xen:

$ vim /etc/xen/scripts/network-interfaces

#!/bin/sh
"/etc/xen/scripts/network-bridge" "$@" vifnum=0 netdev=eth0 bridge=xenbr0
"/etc/xen/scripts/network-bridge" "$@" vifnum=1 netdev=eth1 bridge=xenbr1

Modificamos el fichero /etc/xen/xend-config.sxp para que utilice este nuevo script:

#(network-script network-bridge)
  (network-script network-interfaces)

Reiniciamos xen para que coja los cambios:

$ /etc/init.d/xend restart

Y vemos que ya ha levantado el nuevo bridge:

eth0      Link encap:Ethernet  HWaddr 00:0D:60:0F:DE:D6
          inet addr:192.168.0.152  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20d:60ff:fe0f:ded6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:955 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:133768 (130.6 KiB)  TX bytes:10239 (9.9 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0D:60:0F:DE:D7
          inet addr:192.168.0.106  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20d:60ff:fe0f:ded7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4738 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2545 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:460725 (449.9 KiB)  TX bytes:382897 (373.9 KiB)

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 FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:1148 errors:0 dropped:0 overruns:0 frame:0
          TX packets:188 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:165286 (161.4 KiB)  TX bytes:26313 (25.6 KiB)
          Interrupt:16 Memory:ed6f0000-ed700000

peth1     Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:4795 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2569 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:494437 (482.8 KiB)  TX bytes:395195 (385.9 KiB)
          Interrupt:17 Memory:ed4f0000-ed500000

vif0.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:31 errors:0 dropped:0 overruns:0 frame:0
          TX packets:955 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:10239 (9.9 KiB)  TX bytes:133768 (130.6 KiB)

vif0.1    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:2589 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4782 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:389945 (380.8 KiB)  TX bytes:463629 (452.7 KiB)

vif2.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:157 errors:0 dropped:0 overruns:0 frame:0
          TX packets:837 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:32
          RX bytes:12788 (12.4 KiB)  TX bytes:111812 (109.1 KiB)

vif2.1    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:13 errors:0 dropped:0 overruns:0 frame:0
          TX packets:605 errors:0 dropped:348 overruns:0 carrier:0
          collisions:0 txqueuelen:32
          RX bytes:580 (580.0 b)  TX bytes:88879 (86.7 KiB)

virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:9812 (9.5 KiB)

xenbr0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:985 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:130103 (127.0 KiB)  TX bytes:0 (0.0 b)

xenbr1    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:1119 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:150720 (147.1 KiB)  TX bytes:0 (0.0 b)

Una vez levantado el bridge, ya podemos configurarlo en la máquina virtual que queramos, accedemos a su fichero de configuración y cambiamos la línea del vif (los ficheros de configuración de las máquinas virtuales por defecto los tenemos en /etc/xen o /etc/xen/auto):

Antes:

vif = [ "mac=00:16:3e:01:d0:7a,bridge=xenbr0" ]

Después:

vif = [ "mac=00:16:3e:01:d0:7a,bridge=xenbr0", "mac=00:16:3e:01:d1:7a,bridge=xenbr1" ]

Tras esta modificación, si arrancamos la máquina virtual ya podremos configurar la segunda interfaz de red.

3 comentarios en “Usar múltiples interfaces de red en virtualización Xen

  1. Se me olvidó comentar en el artículo que hay que asignar permiso de ejecución al script de las interfaces:

    chmod u+x /etc/xen/scripts/network-interfaces

    Un saludo

  2. Tengo una pregunta Alex, bueno primero te explico mi situacion.
    antes que nada especifico lo que necesito hacer

    tengo que hacer que las 3 interfaces que tengo en la pc tenga salida para cada maquina virtual en cada interfaz.

    fijate que tengo instalado el ubuntu hardy server y el xen 3.2, todo esto lo estoy haciendo como parte de un proyecto, pero beno seguire.
    bueno el dom0 lo tengo con la ip 10.x.x.100 (este seria el que controlara las maquinas virtuales) y tambien ya tengo creado dos dominios que serian:

    xen1.ejemplo.com con la ip 10.x.x.101 y

    xen2.ejemplo.com con la ip 10.x.x.102

    ok, cuando digito:

    ifconfig -a|more

    me muestra que tengo eth0, eth1 y eth2

    eso quiere decir que cuento con 3 interfaces de red(eso es lo que entiendo)

    he configurado cada una con cada una de las ip, asi:

    eth0 esta usando (hasta donde entiendo) la ip de dom0 que seria 10.x.x.100

    eth1 tiene la ip 10.x.x.101

    eth2 tiene la ip 10.x.x.102

    a la hora de hacer el script lo he hecho de esta manera(segun una guia que me han dado)
    aclaro que el nombre de el script es diferente al tuyo y tambien veo que cambia la parte del bridge que dice eth0 en vez de xenbr0 (supongo que depende el sistema operativo)

    vi /etc/xen/scripts/network-script-2bridge

    #!/bin/sh

    dir=$(dirname “$0”)
    “$dir/network-bridge” “$@” vifnum=0 netdev=eth0 bridge=eth0
    “$dir/network-bridge” “$@” vifnum=1 netdev=eth1 bridge=eth1
    “$dir/network-bridge” “$@” vifnum=2 netdev=eth2 bridge=eth2

    guardo el script y luego uso el chmod u+x

    luego modifico el archivo de configuracion de cada maquina(ejemplo en maquina virtual xen1.ejemplo.com):

    vi /etc/xen/xen1.ejemplo.com.cfg

    originalmente en la parte de vif mostraba lo siguiente:


    #networking
    vif = [ ‘ip=10.x.x.101,mac=00:16:3E:32:DF:14’ ]

    y segun la guia tenia que dejarlo asi:


    #networking
    vif = [ ‘ip=10.x.x.101,mac=00:16:3E:32:DF:14,bridge=eth1’ ]

    y asi modifique el archivo de configuracion de la segunda maquina virtual

    y me he quedado hasta aca, no se si todo esto esta bien hecho y tampoco se como comprobar que cada maquina virtual tiene salida por cada interfaz.

    agradecere mucho tu ayuda.

    de antemano gracias!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *