Hetzner - DokuWiki
9 IP Adressen mit Ubuntu
Vorbemerkung: Alles auf dieser Seite geschriebene ist mit Ubuntu 7.10 getestet und funktioniert. Da keine Ubuntu-Spezifika verwendet werden, sollte dasselbe für debian gelten.
Grundsätzliches
Grundsätzlich gilt:
Die Angaben der Beispiele beziehen sich auf das "neue" Routing des Subnetzes über die Haupt-IP.
Für unsere Beispiele gilt:
192.168.0.250 = IP-Adresse, die Hetzner als Haupt-IP mitliefert
192.168.0.225 = Gateway wie von Hetzner zur Haupt-IP angegeben
192.168.1.160/29 = zweite bis siebte IP-Adresse bei einem /29er-Subnetz
(Netzmaske: 255.255.255.248)
Bei der Verwendung von Xen hat man nach den Anleitungen von Hetzner dann maximal 5 IPs für domUs zur Verfügung (1 IP wird für die dom0 benötigt). Das ist meist genug, kann jedoch auch knapp werden.
Dieser Artikel beschreibt eine Konfiguration, die es erlaubt alle 8 IPs für domUs zu verwenden.
Routing in dom0
Hetzner-Server müssen alle Datenpakete, die an andere physikalische Computer gerichtet sind, an ihren Gateway übergeben. Eine direkte Zustellung im eigenen Subnetz wird von den Routern verhindert.
Unter Debian/Ubuntu ist dies sehr einfach per "pointopoint" möglich. Eine minimale Netzwerkkonfiguration für die dom0 könnte also wie folgt aussehen:
auto lo iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.250
netmask 255.255.255.255
gateway 192.168.0.225
pointopoint 192.168.0.225
up route add -net 192.168.1.160 netmask 255.255.255.248 reject
Die reject-Route hat dabei den Sinn, zu verhindern, dass Pakete für eine noch nicht hochgefahrene domU wieder an den Gateway zurückgegeben werden, der sie dann wieder an die dom0 geben würde, die sie dann wieder an den Gateway ...
Dabei sollten in der Xen-Konfiguration die Skripte vif-route und network-route verwendet werden. Leider kommen diese allerdings mit der "pointopoint"-Konfiguration nicht zurecht. Dieser Fehler lässt sich wie folgt beheben:
In der Datei /etc/xen/scripts/vif-common.sh Folgende Zeile
ip addr show "$1" | awk "/^.*inet.*$1\$/{print \$2}" | sed -n '1 s,/.*,,p'
Wie folgt verändern:
ip -4 -o addr show primary dev "$1" | awk '$3 == "inet" {print $4; exit}' | sed 's!/.*!!'
(siehe auch den dazugehörigen Debian-Bugreport)
Hintergrund: vif-common.sh erwartet die eigene IP in der Form xxx.xxx.xxx.xxx/yy, bei pointopoint wird dieses /yy jedoch nicht ausgegeben. Die veränderte Zeile kommt mit beiden Varianten zurecht.
Konfiguration der domUs
Einfacher gestaltet sich die Konfiguration der Netzwerk-Interfaces in der domU:
auto lo iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.160
netmask 255.255.255.255
gateway 192.168.0.250
pointopoint 192.168.0.250
post-up ethtool -K eth0 tx off
Dabei ist die .160 natürlich für jede domU durch eine eigene passende IP (.160 - .167) zu ersetzen. Außerdem muss diese jeweilige IP auch in der entsprechenden Konfigurationsdatei der domU eingetragen werden, z.B.:
vif = [ 'mac=00:16:3e:00:00:01,ip=78.47.82.250' ]
Die letzte Zeile war in meinem Falle nötig, da die domU sonst versucht hat, Pakete mit einer MTU von 3900 zu versenden, was natürlich nicht funktioniert hat.
Wichtig: Da auch hier pointopoint verwendet wird und es in diesem Falle keine Broadcast und Netzwerk-IP gibt, können alle 8 IP-Adressen verwendet werden. Natürlich sollten die "normalen" IPs Netz+1 bis Netz+6 zuerst und dann erst die IPs Netz+0 und Netz+7.

