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

4.3 Erstellen eines virtuellen Netzwerkes von einer virtuellen Maschine (Optional)

(Dieses Kapitel ist optional.)

In diesem Kapitel möchte ich ein virtuelles Netzwerk mit meinen virtellen Maschinen erstellen, das heißt ein Netzwerk, das sich von dem Netzwerk dom0 unterscheidet

Einen Abriss von dem, was ich tun möchte, kannst Du hier finden: http://wiki.xensource.com/xenwiki/XenNetworkingUsecase#head-7f23d0f2248cb0c70458f9339b4405e2b1bfc271
Das gleiche habe ich auch für Xen 2.0.7 gemacht: http://www.howtoforge.com/perfect_xen_setup_debian_ubuntu_p6. Jedoch hat sich die Vorgehensweise für Xen 3 völlig geändert. Xen 3 konfiguriert alle Firewall Regeln, Gateways, etc. automatisch. Weiterhin brauchen wir keine dummy Netzwerkoberfächen mehr für unser virtuelles Netzwerk. Es ist wichtig zu wissen, dass Xen 3 Gateways vom 10.x.x.x Netz an unsere virtuellen Maschinen übergibt, also ist es eine gute Idee auch IP Adressen vom 10.x.x.x Netz unseren virtuellen Maschinen zuzuordnen. Wenn Du ihnen IP Adressen vom 192.168.3.x Netz gibst (wie wir das mit Xen 2.0.7 auf http://www.howtoforge.com/perfect_xen_setup_debian_ubuntu_p6) gemacht haben, dann werden Deine virtuellen Maschinen keinen Zugang zum Internet haben.

Also werden wir xen1.example.com die IP Adresse 10.0.0.1 und xen2.example.com die IP Adresse 10.0.0.2 zuweisen.

Zuerst bearbeiten wir die Datei/etc/xen/xend-config.sxp und 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 Konfigurationsdatei 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 # Mon May 28 20:53:05 2007. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.18-xen' 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 # Mon May 28 21:22:31 2007. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.18-xen' 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'
Fahr danach xen1.example.com und xen2.example.com runter (wenn sie laufen):

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

Warte ein paar Sekunden und kontrolliere mit xm list dass xen1.example.com und xen2.example.com runter gefahren sind. Fahre dann das System erneut hoch:

shutdown -r now

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

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

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

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

Nachdem beide virtuelle Maschinen gestartet sind, müssen wir uns auf xen1.example.com einloggen. 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

Das gleiche führen wir auf 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

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

Jetzt solltest Du in der Lage sein xen2.example.com von xen1.example.com anzupingen und vice versa. Und Du solltest ebenfalls in der Lage sein dom0 und hosts im Internet anzupingen!

Lass uns nun davon ausgehen, dass wir einen Web Server auf Port 80 auf xen1.example.com und einen Mail Server au Port 25 auf xen2.example.com haben. Da diese in ihrem eigenen Netzwerk (10.x.x.x) sind, können wir auf sie nicht von außen zugreifen, es sei denn wir leiten diese Ports zu der entsprechenden VM weiter. Die notwendigen Port-Weiterleitungs-Regeln können 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 jetzt mit dom0 auf Port 80 verbinden, werden wir zu xen1.example.com weitergeleitet. Das gleiche gilt für Port 25 und xen2.example.com.

Natürlich gehen die Weiterleitungs-Regeln verloren, wenn wir dom0 erneut hochfahren. Daher stellen wir die Regeln in das Verzeichnis /etc/network/if-up.d/iptables, welches automatisch ausgeführt wird, wenn das System hochfährt:

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

Wann immer Du zusätzliche Port-Weiterleitungs-Reglen benötigst, führe sie in der dom0 Kommandozeile aus und füge sie zu /etc/network/if-up.d/iptables hinzu, sodass sie auch nach dem Hochfahren verfübar sind.

5 Installation aus dem Quelltext

Lass folgende Befehle laufen:

apt-get remove exim4 exim4-base lpr nfs-common portmap pidentd pcmcia-cs pppoe pppoeconf ppp pppconfig

apt-get install iproute bridge-utils python-twisted binutils zlib1g-dev python-dev transfig bzip2 screen ssh debootstrap libcurl3-dev libncurses5-dev x-dev build-essential gettext


5.1 Installation von Xen

Jetzt laden wir xen-3.1.0-src.tgz von hier http://www.xensource.com/download/dl_31tarballs.html runter und entpacken es:

cd /usr/src
wget http://bits.xensource.com/oss-xen/release/3.1.0/src.tgz/xen-3.1.0-src.tgz
tar -xvzf xen-3.1.0-src.tgz

Dann erstellen wir Xen. Dies erzeugt einen Xen Kernel (2.6.18-xen). Wir müssen dies tun bevor wir individuelle Kernel für dom0 und domU erstellen können. Das kann lange dauern, also sei geduldig:

cd xen-3.1.0-src/
make world
make install
mv /lib/tls /lib/tls.disabled

Nun ist Xen installiert. Um Xen's Dienste beim Hochfahren automatisch starten zu lassen, führen wir Folgendes aus:

update-rc.d xend defaults 20 21
update-rc.d xendomains defaults 21 20

Wir brauchen eine Ramdisk für unseren neuen Xen Kernel, dafür führen wir Folgendes aus:

depmod 2.6.18-xen
apt-get install yaird

Um die Ramdisk zu erstellen, lassen wir Folgendes laufen

mkinitrd.yaird -o /boot/initrd.img-2.6.18-xen 2.6.18-xen

Der letzte Befehl erstellt die Ramdisk /boot/initrd.img-2.6.18-xen.

Als Nächstes fügen wir unseren neuen Kernel Grub, unserem Bootloader, hinzu. Dies führen wir mit nur einem einzigen Befehl aus:

update-grub

Starte das System jetzt neu:

shutdown -r now

In der Kommandozeile sollte Grub nun Xen 3.1.0 / Debian GNU/Linux, kernel 2.6.18-xen als ersten Kernel auflisten und ihn automatisch hochfahren:


Wenn keine Fehlermeldung auftritt, dann ist alles in bester Ordnung!

Nun kannst Du den 2.6.18-xen Kernel für das Gastsystem und für die virtuellen Maschinen verwenden (wie in der Xen Installation aus dem Binärpaket, da nutzen wir auch nur einen Kernel für beide Systeme), oder Du erstellst einen dom0 Kernel und einen domU Kernel (was Dir erlaubt, spezielle Kernel für jeden einzelnen Fall zu erstellen) was ich in den folgenden zwei Kapiteln zeigen werde.

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