Bei aktuellen Ubuntu-Versionen (seit Version 17.10) kommt für die Netzwerkkonfiguration Netplan zum Einsatz und ersetzt damit die bisherige Konfiguration über die Datei /etc/network/interfaces
.
Dadurch hat sich unter anderem auch die Syntax der Konfiguration verändert.
Hinweis
Bei Nutzung von Ubuntu-Desktop wird die Netzwerkkonfiguration standardmäßig vom NetworkManager verwaltet, welcher dazu von Netplan eingebunden wird.
Konfiguration
Die Konfiguration erfolgt über Dateien im YAML-Format im Verzeichnis /etc/netplan/
. Dort können eine oder mehrere Konfigurationsdateien mit nahezu beliebigem Namen angelegt werden. Lediglich die Dateiendung muss .yaml
lauten. Sind mehrere Dateien vorhanden, so werden diese in lexikalischer Reihenfolge geladen.
Im Standard-Installimage von Hetzner beispielsweise findet sich die Konfiguration in der Datei /etc/netplan/01-netcfg.yaml
bzw. /etc/netplan/50-cloud-init.yaml
bei Hetzner Cloud Servern.
Wichtig bei den yaml-Dateien ist die korrekte Einrückung der Einträge mit Leerzeichen.
Beispiel
Hier eine Beispielkonfiguration mit lokalen IPv4 und IPv6 Adressen, sowie den Cloudflare DNS Servern:
1 | network: |
enp2s0
ist dabei unser Netzwerkinterface, welches konfiguriert werden soll.
Im Bereich addresses
können mehrere IPv4 und IPv6 Adressen mit der jeweiligen Subnetzmaske bzw. Prefixlänge in CIDR-Notation angegeben werden.
Achtung
Mehrere gleichberechtigte IPs der gleichen Art (IPv4/IPv6) können zu Problemen führen. Mehr dazu weiter unten.
Anwenden der Konfiguration
Zum Anwenden der Konfiguration gibt es die beiden Befehle netplan apply
und netplan try
.
Tipp
In den meisten Fällen sollte netplan try
verwendet werden.
Mit netplan apply
sollte man bei remote Systemen vorsichtig sein, da hiermit die Änderungen direkt übernommen werden und Fehler in der Konfiguration zu einem nicht mehr erreichbaren System führen können.
netplan try
hingegen lädt die neue Konfiguration und erwartet eine Bestätigung durch den Nutzer innerhalb von (standardmäßig) 2 Minuten. Erfolgt keine Bestätigung, so wird die vorherige Konfiguration wiederhergestellt und man ist auf der (nahezu) sicheren Seite.
Zusätzliche IP-Adressen
Wenn wir über die Netplan Konfiguration zusätzliche IP-Adressen der gleichen Art (IPv4/IPv6) im addresses
-Bereich hinzufügen, dann sind diese gleichberechtigt und einzelne Dienste (Programme) können (und werden) eine der IP-Adressen für ausgehenden Traffic nutzen.
Dies führt spätestens dann zu Problemen, wenn beispielsweise ein E-Mail Server nicht die IP-Adresse Mails versendet, die dem SPF-Record nach für eine Domain erlaubt ist.
Um nun festlegen zu können, dass eine IP-Adresse nicht für ausgehenden Datenverkehr genutzt werden soll, muss für die IP die Option preferred_lft
(lft = lifetime) auf 0
gesetzt werden. Diese Option gibt in Sekunden an, wie lange eine IP-Adresse als Quelladresse für ausgehenden Datenverkehr genutzt werden darf. Ist die 0 erreicht (oder direkt gesetzt), so wird die IP als deprecated (veraltet) markiert und kann dann nur noch für eingehenden Datenverkehr genutzt werden.
Ab Netplan Version 0.100
Ab Version 0.100 (Ubuntu 22.04 und höher) unterstützt Netplan das Setzen der Lifetime direkt in den Konfigurationsdateien.
Hierzu werden die IP-Adressen wie im folgenden Beispiel definiert:
1 | addresses: |
Bis Netplan Version 0.99
Die in Ubuntu 20.04 enthaltene Version 0.99 von Netplan unterstützt das Setzen der Lifetime noch nicht, weshalb wir hier die zusätzlichen IP-Adresse nicht direkt in der Konfiguration von Netzplan hinzufügen können.
Details zu alten Versionen einblenden
Stattdessen weichen wir auf Hooks des networkd-dispatcher aus. Dieser ist Standardmäßig bei Ubuntu zusammen mit Netplan installiert.
Zum Hinzufügen von IP-Adressen nach dem Start eines Netzwerkinterfaces erstellen wir die Datei /etc/networkd-dispatcher/routable.d/50-ifup-hooks
mit folgendem Inhalt:
1 |
|
Damit die IP-Adressen beim Stoppen des Interfaces auch wieder entfernt werden, erstellen wir zusätzlich die Datei /etc/networkd-dispatcher/off.d/50-ifdown-hooks
mit folgendem Inhalt:
1 |
|
Diese beiden Dateien müssen dem Nutzer root gehören und ausführbar sein (chmod u+x
).
Der Name des Interfaces und die IP-Adressen müssen natürlich entsprechend angepasst werden.
Zusätzlich empfehle ich, in der Konfiguration (z.B. /etc/netplan/01-netcfg.yaml
) von Netplan die folgenden Kommentarzeilen hinzuzufügen, damit man sich beim Bearbeiten dieser direkt wieder daran erinnert, dass/wo die zusätzlichen IP-Adressen konfiguriert sind:
1 | # additional IPs are added/removed by networkd-dispatcher |
Mit diesen Hooks werden dann beim Starten/Stoppen des Netzwerkinterfaces automatisch die zusätzlichen IP-Adressen mit den entsprechenden Lifetimes hinzugefügt bzw. wieder entfernt.
Prüfen der zusätzlichen IP-Adressen
Ist alles soweit konfiguriert und die Konfiguration mit netplan try
erfolgreich übernommen, so können wir mittels ip addr show
(oder kurz ip a
) prüfen, ob die Lifetime für die IP-Adressen richtig gesetzt wurde.
In der Ausgabe sollten die zusätzlichen IP-Adressen jetzt mit deprecated markiert sein:
1 | inet6 fddd:dead:beef:babe::c0de/128 scope global deprecated |
Damit sollte nur noch die unterste IP-Adresse mit preferred_lft forever
für ausgehenden Datenverkehr genutzt werden.