Hetzner - DokuWiki

Umstellung Xen 3 auf routed

Inhaltsverzeichnis

Umstellung Xen 3 von bridged auf routed

Vorbemerkungen

Dieses Howto geht davon aus, dass man einen Server mit Xen 3 hat bei dem die interne Vernetzung im "bridged" Mode läuft und auf "routed" umgestellt werden soll, weil aufgrund des Sicherheitseinstellung der Switche und des Routings der IP-Subnetze kein Betrieb im Bridge-Mode möglich ist.

Es ist keine Anleitung zur Installation von Debian oder Xen.

Beispiel-Daten

Dabei wird von den folgenden Voraussetzungen ausgegangen:

Die Haupt IP für Dom0 sei: 192.168.1.10

Die Gateway IP für Dom0 sei: 192.168.1.1

Die IP-Adressen für die DomUs seien: 10.0.1.2 ... 10.0.1.6

Am einfachsten findet man diese Angaben in den entsprechenden Netzkonfigurationsdateien der jeweiligen Distribution. Bei Debian oder Ubuntu ist dies /etc/network/interfaces. Diese könnte in der Dom0 etwa so aussehen:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 192.168.1.10
  broadcast 192.168.1.31
  netmask 255.255.255.224
  gateway 192.168.1.1
up route add -net 192.168.1.0 netmask 255.255.255.224 gw 192.168.1.1 eth0

In der ersten DomU:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 10.0.1.2
  gateway 10.0.1.1
  netmask 255.255.255.248

Umstellungen in der Dom0

Netzwerk-Änderungen

Zuerst sollte man die bisherige Konfigurationsdatei sichern, um im Fehlerfall alles rückgängig machen zu können.

dom0:~# cd /etc/network
dom0:/etc/network# cp interfaces interfaces.old

Anschliessend editiert man die Datei /etc/network/interfaces, sodass sie anschließend wie folgt aussieht:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 192.168.1.10
  netmask 255.255.255.255
  gateway 192.168.1.1
  pointopoint 192.168.1.1

Die Zeilen welche mit broadcast und up beginnen werden nicht mehr benötigt und müssen gelöscht werden.

Vor dem abschließende Neustart alles nochmals kontrollieren. Insbersondere die Schreibweise des pointopoint (statt pointtopoint).

dom0:/etc/network# reboot

Bei Problemen

Wenn der Server anschliessend nach angemessener Frist zum Neustart nicht mehr erreichbar sein sollte, so war trotzdem noch irgend was in den Anpassungen falsch.

In diesem Falle muss man im Robot unter Rescuesystem das 32- oder 64-bit (je nachdem, was man normal auf dem Server verwendet) aktivieren. Danach unter Resetaufträge einen Neustart per STRG+ALT+ENTF, oder wenn das nicht funktioniert, einen Hardware-Reset ausführen.

Nach der Anmeldung die Root-Partition mounten, damit man die Datei kontrollieren und ggf. korrigieren kann. Bei meinem Setup mit RAID funktioniert das etwa so:

root@rescue# cat /proc/mdstat
Personalities : [raid0] [raid1]
md0 : active raid1 sda1[0] sdb1[1]
      2096384 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
      8385856 blocks [2/2] [UU]
md2 : active raid1 sda3[0] sdb3[1]
      145805824 blocks [2/2] [UU]
unused devices: <none>
root@rescue# mount /dev/md2 /mnt
root@rescue# cd /mnt/etc/network
root@rescue# cat interfaces

Xen-Anpassungen

Auch hier empfehle ich, die anzupassenden Dateien vorgängig zu sichern:

dom0:~# cd /etc/xen
dom0:/etc/xen# cp xend-config.sxp xend-config.sxp.old
dom0:/etc/xen# cd scripts
dom0:/etc/xen/scripts# cp network-route network-route.old
dom0:/etc/xen/scripts# cp vif-common.sh vif-common.sh.old

Die Datei /etc/xen/xend-config.sxp bearbeiten und die folgenden zwei Zeilen mittels Gartenzaun auskommentieren:

#(network-script network-bridge)
#(vif-script vif-bridge)

Dann die folgenden beiden Zeilen suchen und durch entfernen des vorangestellten Gartenzauns aktivieren:

(network-script network-route)
(vif-script     vif-route)

Die Datei /etc/sysctl.conf bearbeiten und die entsprechende Zeilen ändern oder einfügen:

net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1 # sollte schon standardmäßig aktiv sein.

Die Datei /etc/xen/scripts/vif-common.sh bearbeiten und die Funktion ip_of() suchen. Diese dann wie folgt anpassen:

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#/.*##'
}

Nachdem alle Anpassungen gemacht sind, muss der XEN-Daemon neu gestartet werden:

dom0:/etc/xen# xend restart

Umstellungen in den DomUs

In den DomUs muss eigentlich nur die Datei /etc/network/interfaces angepasst werden. Die neue Version sieht dann für die erste domU wie folgt aus:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 10.0.1.2
  gateway 192.168.1.10
  netmask 255.255.255.255
  pointopoint 192.168.1.10
  post-up ethtool -K eth0 tx off

Schlussbemerkungen

Im Prinzip stehen einem damit zwei weitere IP-Adressen für virtuelle Maschinen zur Verfügung, und zwar jene, die eigentlich Gateway und Broadcast des Subnetzes sind. Bei den Beispieldaten wären dies 10.0.1.1 und 10.0.1.7

Bei Fragen oder Problemen bietet sich das Forum-Thema an auf welchem dieses Howto basiert:

http://forum.hetzner.de/wbb2/thread.php?threadid=10371



© 2018. Hetzner Online GmbH. Alle Rechte vorbehalten.