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

Version 1.0
Author: Falko Timme


Dieses Tutorial liefert eine Schritt-für-Schritt Anleitung zur Installation von Xen (Version 3.1.0) auf einem Debian Etch (4.0) System (i386).

Mit Xen kannst Du Gastbetriebssysteme erstellen (*nix Betriebssyteme wie Linux und FreeBSD), so genannte "virtuelle Maschinen" oder domUs, die unter einem Hauptbetriebssytem laufen (dom0). Mit Xen kannst Du Deine Anwendungen in verschiedene virtuelle Maschinen aufteilen, die voneinander völlig unabhängig sind, und trotzdem die gleiche Hardware verwenden (z. Bsp. eine virtuelle Maschine für den Mail Server, eine virtuelle Maschine für eine viel besuchte Webseite, eine andere Maschine, die Deine Kundenwebseiten bedient, eine virtueller Maschine für DNS etc.). Dies spart Geld aber was weitaus wichtiger ist: Es ist sicherer. Wenn die virtuelle Maschine Deines DNS Servers zerhackt wird, hat dies keinen Einfluss auf Deine anderen virtuellen Maschinen. Außerdem kannst Du virtuelle Maschinen von einem Xen Server zum nächsten schieben.

Ich werde Debian Etch (i386) sowohl für das Hauptbetriebssytem (dom0) als auch für das Gastbetriebssystem (domU) verwenden. Im Kapitel 5 werde ich die Installation von Xen aus einem Binärpaket und aus dem Quelltext beschreiben. In einem weiteren Abschnitt jeweils am Ende von Kapitel 4 und 5 werde ich außerdem zeigen, wie man ein virtuelles lokales Netzwerk mit virtuellen Maschinen erstellt, mit dom0 als Router. Kapitel 4 and 5 schließen einander aus .

Diese Anleitung soll ein praktischer Leitfaden sein; er umfasst kein theoretisches Hintergrundwissen. Dies wird in einer Vielzahl anderer Dokumente im Internet abgehandelt.

Dieses Dokument ist ohne jegliche Gewähr! Das heißt, dass diese Verfahrensweise nicht die einzige ist, mit der man dieses System einrichten kann. Es gibt mehrere Wege um ans Ziel zu kommen, dies ist meiner. Daher gewähre ich keinerlei Garantie, dass dieser Weg der richtige für Dich ist!

Eine Notiz für x86_64 systems: Ich habe versucht Xen 3.1.0 auch auf Debian Etch AMD64 zu installieren, aber ungeachtet der Methode (Xen Quelltextinstallation vs. Xen x86_64 binary Installation), konnte der Xen kernel nicht hochfahren (eine Fehlermeldung gab es nicht, allerdings war das Hochfahren sehr langsam und konnte nie beendet werden...).

1 Installation von Debian Etch Host System (dom0)

Du kannst pauschal diesen Anleitungen folgen, jedoch mit wenigen Veränderungen:
dom0's FQDN in diesem Beispiel wird server1.example.com sein, also gebe ich server1 as Hostname und example.com as Domain name ein. server1.example.com's IP Adresse wird in diesem Tutorial 192.168.0.100 sein.

Bei der Partitionierung, wähle ich Manual. Ich erstelle folgende Partitioinen:
  • /boot 150 MB (Primary) (Location for the new partition: Beginning) (ext3) (Bootable flag: on <-- important, otherwise your system will not boot!)
  • swap 1GB (Logical) (Location for the new partition: Beginning)
  • / 3GB (Logical) (Location for the new partition: Beginning) (ext3)
  • /vserver the rest (Logical) (Location for the new partition: Beginning) (ext3)
Wenn der Debian Installer Choose software to install fordert: Nichts anklicken und weiter machen (dom0 sollte so wenig Software wie möglich laufen lassen um keinen Attacken zum Opfer zu fallen. Der Außenwelt wird es nur über SSH zugänglich sein.).

2 Erstellung des Hauptbetriebssytems

Nachdem Du das Basissystem installiert, die Installations-CD entnommen und das Basissystem hochgefahen hast, solltest Du Folgendes laufen lassen

apt-get install ssh openssh-server vim-full

um einen SSH Server zu installieren, damit Du Dich mit einem SSH Klienten wie PuTTY ans System anschließen kannst. Das vim-full Packet stellt sicher, dass der vi Text Editor sich wie erwartet verhält (ohne vim-full kann es passieren, dass Du ein recht komisches Verhalten im vi Text Editor erlebst).

