Xen 3 / Debian Linux / Truecrypt

Vorwort:
In dieser Anleitung wird ein möglicher Weg beschrieben, wie man ein Xen 3 System aufsetzen kann. Dabei werden sowohl HVM als auch Paravirtualisierte Systeme unterstützt und das Dateisystem wird mit Truecrypt verschlüsselt.

Voraussetzungen:
– Minimal Betriebssysteme (Debian Lenny)
– Nur 15GB für die Root Partition genutzt, der Rest unpartitioniert

Xen Installation:
Als Erstes installieren wir die benötigten Pakete auf unserem System:
aptitude install xen-hypervisor-3.2-1-amd64 xen-linux-system-2.6.26-2-xen-amd64 xen-utils-3.2-1 xenstore-utils xenwatch xen-shell xen-tools
Anschließend müssen wir die Anzahl der Loop Devices erhöhen, um auch bei mehreren Gast Systemen genügend zu haben:
vim /etc/modules
-> loop max_loop=64
Nun müssen wir unser System neustarten um den neuen Xen Kernel zu laden:
reboot
Folgender Befehl sollte nun folgendes Ergebnis liefern:
xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 7979 8 r----- 26.0

Netzwerk Konfiguration:
Folgende Konfigurationsdatei muss angepasst warden, um Routing zu erlauben:
vim /etc/sysctl.conf
-> net.ipv4.ip_forward=1
-> net.ipv4.conf.all.rp_filter=1
-> net.ipv4.icmp_echo_ignore_broadcasts=1

Einstellungen übernehmen:
sysctl –p

Anschließend machen wir uns an die Netzwerkkonfiguration des Servers, wir müssen PointoPoint konfigurieren.
vim /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 188.x.x.21
netmask 255.255.255.255
gateway 188.x.x.1
pointopoint 188.x.x.1 # Gleich wie Gateway

auto br1
iface br1 inet static
bridge_ports none
bridge_maxwait 0
address 192.168.1.1
netmask 255.255.255.0

Einstellungen übernehmen:
/etc/init.d/networking restart
Nun müssen wir noch Xen korrekt konfigurieren:
vim /etc/xen/xend-config.sxp
Auskommentieren dieser Zeilen:
#(network-script network-dummy)
#(vif-script vif-bridge)
Kommatar bei diesen Zeilen entfernen:
(network-script ’network-route netdev=eth0′)
(vif-script vif-route)
Dann noch diese Zeilen hinzufügen:
vim /etc/xen/scripts/network-route
echo 1 >/proc/sys/net/ipv4/conf/default/proxy_arp
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter
Und die Scripts bearbeiten:
vim /etc/xen/scripts/vif-common.sh
function ip_of()
{
# ip addr show "$1" | awk "/^.*inet.*$1\$/{print \$2}" | sed -n '1 s,/.*,,p'
ip -4 -o addr show primary dev $1 | awk '$3 == "inet" {print $4; exit}' | sed 's#/.*##'
}
Änderungen übernehmen:
/etc/init.d/xend restart
Nun können wir Gast Systeme auf diesen Server kopieren. Bei Paravirtualiserten Gast Systemen müssen wir den Gateway des Host Systems als PointoPoint am Gast System Konfigurieren.
Bei HVM Gästen müssen wir die oben eingerichtete Bridge verwenden und dem Gast eine IP aus dem internen Subnetz geben. Beispiel:

IP: 192.168.1.2
Subnetz: 255.255.255.0
Gateway: 192.168.1.1

Um nun auch Zugriff zum Internet zu bekommen, muss dann noch mit IPTables genattet werden:
iptables -t nat -I PREROUTING -d 188.x.x.60 -j DNAT --to 192.168.1.2
iptables -t nat -I POSTROUTING -s 192.168.1.2 -j SNAT --to 188.x.x.60

Datenspeicher für die Gast Systeme mit Verschlüsselung einrichten:
Zuerst die Partitionen auf beiden Festplatten einrichten:
fdisk /dev/sda (selbiges für sdb)
->n
->p
->[ENTER]
->[ENTER]
->t
->4
->fd
->w

Anschließend das System neustarten:
reboot

Nun wir das Raid eingerichtet:
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda4 /dev/sdc4

Raid auch beim neustart erstellen:
vim /etc/mdadm/mdadm.conf
->ARRAY /dev/md3 devices=/dev/sda4,/dev/sdb4

Nun können wir uns an die Installation von truecrypt machen. Zuerst müssen wir uns die Datei „truecrypt-7.0a-linux-console-x64.tar.gz“ herunterladen. Diese dann auspacken:
tar xfv truecrypt-7.0a-linux-console-x64.tar.gz

Abhängigkeiten installieren:
apt-get install libfuse-dev libfuse2
Installation starten:
./truecrypt-7.0a-setup-console-x64
Automatische Installation auswählen und alle weiteren Fragen bestätigen.
Verschlüsselung Starten (wir starten diese mit dem Tool Screen, damit wir diese im Hintergrund laufen lassen können, da diese schnell 4-6 Stunden dauern kann):
screen truecrypt –c
->Partition: /dev/md3
->Mountpoint: default
-> Filesystem: None
-> Passwort: beliebig langes Passwort eingeben
-> Kein Keyfile verwenden
-> Verschlüsselungsmechanismus nach belieben
In den Hintergrund legen: STRG + A +D

Nachdem dieser Schritt abgeschlossen ist, müssen wir unser verschlüsseltes System öffnen.
truecrypt --mount /dev/md3 --filesystem=none

Dieser Befehl hat nun eine Gerätedatei unter /dev/mapper/truecrypt1 für uns angelegt. Nun können wir ein LVM Dateisystem aufsetzen um später flexibler agieren zu können.
pvcreate /dev/mapper/truecrypt1
vgcreate vg0 /dev/mapper/truecrypt1
lvcreate -n vserver -L 512G vg0

In diesem Fall erstellen wir ein LVM Dateisystem mit 512GB Speicher, welches wir für die vServer nutzen, die ein Disk Image als Dateisystem verwendet.
Dieses müssen wir noch mit einem ext3 Dateisystem versehen:

mkfs.ext3 /dev/vg0/vserver

Und ins Dateisystem einbinden:

mkdir /vServer
mount /dev/vg0/vserver /vServer

Nun können wir unsere vServer verschlüsselt in dem Ordner /vServer ablegen.

Damit dieses System auch ohne Schwierigkeiten nach einem Reboot eingebunden werden kann, sollten wir noch ein Startup Script anlegen:

vim /startup.sh
#!/bin/bash
modprobe fuse
echo -e "Open vServer Harddisk\n\n"
truecrypt --mount /dev/md3 --filesystem=none
vgscan
vgchange -a y
mount /dev/vg0/vserver /vServer

chmod +x /startup.sh

Grafische Darstellung des Dateisystems:

xen3-dateisystem

Bekannte Probleme:

Problem: Gast System kann mit Host kommunizieren, kommt jedoch nicht ins Internet:
Lösung: Iptables Konfiguration überprüfen und prüfen ob net.ipv4.ip_forward=1 aktiv ist.

Problem: Gast System lässt sich nicht starten, Xen beschwerd sich weil ein Vif Gerät (Harddisk) nicht angelegt werden kann.
Lösung: chmod 777 –R /etc/xen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.