Eine kurze Beispiel-Konfiguration des EQ 6 von hetzner auf Debian 5 (lenny) Basis für den Einsatz mit VirtualBox.
Dieser Text ist keine vollständige Anleitung, sondern skizziert nur einige Ideen zur Umsetzung. Ein wenig Hilfe findet man in hetzners Wiki und im Netz. Man sollte aber beachten, dass sich gerade bei VirtualBox in letzter Zeit viel getan hat und man viele veraltete Anleitungen findet.
Wir befinden uns im Rescue-System.
Partitionierung, RAID 1, LVM, Dateisystem
/dev/sda und /dev/sdb mit jeweils 1,5TB Partition Mount FS Größe Aufgabe /dev/sda1 /boot ext2 512MB Bootpartition /dev/sda2 swap swap 4GB Swappartition /dev/sda3 LVM Rest RAID-1 mit LVM /dev/sdb1 LVM alles RAID-1 mit LVM
LVM (/dev/md0): ein LVM, volume group "lvm-raid": Zwei logische Volumes: "root" mit ext3 als / des Servers (5GB), "home" mit xfs als /home (hier lagern nachher die HDD-Images der VMs) (Größe: Rest der Festplatte)
RAID anlegen
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb1
LVM anlegen (gnorgl wird angelegt, um die exakte Restgröße herauszufinden, die dann bei home angegeben wird)
pvcreate /dev/md0 vgcreate lvm-raid /dev/md0 lvcreate -L 4G lvm-raid -n root lvcreate -L 1P lvm-raid -n gnorgl lvcreate -l 355596 lvm-raid -n home
Dateisysteme anlegen
mkfs.xfs /dev/mapper/lvm--raid-home -f mke2fs -j -O dir_index /dev/mapper/lvm--raid-root mke2fs /dev/sda1 mkswap /dev/sda2
Grundsystem installieren
root-mount
mkdir -p /mnt/server mount /dev/mapper/lvm--raid-root /mnt/server
Debian rüberschaufeln
debootstrap --verbose lenny /mnt/server ftp://mirror.hetzner.de/debian/packages
chroot vorbereiten und rein
mount /dev/sda1 /mnt/server/boot mount /dev/mapper/lvm--raid-home /mnt/server/home swapon /dev/sda2 cp /etc/resolv.conf /mnt/server/etc mount -t proc none /mnt/server/proc mount -obind /dev /mnt/server/dev chroot /mnt/server
/etc/apt/sources.list ändern und hetzner-Mirror einfügen
# Packages and Security Updates from the Hetzner Debian Mirror deb ftp://mirror.hetzner.de/debian/packages lenny main contrib non-free deb ftp://mirror.hetzner.de/debian/security lenny/updates main contrib non-free
Ein paar Sachen installieren
apt-get update && apt-get dist-upgrade apt-get install linux-image-amd64 grub ssh locales mdadm xfsprogs sudo lvm2
Zeichensatz auf UTF-8 setzen.
modprobe dm-mod dpkg-reconfigure linux-image-amd64
Root-Passwort setzen!
Benutzer anlegen, wenn gewünscht und in /etc/sudoers eintragen (adduser name)
GRUB auf /dev/hda installieren
Server neu starten und über ssh auf dem System anmelden. Nun befinden wir uns nicht mehr im Rescue-System.
VirtualBox
VirtualBox-Server in die sources.list eintragen und VB installieren. Achtung: Zieht endlos viel Kram in die Abhängigkeiten. Alles ausmachen, was man nicht braucht. Ports schließen.
Wir installieren in der VM Ubuntu mit der Alternate Installer CD, die wir uns vorher heruntergeladen haben. Alternativ kann natürlich auch Debian oder irgend ein anderes OS installiert werden.
Unsere VM bekommt 1/4 der Ressourcen des Servers, damit noch genug Platz für weitere VMs ist.
VirtualBox installieren
VBoxManage createvm --name "meineVM" --register VBoxManage modifyvm meineVM --ostype Ubuntu_64 VBoxManage modifyvm meineVM --memory 2946 VBoxManage modifyvm meineVM --acpi on VBoxManage modifyvm meineVM --pae on VBoxManage modifyvm meineVM --hwvirtex on VBoxManage modifyvm meineVM --nestedpaging on VBoxManage modifyvm meineVM --vtxvpid on VBoxManage modifyvm meineVM --accelerate3d on VBoxManage modifyvm meineVM --cpus 8 VBoxManage modifyvm meineVM --ioapic on VBoxManage createhd --filename meineVM.img --size 367000
Zur Installation mit NAT
VBoxManage modifyvm meineVM --dvd /home/user/ubuntu.iso VBoxManage modifyvm meineVM --hda meineVM.img VBoxManage modifyvm meineVM --nic1 nat
Starten der VM
VBoxHeadless -s meineVM -p 12345
Wir können uns nun mit einem Remote-Desktop Programm (RDPv5 Protokoll) mit der VM verbinden. Am besten durch nen ssh-Tunnel. Man weiß ja nie... Die Installation erfolgt, wie auf einem normalen PC.
Später ohne NAT brauchen wir eth0 als Netzwerkadapter
VBoxManage modifyvm meineVM --nic1 bridged VBoxManage modifyvm meineVM --bridgeadapter1 eth0 VBoxManage setextradata meineVM VBoxInternal/Devices/pcnet/0/LUN#0/Config/RestrictAccess 0
Netzwerk einrichten
Nun kommt der eigentliche Knackpunkt, der immer wieder Probleme bereitet. Bei den neuen EQ-Modellen von hetzner braucht man nämlich ein routet-Setup, da hetzners Router in den Rechenzentren nur noch die MAC-Adressen der eigentlichen Server akzeptieren. Traffic von anderen Maschinen, z.B. VMs, wird verworfen. Wir müssen den Traffic also aus der VM über den Server routen.
Dazu holen wir uns eine der Inklusiv-IPs oder, wenn wir Krösus sind und ein ganzes Subnetz in Beschlag nehmen, IPs aus diesem.
Angenommen wir haben von hetzner diese Daten zu unserem Netz bekommen:
192.168.0.42 Server-IP 192.168.0.11 weitere Inklusiv-IP, geht an die VM 192.168.0.1 Gateway 192.168.0.255 Broadcast 255.255.255.0 Netmask
10.0.0.1 - 10.0.0.6 weitere IPs aus einem andere Subnetz, 255.255.255.248 Netmask des weitern Netzes.
Auf dem Server muss in der /etc/network/interfaces eine zusätzliche IP aus dem extra Subnetz vergeben werden, damit wir den Server als Router nutzen können. Außerdem muss eine Route gelegt werden, damit die Daten auch an die Außenwelt weitergeleitet werden. Dies ist der entscheidene Punkt beim Einsatz eines weiteren Subnetzes, könnte man sagen.
Kommt kein weiteres Subnetz zum Einsatz, kann man sich die letzten beiden Zeilen sparen.
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.0.42 broadcast 192.168.0.255 netmask 255.255.255.0 gateway 192.168.0.1 up ip addr add 10.0.0.6/255.255.255.248 dev eth0 up route add -net 10.0.0.0 netmask 255.255.255.248 gw 192.168.0.42 eth0
Nun wollen wir noch IP-Forwarding einrichten. Dazu in der /etc/sysctl.conf die folgenden Optionen setzen. Änderungen werden nach einem Neustart übernommen. Neustart? Linux? Ohne uns, daher noch die letzten beiden Befehle.
net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 sysctl -w net.ipv4.ip_forward=1 sysctl -w net.ipv6.conf.all.forwarding=1
Nun geht es an die Konfiguration der VM. Unbedingt darauf achten, dass NAT wieder deaktiviert wurde und eth0 als Schnittstelle gewählt ist. Siehe oben.
Zunächst ein Beispiel ohne den Einsatz eines extra Subnetzes. Wichtig ist die Angabe der Server-IP als Gateway, da hier ja der Traffic rüber geroutet werden soll.
auto eth0 iface eth0 inet static address 192.168.0.11 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.42
Haben wir ein weiteres Subnetz, können wir der VM auch eine IP daraus geben. Hier wird wieder die Server-IP als Gateway gesetzt.
auto eth0 iface eth0 inet static address 10.0.0.1 netmask 255.255.255.248 broadcast 10.0.0.7 gateway 10.0.0.6
Nameserver gucken wir uns beim Server ab und tragen sie in die /etc/resolv.conf ein.
Ich musste die VM neu starten, wenn ich das Netz gewechselt habe, damit alle Routen richtig gesetzt werden. Wichtig ist darauf zu achten, dass die IP des Servers im Netz der VMs als Gateway gesetzt ist.
Nachtrag zu IPv6
Inzwischen bietet Hetzner IPv6 in den Rechenzentren an. Man bekommt ein /64er Subnetz. Folgendermaßen kann man das Subnetz aufteilen, um VMs mit IPv6 zu versorgen:
Auf dem Host-System wird wie oben beschrieben IPv6-Forwarding aktiviert. Nun braucht die Maschine noch eine Adresse aus dem zugeteilten Subnetz und die Routen müssen gesetzt werden. Hierzu hat sich folgende Konfiguration in der /etc/network/interfaces für brauchbar erwiesen:
iface eth0 inet static [...] post-up ip -6 addr add 2a01:4f8:100:74a3::1/64 dev eth0 post-up ip -6 route add 2a01:4f8:100:74a0::1 dev eth0 post-up ip -6 route add default via 2a01:4f8:100:74a0::1 dev eth0
Wobei hier natürlich die IP-Adressen an die zugeteilten Adressbereiche angepasst werden müssen.
In meiner Konfiguration teile ich mir das Subnetz mit einigen Freunden. Wir haben das Subnetz in weitere /80er Teilnetze unterteilt. Der folgende Teil wird dann in der virtuellen Maschine in die /etc/network/interfaces eingetragen:
iface eth0 inet static [...] post-up ip -6 addr add 2a01:4f8:100:74a3:161::1/80 dev eth0 post-up ip -6 route add 2a01:4f8:100:74a3::1 dev eth0 post-up ip -6 route add default via 2a01:4f8:100:74a3::1 dev eth0
Hierbei ist 2a01:4f8:100:74a3:161::1/80 eine Adresse aus dem VM-Subnetz und 2a01:4f8:100:74a3::1 die Adresse des Host-Systems. Nach einem Neustart der Netzwerkschnittstellen auf Host- und Gast-System sollte die Adressen zugewiesen und die Maschinen über IPv6 erreichbar sein.
Nachtrag zu Problemen mit instabilen VMs auf Grund von Clock-Problemen
Bei einigen VMs kann es bei VirtualBox ab und an dazu kommen, dass die Zeit rückwärts läuft und das System in der VM daraufhin komische Sachen macht. Bei unserem Setup hatte eine VM das Problem und die Lösung hat recht lange auf sich warten lassen. Eine genauere Beschreibung des Problems und der Lösung findet man auf der Website von Jan Kässens: Artikel auf www.janniweb.de
Kurzfassung der Lösung: HPET bei VirtualBox für die VM aktivieren, in der VM als Kerneloption die Clocksource auf hpet stellen:
user@server:~$ VBoxManage modifyvm vmname --hpet on
In der VM dann entweder in der /boot/grub/menu.lst in der Zeile #kopt clocksource=hpet anhängen oder bei Grub 2 diese Option hinter GRUB_CMDLINE_LINUX_DEFAULT hängen. Danach Grub updaten und die VM neu starten.
Viel Spaß und viel Erfolg!