Hetzner bietet ja verschiedene Rootserver zu einem kleinen Preis an. Proxmox ist eine geniale Verwaltungsoberfläche, frei an Lizenzgebühren, welche neben virtuellen Servern auf Openvz-Basis auch auf KVM parallel basiert. Die Grundinstallation von Proxmox ist umfangreich beschrieben und soll hier nicht weiter Thema sein.
Hetzner bietet bei allen Rootservern bis zu 4 IP-Adressen inklusive an, diese werden letztlich ja auch benötigt, um diese individuell den einzelnen virtuellen Gästen zuordnen zu können. Problematisch ist jedoch, daß der Bridge-Mode wie standardmässig vorgesehen, nicht funktioniert, und auch NAT auf Dauer keine Lösung sein kann. Hetzner erlaubt nur Datentransfer von der hauptsächlichen MAC-Adresse des Servers, sobald man virtuelle Gäste einsetzt, hat man aber verschiedene MAC-Adressen. Wozu sollte man ein automatisches Interface verwenden, wenn man dann noch dutzende Schritte von Hand durchführen sollte?
Die Lösung nennt sich Routing. Im Wiki von Hetzner und im Internet gibt es bereits verschiedenene Howtos, die jedoch unvollständig sind oder so einfach und schlicht ergreifend nicht funktionieren.
Ich möchte daher hier kurz ein Beispiel für die Konfiguration des Netzwerkes vorstellen.
Basis ist die Installation von Proxmox auf einem Hetzner EQ6 mit Debian 5.0 in der 64bit Version. Für andere Betriebssysteme müssen eventuell die Konfigurationsdateien etc. entsprechend eigenständig angepasst werden.
Bei Hetzner erhält man 4 IP Adressen kostenfrei. 2 davon werden benötigt für den Server selber und als Routinggateway für die virtuellen Gäste. Ich nehme hier Beispielipadressen, die entsprechend angepasst werden sollten
.
[main] Hauptipadresse des Servers selber, z.B. 10.10.10.10
[ende] die letzte verfügbare IP-Adresse des IP-Blocks, z.B. 10.10.10.13
[gate] Gateway wie von Hetzner zugeteilt für die IP-Adressen
Die Subnetzmaske ist entsprechend der zugeteilten Netzgröße entsprechend anzupassen.
a) /etc/network/interfaces so anpassen:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address [main]
netmask 255.255.255.192
gateway [gate]
pointopoint [gate]
auto vmbr0
iface vmbr0 inet static
address [ende]
netmask 255.255.255.192
gateway [main]
bridge_ports none
bridge_stp off
bridge_fd 0
Ansonsten KEINE weiteren Einträge hier einfügen / belassen.
b) Den Rechner neu starten, damit alle Konfigurationen etc. ordentlich übernommen werden können.
c) In der Datei /etc/sysctl.conf folgende Einträge ergänzen:
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.ip_forward=1
Danach sysctl -p auf der Shell ausführen, um die Änderungen zu übernehmen.
d) Legen Sie die Datei /etc/init.d/routing an mit folgendem Inhalt
#!/bin/sh
case “$1″ in
‘start’)
/sbin/route add [virt] gw [virt] dev vmbr0
/bin/echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
RETVAL=$?
;;
‘stop’)
/sbin/route del [virt] gw [virt] dev vmbr0
/bin/echo 0 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
RETVAL=$?
;;
*)
echo “Usage: $0 { start | stop }”
RETVAL=1
;;
esac
exit $RETVAL
Danach die Datei mit chmod a+x /etc/init.d/routing ausführbar machen und mit update-rc.d routing defaults entsprechend in die Bootsequenz mit einbinden.
Zur Erklärung, für jede IP-Adresse, die einem Gast zugeordnet werden soll, benötigt man im obigen Script die entsprechenden Zeilen unter start / stop, wobei [virt] jeweils die IP-Adresse des Gastes ist. Nicht wundern, daß es quasi 2x hintereinander die gleiche ist, das ist alles in Ordnung so und funktioniert. Quasi je Gast eine solche Zeile /sbin/route add [virt] gw [virt] dev vmbr0 unter start, und /sbin/route del [virt] gw [virt] dev vmbr0 unter stop. Danach /etc/init.d/routing start ausführen und die Sache sollte soweit passen.
e) IP-Konfiguration der Gäste
Hier einfach die Gäste-IP-Adresse von Hetzner eintragen mit der Subnetzmaske wie von Hetzner zugeteilt. Als Gateway wird jedoch nicht das von Hetzner eingetragen (!), sondern die letzte IP vom Subnetz siehe weiter oben als [ende] deklariert. Weiterer Module/Änderungen/Ergänzungen bedarf es nicht.
Eine kleine Ergänzung noch, bei den Gästen dann nicht NAT wählen, sondern die Bridge vmbr0 – sonst funktioniert es freilich nicht
.