ubuntuusers.de

Netplan

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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.

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

Diese Revision wurde am 23. August 2023 01:08 von Netniuk erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, System