Subnetz, Zusatz-IPs oder Failover-IPs mit netplan / systemd bei Hetzner konfigurieren (Ubuntu 18.04 / Xen)

Geschrieben von kelly am Fr., 06.07.2018 - 08:31 Uhr

Host-Konfiguration

Der Server unter Ubuntu 18.04 wird vom Hetzner-Script installimage mit netplan installiert (vorher mit systemd-network).

Netzwerk-Konfiguration

Für Zusatz-IPs, Subnetze oder Fail-Over-IP-Adressen ist keine Konfiguration des Hosts-System nötig, wenn diese Adressen von den Xen-Gästen verwendet werden sollen.

Routed Network

Bei Hetzner muss xen als routed network betrieben werden. Die entsprechenden Konfigurations-Dateien /etc/xen/xl.conf sind dahingehend anzupassen:

vif.default.script="vif-route"
vif.default.gatewaydev="eth0"

Statt eth0 muss die Bezeichnung der Netzwerkkarte verwendet werden.

Anschließend muss das Routing im System in der Datei /etc/sysctl.d/99-hetzner.conf aktiviert werden:

net.ipv4.ip_forward=1

Anschließend laden der Konfigurationen:

sysctl -p /etc/sysctl.conf

Konfiguration virtueller Maschinen

Nach der Einrichtung mit xen-tools existiert keine funktionierende Netzwerk-Konfiguration. Über die xen-Konsole muss das Netzwerk eingerichtet werden.

Netzwerk

Netzwerk-Einstellungen in /etc/systemd/network/10-eth0.network:

[Match]
Name=eth0
 
[Address]
Address=aaa.bbb.ccc.ddd
Peer=AAA.BBB.CCC.DDD/32
 
[Route]
Gateway=AAA.BBB.CCC.DDD
  • aaa.bbb.ccc.ddd IP-Adresse der VM
  • AAA.BBB.CCC.DDD IP-Adresse des Host-Systems

Durch die Verwendung von Peer (was PointToPoint) entspricht, können alle IP-Adressen eines Subnetzes verwendet werden, da kein Routing im Subnetz benötigt wird.

Konfiguration laden

systemctl enable systemd-networkd
service systemd-networkd start
ip route add default via AAA.BBB.CCC.DDD 
  • AAA.BBB.CCC.DDD IP-Adresse des Host-Systems

Nameserver ohne systemd

systemctl disable systemd-resolved.service
systemctl stop systemd-resolved
 
rm /etc/resolv.conf
 
cat << EOF > /etc/resolv.conf
nameserver 213.133.98.98
nameserver 213.133.100.100
nameserver 213.133.99.99
EOF
 
service postfix restart

Nameserver mit systemd

In Datei /etc/systemd/resolved.conf ergänzen:

DNS=213.133.98.98 213.133.100.100 213.133.99.99

Konfiguration laden

service systemd-resolved restart

Resolver-Status kontrollieren

systemd-resolve --status

Löschen /etc/network/interfaces

Die alte Konfiguration muss noch gelöscht werden, damit diese nicht später genutzt wird.

rm /etc/network/interfaces

Weitere IP-Adressen konfigurieren

Werden weitere IP-Adressen benötigt (z.B. eine zusätzliche Failover-IP), wird diese als weitere IP-Adresse in der Xen-Gast-Konfiguration hinterlegt:

vif         = [
   'ip=aaa.bbb.ccc.ddd/32 eee.fff.ggg.hhh/32 iii.jjj.kkk.lll/32,mac=AA:AA:AA:AA:AA:AA',
 ]

Es empfiehlt sich, eine MAC-Adresse zu vergeben, um nach dem Neustart eines Gastes nicht mit dem arp-cache des Hosts in Konflikt zu geraten.

Die IP-Adressen werden alle auf eth0 im Gast zur Verfügung gestellt.

Die Konfiguration von eth0 muss entsprchend in /etc/systemd/network/10-eth0.network angepasst werden:

[Match]
Name=eth0
 
[Address]
Address=aaa.bbb.ccc.ddd
Peer=AAA.BBB.CCC.DDD/32
 
[Address]
Address=eee.fff.ggg.hhh
Peer=AAA.BBB.CCC.DDD/32
 
[Address]
Address=iii.jjj.kkk.lll
Peer=AAA.BBB.CCC.DDD/32
 
[Route]
Gateway=AAA.BBB.CCC.DDD
  • aaa.bbb.ccc.ddd IP-Adresse der ursprünglichen IP-Adresse
  • eee.fff.ggg.hhh IP-Adresse der zusätzlichen IP-Adresse
  • iii.hhh.jjj.lll IP-Adresse der weiteren zusätzlichen IP-Adresse
  • AAA.BBB.CCC.DDD IP-Adresse des Host-Systems

Nicht immer funktioniert der Neustart von systemd-networkd sauber. Ein reboot des Systems liefert verlässlichere Ergebnisse.

Aktualisiert am 2018-12-17. Die vorherige Lösung mit verschiedenen Netzwerk-Adaptern im Gast hat sich nicht bewährt.

Systeme
Server