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 Netplan-Terminologie 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. In diesem Bereich kann es die Arbeit vereinfachen, weil die Netzwerk-Konfiguration nur noch in einer einzigen Datei anstatt auf mehrere verteilt gepflegt werden muss.
Netplan wurde erstmals mit Ubuntu 17.10 eingeführt, ist eine Eigenentwicklung von Canonical und wird bis jetzt ausschließlich in Ubuntu verwendet.
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 Netplan-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 wäre auch der Standardrenderer, wenn keiner 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 Ethernetschnittstelle 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 und legt die so erzeugten Konfigurationen im Verzeichnis /run an und überlässt Kontrolle und Verarbeitung anschließend dem jeweils spezifischen Netzwerk-Dienst.
Darüber hinaus kann man Netplan noch mittels der drei folgenden Befehle 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.
Die Nutzung von netplan try
ist damit insbesondere sinnvoll, wenn man neue Netzwerkkonfigurationen auf einem System per Fernwartung einrichten will.
Fügt man allen drei Befehlen noch die Option -debug
hinzu, so erhält man ausführlichere Informationen über den Ablauf des Prozesses.
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.
Möchte man sich als Anwender also nicht mit der Syntax von Netplan auseinandersetzen, so kann man systemd-networkd oder NetworkManager einfach wie gewohnt direkt konfigurieren. Für Ubuntu-Desktop-Systeme ist dies für NetworkManager ohnehin standardmäßig der Fall (s.o. Konfiguration).
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-Netzwerkdienst auf Ubuntu-Desktop-Systemen
systemd-networkd - Standard-Netzwerkdienst 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