Routing und Bridging in einer Xen DomU

Pierre Bernhardt pierre at starcumulus.owl.de
Fri Aug 17 15:58:00 CEST 2007


Hallo,

ich habe unter etch eine Dom0 so aufgesetzt, dass die 3 Netzwerkkarten
nun einer DomU zugeordnet sind. Die DomU wurde dafür als netback-Dom
konfiguriert.

Nun habe ich erst mal folgende Konfiguration der Schnittstellen
durchgeführt. Der einfachheit halber nenne ich eine andere unpreviligierte
Dom einfach mal DomT:

eth0-2 werden als erstes durch die Interfaces-Datei festgelegt.
eth0 ist nur mit einem lokalem NEtzwerkschwithc verbunden, sagen wird
dem Workstation-Netz. (10.0.1.0/24)
eth1 ist auch mit einem lokalen Netzwerk verbunden und soll per
Bridging auch den anderen DomU's zur Verfügung stehen: Ich nenne
es man das Server-Netz. (10.0.2.0/24)
eth2 ist mit einem Internetrouter verbunden und bekommt von dort
eine variable IP-Addresse mitgeteilt (dhcp) wo auch das Default-
Gateway steht. (192.168.1.0/24, GW 192.168.1.1, DNS 192.168.1.1)

Ohne gestartete Xen-Skripte sind alle 3 Netzwerkkarten verfügbar
und habe einen einfachen Funktionstest mit festen IP's und einem
per X-Link-Kabel angebundenen Notebook den ping-Test bestanden.

Nun wird das Notebook per X-Link an eth0 angeschlossen und bekommt
erst mal fest IP 10.0.1.100/24 GW 10.0.1.1.

Die Bridge xenbr1 wird gestartet durch das in der DomU installierte
Skript mittels
/etc/xen/scripts/network-bridge netdev=eth1 bridge=xenbr1 start

Forwarding wir auf der DomU eingeschaltet mittels:

echo 1 >/proc/sys/net/ipv4/ip_forward

Die DomT wird gestartet ( vif = [ 'backend=DomU' ] in cfg) und bekommt
per Interfaces die IP 10.0.2.10/24 GW 10.0.2.1

Anschließende Tests per ping zeigten:

A. DomT -> 10.0.2.1 ok
B. DomT -> 10.0.1.1 ok
C. DomT -> 10.0.1.100 ok
D. Noteb -> 10.0.1.1 ok
E. Noteb -> 10.0.2.1 ok
F. Noteb -> 10.0.1.10 ok

Das heisst Notebook und DomT können sind unterhalten. Die DomU
fungiert hier als normaler Router.

Da die DomU derzeit nur eine IP zur Verfügung hat (wird mal erweitert)
sollen alle Verbindungen ins Internet über eth2 maskiert werden.
Eine Filterung wird erst später notwendig, daher lasse ich das
hier erst mal noch ausser Betracht.
Also füge ich zu Testzwecken erst mal mit festen Absenderaddressen
eine Regel für das Notebook hinzu:

iptables -t nat -A POSTROUTING -o eth2 -s 10.0.1.100 -d ! 10.0.1.100 -j MASQUERADE


Die oben genannten Tests werden wiederholt (A. bis F.) und sind ok.
Laut tcpdump findet auch kein MASQUERADE, wie erwartet, statt.

G. Noteb -> 192.168.1.1 (Router) ok

tcpdump:
G1. eth0: 10.0.1.100 <-> 192.168.1.1 ok
G2. eth2: 192.168.1.100 <-> 192.168.1.1 ok

Nun wird DomT maskiert:

iptables -t nat -A POSTROUTING -o eth2 -s 10.0.2.10 -d ! 10.0.2.10 -j MASQUERADE

Wieder Test nun A. bis G. sind ok.

H. DomT -> 192.168.1.1 notok

tcpdump:
H1. eth1 10.0.2.10 -> 192.168.1.1 (echo request)
H2. eth2 10.0.2.10 -> 192.168.1.1 (echo request)
         ^^^^^^^^^
Eine Prüfung des Zählers mittels iptables -t nat -L -v
zeigt mir auch, dass die POSTROUTING-Regel nicht angesprungen
wird.

Die Absendeaddresse wird nicht ausgetauscht !!!

Also habe ich nun noch eine Workstation ausgekramt und per fester
IP 10.0.2.20/24 GW 10.0.2.1 an eth1 angeschlossen.


ping-Test:

A. bis G. wiederholt: ok

I. WS -> 10.0.2.10 ok
J. WS -> 10.0.2.1 ok
K. WS -> 10.0.1.1 ok
L. Noteb -> 10.0.2.20 ok
M. DomT -> 10.0.2.20 ok

Anschliessend noch eine Rege für MASQUERADING:


iptables -t nat -A POSTROUTING -o eth2 -s 10.0.2.20 -d ! 10.0.2.20 -j MASQUERADE

N. WS -> 192.168.1.1 notok

tcpdump:
N1. eth1 10.0.2.20 -> 192.168.1.1 (echo request)
N2. eth2 10.0.2.20 -> 192.168.1.1 (echo request)
         ^^^^^^^^^

Wieder kein MASQUERADE. Auch iptables -t nat -L -v zeigt wieder mal,
das die passende Regel nicht angesprungen wurde (wie schon bei DomT)

Ich habe dann die DomT mal wieder angehalten.
Anschließend habe ich das Bridging wieder gestoppt mit

/etc/xen/scripts/network-bridge netdev=eth1 bridge=xenbr1 stop

und den Test N. wiederholt: ok

tcpdump:
N1b. eth1 10.0.2.20 <-> 192.168.1.1 ok
N2b. eth2 192.168.1.100 <-> 192.168.1.1 ok

Da scheint es mir so, dass zwar ordentlich geroutet wird, aber sobald
man etwas mit dem nat machen will funktioniert das mit der Bridge und den
dort angeschlossenen Devices nicht.
Weiss jemand Rat?

MfG...
Pierre Bernhardt



More information about the Linux mailing list