Da der Debian Etch Installer unser System konfiguriert hat um seine Netzwerk Settings via DHCP zu beziehen, müssen wir dies nun ändern, da ein Server eine statische IP Adresse haben sollte. Editiere /etc/network/interfaces und stimme es nach Bedarf ab (in diesem Beispiel-Setup verwende ich die IP Adresse 192.168.0.100):

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 #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1
Lass Dein Netzwerk wieder anlaufen:

/etc/init.d/networking restart

Dann edit /etc/hosts. So soll es aussehen:

vi /etc/hosts


127.0.0.1       localhost.localdomain   localhost
192.168.0.100 server1.example.com server1 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Editiere /etc/resolv.conf und füge einige Nameserver hinzu:

vi /etc/resolv.conf


nameserver 213.191.92.84
nameserver 145.253.2.75 nameserver 193.174.32.18
Lass nun Folgendes laufen

echo server1.example.com > /etc/hostname

und fahre Dein System wieder hoch:

shutdown -r now

Danach lass Folgendes laufen

hostname
hostname -f

Beides sollte dies anzeigen server1.example.com.

Von jetzt an kannst Du einen SSH Klienten wie zum Beispiel PuTTY nutzen und ihn von Deiner Arbeitsstation mit dem Debian Etch Server verbinden. Folge den verbleibenden Schritten dieses Tutorials.

Editiere /etc/apt/sources.list. Kommentier die CD aus. So sollte dies aussehen:

vi /etc/apt/sources.list


#
# deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 NETINST Binary-1 20070407-11:29]/ etch contrib main #deb cdrom:[Debian GNU/Linux 4.0 r0 _Etch_ - Official i386 NETINST Binary-1 20070407-11:29]/ etch contrib main deb http://ftp2.de.debian.org/debian/ etch main deb-src http://ftp2.de.debian.org/debian/ etch main deb http://security.debian.org/ etch/updates main contrib deb-src http://security.debian.org/ etch/updates main contrib
Lass Folgendes laufen

apt-get update

um die apt Packetdatenbank zu aktualisieren und

apt-get upgrade

das neuste update zu installieren (falls es eines gibt).

3 Installation von Xen

Es gibt zwei Varianten Xen zu installieren: Installiere das Binärpaket von der Xen Website oder erstelle Xen und Xen kernels vom Quelltext.

Die erste Variante ist einfacher. In meinen letzteren Tutorials habe ich immer empfohlen, Xen aus dem Quelltext zu erstellen, da einige Features wie quota oder iptables im Binärpaket fehlten. Das hat sich geändert. Du wirst höchstwahrscheinlich alle Features im Binärpaket finden, die Du brauchst. Daher empfehle ich das Binärpaket für die Installation. Wenn Du allerdings volle Kontrolle über die Features im Xen kernel haben möchtest oder Du ein besoneres Feature brauchst, welches nicht im Binärpaket enthalten ist, solltest Du Xen vom Quelltext erstellen.

Im folgenden Kapitel 4 wird beschrieben, wie Du das Xen Binärpaket, welches für Anfänger eher geeignet ist, installieren kannst. Kapitl 5 beschäftigt sich mit dem Erstellen und Installieren von Xen aus dem Quelltext. Kapitel 4 und 5 schließen einander aus! Folge entweder Kapiel 4 oder 5!

4 Installation des Binärpaketes

Führe folgende Befehle aus:

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

apt-get install screen ssh debootstrap python python-twisted iproute bridge-utils libcurl3-dev libssl0.9.7


4.1 Installation von Xen

Lade xen-3.1.0-install-x86_32.tgz von dem Link http://www.xensource.com/download/dl_31tarballs.html, entpacke es und lass das Installationsskript laufen:

cd /usr/src
wget http://bits.xensource.com/oss-xen/release/3.1.0/bin.tgz/xen-3.1.0-install-x86_32.tgz
tar xvzf xen-3.1.0-install-x86_32.tgz
cd dist/
./install.sh
mv /lib/tls /lib/tls.disabled

Nun ist Xen installiert. Um die Xen Dienste starten zu lassen, wenn das System hochfährt, führe Folgendes aus:

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

Wir brauchen eine Ramdisk für unseren neuen Kernel, daher 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 zu Grub, unserem Bootloader hinzu. Dies können wir mit einem einzigen Befehl ausführen:

update-grub

Fahre nun das System erneut hoch:

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 Dein System keinerlei Fehlermeldungen anzeigt, ist alles Bestens!

Lass Folgendes laufen

uname -a

