Das Perfekte Xen 3.1.0 Setup für Debian Etch (i386) - Seite 5

5.5 Ein lokales virtuelles Netzwerk für die virtuellen Maschinen erstellen (optional)

(Dieses Kapitel ist optional.)

In diesem Kapitel möchte ich ein virtuelles Netzwerk mit meinen virtuellen Maschinen erstellen, d. h. ein Netzwerk, das anders ist als das Netzwerk von dom0.

Ein Abriss von dem, was ich vorhabe, findest Du hier: http://wiki.xensource.com/xenwiki/XenNetworkingUsecase#head-7f23d0f2248cb0c70458f9339b4405e2b1bfc271
Das Gleiche habe ich mit Xen 2.0.7 hier durchgeführt: http://www.howtoforge.com/perfect_xen_setup_debian_ubuntu_p6. Jedoch hat sich die Prozedur für Xen 3 vollkommen verändert. Xen 3 konfiguriert alle Firewall Rules, Gateways, etc. automatisch. Weiterhin benötigen wir kein Dummy Netzwerk Interface mehr für unser virtuelles Netzerk. Es ist wichtig zu wissen, dass Xen 3 unseren virtuellen Maschinen Gateways vom 10.x.x.x Netz zuweist. Es macht sich also ganz gut auch IP Adressen vom 10.x.x.x Netz unseren virtuellen Maschinen zuzuweisen. Wenn Du ihnen IP Adressen vom 192.168.3.x Netz gibst (wie wir es mit Xen 2.0.7 auf http://www.howtoforge.com/perfect_xen_setup_debian_ubuntu_p6 durchgeführt haben), dann werden Deine virtuellen Maschinen keinen Zugriff auf das Internet haben.

Als weisen wir xen1.example.com die IP Adresse 10.0.0.1 und xen2.example.com die IP Adresse 10.0.0.2 zu.

Zunächst bearbeiten wir /etc/xen/xend-config.sxp, deaktivieren Bridging und aktivieren stattdessen NAT (Network Address Translation):

vi /etc/xen/xend-config.sxp


[...]
#(network-script network-bridge) #(vif-script vif-bridge) (network-script network-nat) (vif-script vif-nat) [...]
Dann ändern wir die IP Adresse in der Konfigurationsdateien von xen1.example.com und xen2.example.com:

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


#
# Configuration file for the Xen instance xen1.example.com, created on # Tue May 29 01:21:54 2007. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.18-xenU' memory = '32' # # Disk device(s). # root = '/dev/hda1 ro' disk = [ 'file:/vserver/domains/xen1.example.com/disk.img,hda1,w', 'file:/vserver/domains/xen1.example.com/swap.img,hda2,w' ] # # Hostname # name = 'xen1.example.com' # # Networking # vif = [ 'ip=10.0.0.1' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'

vi /etc/xen/xen2.example.com.cfg


#
# Configuration file for the Xen instance xen2.example.com, created on # Tue May 29 01:50:38 2007. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.18-xenU' memory = '32' # # Disk device(s). # root = '/dev/hda1 ro' disk = [ 'file:/vserver/domains/xen2.example.com/disk.img,hda1,w', 'file:/vserver/domains/xen2.example.com/swap.img,hda2,w' ] # # Hostname # name = 'xen2.example.com' # # Networking # vif = [ 'ip=10.0.0.2' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Fahre danach xen1.example.com und xen2.example.com runter (wenn Du sie gerade ausführst):

xm shutdown xen1.example.com
xm shutdown xen2.example.com

Warte ein paar Sekunden und überprüfe, ob mit xm list, dass xen1.example.com und xen2.example.com runter gefahren sind. Starte dann das System neu:

shutdown -r now

Falls xen1.example.com und xen2.example.com beim Hochfahren nicht automatisch starten, starte sie jetzt:

xm create /etc/xen/xen1.example.com.cfg

xm create /etc/xen/xen2.example.com.cfg

