Netplan
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Netplan 🇬🇧 stellt eine auf dem YAML-Format basierende Netzwerk-Konfigurations-Abstraktionsschicht für verschiedene Netzwerk-Dienste bereit. D.h. Netplan liest Konfigurationen im YAML-Format ein und übersetzt diese dann in die Konfigurations-Syntax der auf dem System laufenden Netzwerk-Dienste.
Derzeit werden die Dienste systemd-networkd und NetworkManager unterstützt. In der Terminologie von Netplan werden diese auch häufig als „Backend“ bezeichnet.
Netplan richtet sich in erster Linie an Administratoren, Installations-Routinen oder jede andere Art der Betriebssystem- bzw. Software-Verteilung. Die Netzwerk-Konfiguration kann nur in einer einzigen Datei oder – Praxis bei Ubuntu – auf mehrere verteilt gepflegt werden.
Netplan wurde erstmals mit Ubuntu 17.10 eingeführt, ist eine Eigenentwicklung von Canonical und wird bis 23.10 ausschließlich bei Ubuntu Servern verwendet; bei Desktops ist es vorhanden, übergibt aber die Kontrolle vollständig an NetworkManager. Seit Ubuntu 24.04 mit Netplan Version 1.0 ist es auch bei Desktops Standard, d.h. auch NetworkManager speichert seine Verbindungskonfigurationen jetzt über Netplan.
Installation¶
Netplan ist in der Grundinstallation von Ubuntu enthalten[1] im Paket:
netplan.io
Befehl zum Installieren der Pakete:
sudo apt-get install netplan.io
Oder mit apturl installieren, Link: apt://netplan.io
Arbeitsweise¶
Netplan folgt der Richtlinie, dass standardmäßig zunächst keinerlei Netzwerk-Konfigurationen generiert werden. Dies geschieht ausdrücklich nur für solche Netzwerkkomponenten, für die eine Konfiguration im YAML-Format vorliegt.
Konfiguration¶
Die Konfiguration von Netplan erfolgt über Dateien mit der Endung .yaml in den Verzeichnissen:
/lib/netplan/ (Dateien der Distribution)
/etc/netplan (für eigene Konfigurationsdateien)
/run/netplan (wird zur Laufzeit des Systems anlegt),
Dateien in später genannten Verzeichnissen maskieren gleichnamige Dateien in früher genannten Verzeichnissen und die Dateien werden in lexikographischer Reihenfolge bearbeitet.
Bei einer Desktop-Installation besteht die Konfiguration für Netplan standardmäßig nur aus der Konfigurationsdatei /etc/netplan/01-network-manager-all.yaml mit folgendem Inhalt:
1 2 3 4 | # Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager |
network
ist der oberste Knoten, also alle physischen Netzwerkschnittstellen. version: 2
gibt die YAML-Version an, wobei version: 2
bedeutet, dass YAML 1.1 benutzt wird, was der Standard für Netplan ist. renderer: NetworkManager
besagt, dass die Kontrolle über die Netzwerkschnittstellen an den NetworkManager abgegeben wird. Die andere Alternative ist networkd
für systemd-networkd, dies ist auch der Standard, wenn kein renderer angegeben wird.
Hinweis:
Die Einrückung gehört zur Syntax des YAML-Formats und muss konsequent angewendet werden.
Um das Risiko syntaktischer Fehler beim Erstellen einer yaml-Datei möglichst gering zu halten, sollte man im Editor die Anzeige von Leerzeichen einschalten. Dies ist z.B. für Nano mittels Tastenkombination Alt + P möglich.
Hilfreich bei der Fehlersuche in einer *.yaml-Datei ist außerdem die Installation von yamllint, welches die Überprüfung der Syntax erlaubt.
Möchte man eigene Konfigurationsdateien schreiben, so legt man sie im Verzeichnis /etc/netplan/ ab. Der Name der Datei darf beliebig sein, muss aber die Endung .yaml haben. Die Dateien werden in lexikographischer Reihenfolge gelesen. Hat man z.B. zwei Dateien 01-foo.yaml und 02-bar.yaml, würde zuerst 01-foo.yaml gelesen, dann 02-bar.yaml. Sind in den Dateien widersprüchliche / überlappenden Konfigurationen enthalten, wird immer die Konfiguration der später gelesenen Datei genutzt.
Beispiel: statische Netzwerkkonfiguration¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | network: version: 2 renderer: networkd ethernets: enp1s0: addresses: - 10.10.10.2/24 - 2001:DB8::5/64 dhcp4: no routes: - to: 0.0.0.0/0 #Standardroute für IPv4 via: 10.10.10.1 - to: ::/0 #Standardroute für IPv6 via: 2001:DB8::1 nameservers: addresses: [10.10.10.1, 1.1.1.1, 2001:470:20::2] |
Im Beispiel wird der Schnittstelle enp1s0
die IPv4-Adresse 10.10.10.2
zugewiesen, DHCP deaktiviert, als Gateway 10.10.10.1
und als DNS-Server 10.10.10.1
, 1.1.1.1.
und 2001:470:20::2
festgelegt. Für die Netzwerkschnitte ist dann systemd-networkd zuständig.
Als IPv6-Adresse wird 2001:DB8::5/64
festgelegt, Gateway ist 2001:DB8::1
.
Ausführung¶
Die Übersetzung der Konfigurationen erledigt Netplan früh während des System-Starts, mittels systemd.generator-Programs, legt die so erzeugten Konfigurationen im Verzeichnis /run an und überlässt Kontrolle und Verarbeitung anschließend dem jeweils spezifischen Netzwerk-Konfigurator.
Darüber hinaus kann man Netplan noch mittels der folgenden Befehle an sein Dienstprogramm netplan
im laufenden System ausführen:
sudo netplan generate
Generiert aus den vorhandenen YAML-Dateien die Konfigurations-Dateien für die angegebenen Netzwerk-Dienste, legt diese unterhalb des Verzeichnisses /run/... ab, veranlasst aber noch nicht die Anwendung der Konfigurationen durch die Netzwerk-Dienste. Damit lässt sich also zunächst testen, ob aus der YAML-Datei eine valide Backend-Konfiguration hervorgeht.
sudo netplan apply
Generiert aus den vorhandenen YAML-Dateien die Konfigurations-Dateien für die angegebenen Netzwerk-Dienste, legt diese unterhalb des Verzeichnisses /run/... ab und veranlasst die Netzwerkdienste diese Konfigurationen sofort anzuwenden.
sudo netplan try -timeout 180
Veranlasst ebenso wie netplan apply
die unmittelbare Anwendung der Konfiguration, setzt sie aber nach Ablauf der hinter -timeout
angegebenen Sekunden wieder automatisch auf die vorherige Konfiguration zurück. Der Nutzer kann die Konfiguration innerhalb dieser Zeitspanne interaktiv annehmen oder ablehnen. Wird -timeout
nicht angegeben so beträgt das Zeitintervall standardmäßig 120 Sekunden.
Achtung!
Die Nutzung von netplan try
mit der Option -timeout
ist insbesondere sinnvoll, wenn man neue Netzwerkkonfigurationen auf einem System per Fernwartung einrichten will. Es gibt aber auch Berichte, nach denen der Server nach diesem Befehl dauerhaft (d.h. bis zum Neustart) nicht mehr erreichbar war.
Fügt man allen drei Befehlen noch die Option -debug
hinzu, so erhält man ausführlichere Informationen über den Ablauf des Prozesses.
Fehlerhafte Anleitung
Diese Anleitung ist fehlerhaft. Wenn du weißt, wie du sie ausbessern kannst, nimm dir bitte die Zeit und bessere sie aus.
Anmerkung: Der nächste Abschnitt widerspricht den Ausführungen im Abschnitt Konfiguration.
Verhältnis von Netplan-Konfigurationen in /run zu Konfigurationen der Backends in /etc¶
Die von Netplan beim Systemstart im Verzeichnis /run angelegten Konfigurationen für die jeweils spezifischen Netzwerk-Dienste, werden durch etwaig konkurrierende Konfigurationen in den jeweiligen Verzeichnissen unterhalb von /etc verdrängt.
Alternativen¶
Möchte man sich als Anwender nicht mit der Syntax von Netplan auseinandersetzen, so kann man bei Servern mit systemd-networkd oder bei Desktops mit NetworkManager einfach wie gewohnt direkt konfigurieren.
Hinweis:
Dies gilt nur im Verhältnis zu von Netplan unterstützten Backends. Installiert man dagegen ifupdown, um Netzwerkschnittstellen mittels /etc/network/interfaces konfigurieren zu können, muss man Netplan entweder deaktivieren oder deinstallieren, um Konflikte durch konkurrierende Konfigurationen von Netplan und ifupdown sicher zu vermeiden.
Netplan deaktivieren¶
Die Deaktivierung von Netplan, um z.B. stattdessen zur Konfiguration des Netzwerks über die Datei /etc/network/interfaces zu wechseln, ist im Wikiartikel Netplan Deaktivieren beschrieben.
Links¶
intern¶
NetworkManager - Standard-Netzwerkkonfigurator auf Ubuntu-Desktop-Systemen
systemd-networkd - Standard-Netzwerkkonfigurator auf Ubuntu-Server-Systemen, ist aber auch auf Desktop-Systemen vorinstalliert
/etc/network/interfaces - Wurde bis einschließlich Ubuntu 17.04 standardmäßig auf Desktop- und auf Server-Systemen zur textbasierten Nextwerk-Konfiguration genutzt
extern¶
Projektseite 🇬🇧 inklusive Dokumentation
Manpage 🇬🇧 für Ubuntu für Netplan
Launchpad-Seite zu Netplan