und Dein neuer Xen Kernel sollte auftauchen:

server1:~# uname -a
Linux server1.example.com 2.6.18-xen #1 SMP Fri May 18 16:11:33 BST 2007 i686 GNU/Linux

4.2 Virtuelle Maschinen erstellen (domU)

Wir werden xen-tools verwenden um virtuelle Maschinen zu erstellen. xen-tools vereinfachen die Erstellung von virtuellen Maschinen - bitte sieh Dir folgende Anleitung an um mehr zu erfahren: http://www.howtoforge.com/xen_tools_xen_shell_argo. xen-tools sind als Debian Etch Paket verfübgar, also installieren wir es jetzt:

apt-get install xen-tools

Als Nächstes bearbeiten wir /etc/xen-tools/xen-tools.conf. Diese Datei beinhaltet die Standardwerte, die vom xen-create-image Skript verwendet werden, wenn Du nicht andere Werte in der Kommandozeile festlegst. Ich habe folgende Werte unf habe den Rest unberühert gelassen:

vi /etc/xen-tools/xen-tools.conf


[...]
gateway = 192.168.0.1 netmask = 255.255.255.0 passwd = 1 kernel = /boot/vmlinuz-2.6.18-xen #initrd = /boot/initrd.img-2.6.16-2-xen-686 mirror = http://ftp2.de.debian.org/debian/ [...]
Bitte pass auf, dass Du die initrd Zeile auskommentierst! Zumindest bei meinen Installationen habe ich nie eine Ramdisk für virtuelle Maschinen gebraucht.

Die passwd = 1 Zeile bewirkt, dass Du ein Root Passwort einrichten kannst, wenn Du eine neue Gast Domain anlegst. In der kernel Zeile musst Du den domU Kernel festlegen, den Du für Deine Gast Domain verwenden möchtest. In der mirror Zeile bestimmst Du einen Debian Spiegel, der in Deiner Nähe ist.

Vergewissere Dich, dass Du ein Gateway und eine Netzmaske festlegst. Wenn Du das Gateway und die Netzmaske nicht in der Kommandozeile festlegst, wenn Du xen-create-image verwendest, werden Deine Gast Domains kein Netzwerkbetrieb haben, auch wenn Du eine IP Adresse eingerichtet hast!

Lass uns nun unsere erste Gast Domain xen1.example.com mit der IP Adresse 192.168.0.101 anlegen:

xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide
--ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
--dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xen
--debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

Viele Parameter werden nicht benötigt, da wir die gleichen Angaben bereits in /etc/xen-tools/xen-tools.conf festgelegt haben, aber es zeigt, dass Du die gewünschten Einstellungen entweder in der Kommandozeile oder in /etc/xen-tools/xen-tools.conf festlegen kannst. Bitte vergewissere Dich, dass Du sie festlegst/festgelegt hast, da Deine virtuell Maschine sonst möglicherweise nicht hochfährt!

(Um mehr über verfügbare Optionen zu erfahren, sieh Dir die xen-create-image Man Page an (Manual Page):

man xen-create-image

)

Der xen-create-image Befehl wird nun für uns die xen1.example.com virtuelle Maschine erstellen. Das kann ein paar Minuten dauern. Die Ausgabe sollte ähnlich wie diese aussehen:

server1:~# xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide
> --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
> --dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xen
> --debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

General Infomation
--------------------
Hostname : xen1.example.com
Distribution : etch
Fileystem Type : ext3

Size Information
----------------
Image size : 2Gb
Swap size : 256Mb
Image type : sparse
Memory size : 32Mb
Kernel path : /boot/vmlinuz-2.6.18-xen

Networking Information
----------------------
IP Address 1 : 192.168.0.101
Netmask : 255.255.255.0
Gateway : 192.168.0.1

WARNING
-------
Loopback module not loaded and you're using loopback images
Run the following to load the module:

modprobe loop loop_max=255


Creating swap image: /vserver/domains/xen1.example.com/swap.img
Done

Creating disk image: /vserver/domains/xen1.example.com/disk.img
Done

Creating ext3 filesystem on /vserver/domains/xen1.example.com/disk.img
Done

Installing your system with debootstrap mirror http://ftp2.de.debian.org/debian/
Done

Running hooks
Done

No role script specified. Skipping


Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done

Logfile produced at:
/var/log/xen-tools/xen1.example.com.log
server1:~#

(Die Warnung kannst Du ignorieren:

WARNING
-------
Loopback module not loaded and you're using loopback images
Run the following to load the module:

modprobe loop loop_max=255

die virtuelle Maschine wird trotzdem funktionieren.)