-----------------------------------------------------

Nachdem beide vm gestartet sind, müssen wir uns auf xen1.example.com anmelden. Dort öffnen wir /etc/network/interfaces und ändern die IP Adresse (10.0.0.1), das Gateway (10.0.0.254) und die Netzmaske (255.0.0.0):

xen1.example.com:

vi /etc/network/interfaces


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 10.0.0.1 gateway 10.0.0.254 netmask 255.0.0.0 # post-up ethtool -K eth0 tx off # # The commented out line above will disable TCP checksumming which # might resolve problems for some users. It is disabled by default #
Dann starten wir das Netzwerk auf xen1.example.com neu:

xen1.example.com:

/etc/init.d/networking restart

Nun führen wir das Gleiche für xen2.example.com aus (dieses Mal setzen wir die IP Adresse auf 10.0.0.2):

xen2.example.com:

vi /etc/network/interfaces


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 10.0.0.2 gateway 10.0.0.254 netmask 255.0.0.0 # post-up ethtool -K eth0 tx off # # The commented out line above will disable TCP checksumming which # might resolve problems for some users. It is disabled by default #
Dann starten wir das Netzwerk auf xen2.example.com neu:

xen2.example.com:

/etc/init.d/networking restart

-----------------------------------------------------

Nun müsstest Du in der Lage sein, xen1.example.com von xen2.example.com aus anpingen zu können und umgekehrt. Außerdem müsstest Du nun dom0 und hosts im Internet anpingen können!

Lass uns nun davon ausgehen, dass wir einen Web Server auf Port 80 auf xen1.example.com und einen Mail Server auf Port 25 auf xen2.example.com haben. Da sie sich in ihrem eigenen Netzwerk befinden (10.x.x.x), können wir von außerhalb nicht auf sie zugreifen, insofern wir sie nicht an die entsprechende vm weiterleiten. Wir können die notwendigen Port Forwarding Rules auf dom0 mit der Hilfe von iptables erstellen:

iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 10.0.0.1:80
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 25 -j DNAT --to 10.0.0.2:25

Wenn wir uns nun mit dom0 auf Port 80 verbinden, werden wir an xen1.example.com weitergeleitet. Das Gleiche gilt für Port 25 und xen2.example.com.

Natürlich gehen die Forwarding Rules verloren, wenn wir dom0 neu starten. Daher stecken wir die Rules in /etc/network/if-up.d/iptables, was automatisch ausgeführt wird, wenn das System startet:

vi /etc/network/if-up.d/iptables


#!/bin/sh
### Port Forwarding ### iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 10.0.0.1:80 iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 25 -j DNAT --to 10.0.0.2:25
Nun müssen wir das Skript ausführbar machen:

chmod 755 /etc/network/if-up.d/iptables

Immer wenn Du weitere Port Forwarding Rules benötigst, führe sie in der Kommandozeile von dom0 aus und füge sie an /etc/network/if-up.d/iptables an, sodass sie auch nach dem Neustart verfügbar sind.

6 Links

1 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: sniffer3000

Hallo

Bei mir funktioniert bis auf eine (sehr wichtige:-) Kleinigkeit wirklich alles.
Sobald Xen installiert ist und der Rechner rebootet hat (noch vor "apt-get install xen-tools"), ist die Netzwerkverbindung absolut tot.

Wenn ich im GRUB das Debian ohne Xen auswähle, funktioniert alles einwandfrei. Aber sobald ich Debian als DomU (ich hoffe das ist der richtige Begriff) ausführe, kann ich nicht einmal mehr ne IP anoingen.

z.B. bei "ping 192.168.1.1" gibt er folgende Meldung aus:
"connect: Network is unreachable"

An was kann das liegen? Ich wäre wirklich sehr happy, wenn jemand einen Tip für mich hätte.
(Ich beschäftige mich noch nicht lang mit Linux)

Danke im Voraus