XEN Konfiguration mit mehreren bzw. zwei Netzwerkkarten

Szenario

Ein Server besitzt zwei (oder mehrere) Netzwerkkarten die an unterschiedliche Internet Service Provider (ISP) Uplinks angeschlossen sind. Auf dem Server ist XEN aus den Debian Etch Quellen installiert und die unterschiedlichen VServer sollen IP Adresse beider ISP beziehen und darüber erreichbar sein.

Netzwerk Konfiguration:

ISP Interface IP-Range default gateway
uplink1 - ISP1 eth0 192.168.0.0/24 ja
uplink2 - ISP2 eth1 172.16.0.0/24 nein

Domain-0 Konfiguration:

IP-Adresse Interface
192.168.0.10 eth0
172.16.0.10 eth1

V-Server Konfiguration:

Server Netzwerk Bridge IP-Adresse
vserver1 eth0 - ISP1 xenbr0 192.168.0.20
vserver2 eth1 - ISP2 xenbr1 172.16.0.40

Netzwerk Einstellungen am Hostsystem Domain-0

Damit das Hostsystem überhaupt in der Lage ist Traffic über den bisher nicht aktiven Uplink (eth1) und somit über beide ISPs zu versenden, bedarf es dem setzen von einigen Routingregeln. Das Script geht wie oben beschrieben davon aus, dass eth0 der default Gateway (IP: 192.168.0.1) sein soll.

Gateway Routing

/root/gateway_script.sh:

#!/bin/sh

# eth0
export IF1="eth0";
export IP1="192.168.0.10";
export P1="192.168.0.1";
export P1_NET="192.168.0.0";

# eth1
export IF2="eth1";
export IP2="172.16.0.10";
export P2="172.16.0.1";
export P2_NET="172.16.0.0";

# lo
export IF0="lo";
export P0_NET="127.0.0.0";

# script
ip route delete default;
ip route delete default;
ip route add $P1_NET dev $IF1 src $IP1 table 1;
ip route add default via $P1 table 1;
ip route add $P2_NET dev $IF2 src $IP2 table 2;
ip route add default via $P2 table 2;
ip route add $P1_NET dev $IF1 src $IP1;
ip route add $P2_NET dev $IF2 src $IP2;
ip rule add from $IP1 table 1;
ip rule add from $IP2 table 2;
ip route add $P0_NET dev $IF0 table 1;
ip route add $P2_NET dev $IF2 table 1;
ip route add 127.0.0.0/8 dev lo table 1;
ip route add $P0_NET dev $IF0 table 2;
ip route add $P1_NET dev $IF1 table 2;
ip route add 127.0.0.0/8 dev lo table 2;
/sbin/route add default gw 192.168.0.1;
echo "done.";
exit
chmod 700 /root/gateway_script.sh

Eintragen eines „reboot“ Cronjobs der das Script einmal nach einem reboot ausführt:

>crontab -e
@reboot /root/gateway_script.sh


Netzwerk Einstellungen

/etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.0.10
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

auto eth1
iface eth1 inet static
        address 172.16.0.10
        netmask 255.255.255.0
        network 172.16.0.0
        broadcast 172.16.0.255
        gateway 172.16.0.1

Danach ein Reboot oder ein neustarten der Netzwerkverbindung und Domain-0 sollte über beide Uplinks und die jweilige IP erreichbar sein. Des Weiteren wird der Traffic richtig von „innen nach außen“ versendet, also selektiert was über eth0 und was über eth1 versendet werden muss.

XEN Einstellungen

Um die VServer variabel je nach ISP einstellen zu können muss Bridged Routing mittels eines eigenen Scripts aktiviert werden:

/etc/xen/xend-config.sxp:

#(network-script network-bridge)
(network-script my-network-script)

## Für Debian Etch ##:

/etc/xen/scripts/my-network-script:

#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=0 netdev=eth0 bridge=xenbr0
"$dir/network-bridge" "$@" vifnum=1 netdev=eth1 bridge=xenbr1

####

## Für Debian Lenny ##:

/etc/xen/scripts/my-network-script:

#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" netdev=eth0
"$dir/network-bridge" "$@" netdev=eth1

####

Weiter für beide Systeme

chmod 755 /etc/xen/scripts/my-network-script

Danach muss xend neugestartet werden. Die unter /etc/xen/ abgelegten VServer Konfigurationsdateien müssen im Netzwerkabschnitt angepasst werden:

...
# eth0 für ISP1
vif = ['ip=192.168.0.x,mac=00:17:de:ad:fa:ce,bridge=xenbr0']
...

oder

...
# eth1 für ISP2
vif = ['ip=172.16.0.x,mac=00:16:de:ad:be:ef,bridge=xenbr1']
...

Die VServer bzw. Xen müssen nach Änderungen an den Konfigurationsdateien immer neugestartet werden!

Erreichte Ziele

Das Debian Xen Hostsystem ist nun über beide Uplinks bzw. Gateways und jeweils einer IP des jeweiligen ISPs im Internet erreichbar. Die VServer können über Bridged Routing sowohl über ISP1 (eth0) als auch über ISP2 (eth1) angebunden werden. Es natürlich möglich mehr als nur zwei Netzwerkkarten und ISPs an einen Server anzuschließen. Vorallem das Routingscript wird jedoch so lange, dass ich an dieser Stelle darauf verzichte :)

– Dieses HowTo enstand als Ergänzung zu http://www.debian-administration.org/articles/470

Schreibe einen Kommentar