Es sollte nun eine xen1.example.com Konfigurationsdatei geben - /etc/xen/xen1.example.com.cfg. Sieh sie Dir mal an um mit diesen Konfigurationsdateien etwas vertraut zu werden:

cat /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=192.168.0.101' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Um die virtuelle Maschine zu starten, lass Folgendes laufen

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

Führe Folgendes aus

xm console xen1.example.com

um Dich auf dieser virtuellen Maschine anzumelden (drücke CTRL+] wenn Du über die Konsole eingeloggt bist oder CTRL+5 wenn Du PuTTY benutzt um zu dom0 zurück zu kehren), oder nutze einen SSH Klienten um Dich damit zu verbinden (192.168.0.101).

Um eine Liste von laufenden virtuellen Maschinen zu erhalten, tippe

xm list

Die Ausgabe sollte so aussehen:

server1:~# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 301 1 r----- 1191.0
xen1.example.com 1 32 1 -b---- 50.6
server1:~#

Um xen1.example.com runter zu fahren, führe Folgendes aus:

xm shutdown xen1.example.com

Wenn Du möchtest, dass vm01 beim nächsten Start automatisch startet, dann führe Folgendes aus:

ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

Hier sind die wichtigsten Xen Befehle:

xm create -c /path/to/config - Eine virtuelle Maschine starten.
xm shutdown <name> - Eine virtuelle Maschine beenden.
xm destroy <name> - Eine virtuelle Maschine sofort beenden ohne sie runter zu fahren. Wie als wenn Du den Power Knopf betätigst.
xm list - Alle laufenden Systeme auflisten.
xm console <name> - Auf einer virtuellen Maschine einloggen.
xm help - Alle Befehle auflisten.

Lass uns nun eine zweite virtuelle Maschine (VM) xen2.example.com mit der IP Adresse 192.168.0.102 erstellen:

xen-create-image --hostname=xen2.example.com --size=2Gb --swap=256Mb --ide
--ip=192.168.0.102 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
--dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xen
--debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

Danach kannst Du xen2.example.com wie folgt starten:

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

und so runter fahren:

xm shutdown xen2.example.com

Eine Liste von virtuellen Maschinen, die mit dem xen-create-image Befehl erstellt wurden, ist verfügbar unter

xen-list-images


server1:~# xen-list-images
Name: xen1.example.com
Memory: 32
IP: 192.168.0.101

Name: xen2.example.com
Memory: 32
IP: 192.168.0.102
server1:~#

Um mehr darüber zu erfahren, was Du mit xen-tools machen kannst, sieh Dir folgende Anleitung an: http://www.howtoforge.com/xen_tools_xen_shell_argo

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.

5.2 Einen dom0 Kernel erstellen

Nun erstellen wir einen dom0 Kernel:

cd /usr/src/xen-3.1.0-src/
make clean
make linux-2.6-xen0-config CONFIGMODE=menuconfig KERNELS="linux-2.6-xen0"

Im Kernel-Konfigurationsmenü, das sich öffnet, aktivieren wir quota, iptables und den dummy Netzwerk Driver als Module. Hier aktivierst Du diese Module:

File systems --> [*] Quota support
<M> Old quota format support
<M> Quota format v2 support

Device Drivers ---> Network device support ---> <M> Dummy net driver support

Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> Core Netfilter Configuration ---> <M> Netfilter Xtables support (required for ip_tables)

Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration ---> <M> IP tables support (required for filtering/masq/NAT)

[*] bedeutet: statisch in den Kernel einkompilieren.
<M> bedeutet: als Kernel Modul bauen.

Als Nächstes bauen und installieren wir den dom0 Kernel:

make linux-2.6-xen0-build
make linux-2.6-xen0-install
depmod 2.6.18-xen0

Danach aktualisieren wir den GRUB, unseren Bootloader:

update-grub

Starte nun das System neu:

shutdown -r now

In der Kommandozeile sollte Grub nun den xen0 Kernel am Anfang der Liste aufführen und ihn automatisch starten. Wenn keine Problemmeldungen auftauche, dann ist alles Bestens!

5.3 Einen domU Kernel erstellen

Danach erstellen wir einen Kernel für domU (die virtuellen Maschinen):

cd /usr/src/xen-3.1.0-src/
make clean
make linux-2.6-xenU-config CONFIGMODE=menuconfig KERNELS="linux-2.6-xenU"

Im Kernel-Konfigurationsmenü, das sich öffnet, müssen wir quota und iptables als Module (es ist wichtig, dass sie Module sind. Ich konnte iptables nicht dazu bringen in einer virtuellen Maschine zu arbeiten, als ich es statisch in den Kernel einkompiliert habe!) aktivieren. Hier aktivierst Du diese Module:

File systems --> [*] Quota support
<M> Old quota format support
<M> Quota format v2 support

Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> Core Netfilter Configuration ---> <M> Netfilter Xtables support (required for ip_tables)

Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration ---> <M> IP tables support (required for filtering/masq/NAT)

[*] bedeutet: statisch in den Kernel einkompilieren.
<M> bedeutet: als Kernel Modul bauen.

Nachdem Du das Kernel-Konfigurationsmenü verlassen hast, führe Folgendes aus um den domU Kernel zu bauen und zu installieren:

make linux-2.6-xenU-build
make linux-2.6-xenU-install
depmod 2.6.18-xenU

5.4 Virtuelle Maschinen (domU) erstellen

(In diesem Kapitel gehe ich davon aus, dass Du einen domU Kernel erstellt hast um ihn mit virtuellen Maschinen (/boot/vmlinuz-2.6.18-xenU) zu verwenden. Wenn nicht, dann ersetze bitte alle Referenzen auf /boot/vmlinuz-2.6.18-xenU mit /boot/vmlinuz-2.6.18-xen!)

Wir werden xen-tools verwenden um virtuelle Maschinen zu erstellen. xen-tools vereinfacht es sehr virtuelle Maschinen zu erstellen - bitte lies folgende Anleitung um mehr zu erfahren: http://www.howtoforge.com/xen_tools_xen_shell_argo. xen-tools sind als Debian Etch Paket verfügbar, also installieren wir das gleich jetzt:

apt-get install xen-tools

Als Nächstes bearbeiten wir die Datei /etc/xen-tools/xen-tools.conf. Diese Datei beinhaltet die Standardwerte, die vom xen-create-image Skript verwendet werden, sofern Du keine anderen Werte in der Kommandozeile festgelegt hast. Folgende Werte habe ich verändert, alles andere habe ich unbefühert gelassen:

vi /etc/xen-tools/xen-tools.conf


[...]
gateway = 192.168.0.1 netmask = 255.255.255.0 passwd = 1 kernel = /boot/vmlinuz-2.6.18-xenU #initrd = /boot/initrd.img-2.6.16-2-xen-686 mirror = http://ftp2.de.debian.org/debian/ [...]
Bitte vergewissere Dich, dass Du die initrd Zeile auskommentiest! Zumindest bei meinen Installationen habe ich nie eine Ramdisk für virtuelle Maschinen gebraucht.

Die Zeile passwd = 1 bewirkt, dass Du ein Root Passwort anlegen kannst, wenn Du eine neue Gast Domain einrichtest. In the kernel line you must specify the domU kernel that you want to use for your guest domains. In the mirror line specify a Debian mirror close to you.

Vergewissere Dich, dass Du ein Gateway und eine Netzmaske festlegst. Wenn Du kein Gateway und keine Netzmaske in der Kommandozeile festlegst und Du xen-create-image verwendest, werden Dein Gast-Domains keinen Netzwerkbetrieb haben, auch nicht wenn Du eine IP Adresse bestimmt hast!

Lass uns nun unsere erste Gast-Domain xen1.example.com anlegen, mit der IP Adresse 192.168.0.101:

xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide
--ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
--dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xenU
--debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

Eine Menge Parameter sind hier überflüssig, da wir die gleichen Angaben in /etc/xen-tools/xen-tools.conf festgelegt haben, aber es zeigt, dass Du die gewünschten Einstellungen entweder in der Kommandozeile oder in /etc/xen-tools/xen-tools.conf festlegen kannst. Bitte stelle sicher, dass Du --ide bestimmst, sonst kann es sein, dass Deine virtuelle Maschine nicht startet!

(Wenn Du mehr über die verfügbaren Optionen erfahren möchtest, sieh Dir die xen-create-image man Seite an:

man xen-create-image

)

Der xen-create-image Befehl wird nun die xen1.example.com virtuelle Maschine für uns erstellen. Das kann ein paar Minuten in Anspruch nehmen. Die Ausgabe sollte so ähnlich wie diese sein:

server1:/usr/src/xen-3.1.0-src# xen-create-image --hostname=xen1.example.com --size=2Gb --swap=256Mb --ide
> --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
> --dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xenU
> --debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

General Infomation
--------------------
Hostname : xen1.example.com
Distribution : etch
Fileystem Type : ext3

Size Information
----------------
Image size : 2Gb
Swap size : 256Mb
Image type : sparse
Memory size : 32Mb
Kernel path : /boot/vmlinuz-2.6.18-xenU

Networking Information
----------------------
IP Address 1 : 192.168.0.101
Netmask : 255.255.255.0
Gateway : 192.168.0.1

WARNING
-------
Loopback module not loaded and you're using loopback images
Run the following to load the module:

modprobe loop loop_max=255


Creating swap image: /vserver/domains/xen1.example.com/swap.img
Done

Creating disk image: /vserver/domains/xen1.example.com/disk.img
Done

Creating ext3 filesystem on /vserver/domains/xen1.example.com/disk.img
Done

Installing your system with debootstrap mirror http://ftp2.de.debian.org/debian/
Done

Running hooks
Done

No role script specified. Skipping


Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done

Logfile produced at:
/var/log/xen-tools/xen1.example.com.log
server1:/usr/src/xen-3.1.0-src#

(Diese Warnung kannst Du ignorieren:

WARNING
-------
Loopback module not loaded and you're using loopback images
Run the following to load the module:

modprobe loop loop_max=255

Die virtuelle Maschine wird trotzdem funktionieren.)

Es sollte nun eine xen1.example.com Konfigurationsdatei vorhanden sein - /etc/xen/xen1.example.com.cfg. Sieh sie Dir an um Dich mit den Konfigurationsdatein virtueller Maschinen vertraut zu machen:

cat /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=192.168.0.101' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Um die virtuelle Maschine zu starten, führe Folgendes aus

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

Führe dies aus

xm console xen1.example.com

um Dich auf dieser virtuellen Maschine anzumelden (tippe CTRL+] wenn Du auf der Konsole bist, oder CTRL+5 wenn Du PuTTY verwendest um zu dom0 zurückzukehren), oder verwende einen SSH Client um Dich mit ihr zu verbinden (192.168.0.101).

Um eine Liste laufender virtueller Maschinen zu erhalten, tippe

xm list

Die Ausgabe sollte wie folgt aussehen:

server1:~# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 301 1 r----- 1191.0
xen1.example.com 1 32 1 -b---- 50.6
server1:~#

Um xen1.example.com runter zu fahren, führe Folgendes aus:

xm shutdown xen1.example.com

Wenn Du möchtest, dass vm01 beim nächsten Hochfahren automatisch startet, führe dies aus:

ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

Dies sind die wichtigsten Xen Befehle:

xm create -c /path/to/config - Start a virtual machine.
xm shutdown <name> - Stop a virtual machine.
xm destroy <name> - Stop a virtual machine immediately without shutting it down. It's as if you switch off the power button.
xm list - List all running systems.
xm console <name> - Log in on a virtual machine.
xm help - List of all commands.

Lass uns eine zweite virtuelle Maschine (vm) xen2.example.com mit der IP Adresse 192.168.0.102 erstellen:

xen-create-image --hostname=xen2.example.com --size=2Gb --swap=256Mb --ide
--ip=192.168.0.102 --netmask=255.255.255.0 --gateway=192.168.0.1 --force
--dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xenU
--debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --passwd

Danach kannst Du xen2.example.com wie folgt starten:

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

und so runterfahren:

xm shutdown xen2.example.com

Eine Liste aller virtueller Maschinen, die mit dem xen-create-image Befehl erstellt worden sind, ist verfügbar unter

xen-list-images


server1:~# xen-list-images
Name: xen1.example.com
Memory: 32
IP: 192.168.0.101

Name: xen2.example.com
Memory: 32
IP: 192.168.0.102
server1:~#

Wenn Du mehr darüber erfahren möchtest, was mit xen-tools tun kannst, sieh Dir diese Anleitung an: http://www.howtoforge.com/xen_tools_xen_shell_argo
Indem Du Folgendes ausführst, kannst Du überprüfen, welchen Kernel Du verwendest

uname -a

Du kannst dies sowohl auf dom0 und domU ausführen. Zum Beispiel sieht die Ausgabe auf meiner xen1.example.com virtuellen Maschine, für die ich einen speziellen domU kernel erstellt habe, so aus:

xen1:~# uname -a
Linux xen1.example.com 2.6.18-xenU #2 SMP Tue May 29 00:53:13 CEST 2007 i686 GNU/Linux
xen1:~#

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