Deklarative Linux-Vernetzung mit Netplan – SlyBlog
Linux-Netzwerke können aufgrund der großen Vielfalt an verwendeten Technologie-Stacks und Tools sowie der Komplexität der umgebenden Netzwerkumgebung verwirrend sein. Die Konfiguration von Bridges, Links, VRFs oder Routen kann programmgesteuert, deklarativ, manuell oder automatisch mit Tools wie ifupdown, ifupdown2, ifupdown-ng, iproute2, NetworkManager, systemd-networkd und anderen erfolgen. Jedes dieser Tools verwendet ein anderes Format und einen anderen Speicherort zum Speichern seiner Konfigurationsdateien. Netplan, ein Dienstprogramm zur einfachen Konfiguration von Netzwerken auf einem Linux-System, soll die Art und Weise vereinheitlichen und standardisieren, wie Administratoren mit diesen zugrunde liegenden Technologien interagieren. Aus einer YAML-Beschreibung der erforderlichen Netzwerkschnittstellen und deren Konfigurationsanforderungen generiert Netplan alle erforderlichen Konfigurationen für das von Ihnen gewählte Tool.
In diesem Artikel geben wir einen Überblick darüber, wie Ubuntu Netplan verwendet, um Linux-Netzwerke auf einheitliche Weise zu verwalten. Durch die Schaffung einer gemeinsamen Schnittstelle über zwei verschiedene Technologie-Stacks hinweg profitieren IT-Administratoren von einem einheitlichen Erlebnis auf Desktops und Servern und behalten gleichzeitig die einzigartigen Vorteile der zugrunde liegenden Technologie bei.
Aber beginnen wir zunächst mit ein wenig Geschichte und sehen, wo wir heute stehen.
Geschichte von Netplan in Ubuntu
Beginnend mit Ubuntu 16.10 und angetrieben durch die Notwendigkeit, die Netzwerkkonfiguration in Cloud-Metadaten und anderen Installationssystemen auf einheitliche Weise auszudrücken, hatten wir die Möglichkeit, zu einem Netzwerk-Stack zu wechseln, der sich besser in unser abhängigkeitsbasiertes Boot-Modell integrieren lässt. Wir haben es gewählt systemd-netzwerkd in Serverinstallationen für seine aktive Upstream-Community und weil es Teil von Systemd war und daher in jeder Basisinstallation von Ubuntu enthalten war. Durch den Einsatz moderner Entwicklungstechniken, guter Testabdeckung und CI-Integration hat es eine viel bessere Zukunftsvision. es ist ein Auf und Ab das Tool, das wir zuvor verwendet haben. In Desktop-Installationen haben wir es weiterhin verwendet Netzwerk Manager weil es eng mit der Benutzeroberfläche integriert ist.
Die Verwaltung und Konfiguration zweier separater Netzwerkstacks kann je nach verwendeter Ubuntu-Variante verwirrend sein, und wir wollten eine vereinfachte Benutzererfahrung für jede Ubuntu-Variante bieten. Daher haben wir Netplan.io als Kontrollschicht über systemd-networkd und NetworkManager eingeführt. Netplan akzeptiert deklarative YAML-Dateien /etc/netplan/
als Eingabe und generiert die entsprechende Netzwerkkonfiguration für das entsprechende Netzwerk-Stack-Backend /run/systemd/network/
oder /run/NetworkManager/
abhängig von der Systemkonfiguration. Und das alles unter Beibehaltung der vollen Flexibilität, den zugrunde liegenden Netzwerk-Stack bei Bedarf in seiner ursprünglichen Form zu steuern.
Wer nutzt Netplan?
Die neuesten Versionen von Netplan sind verfügbar und können auf vielen Distributionen wie Ubuntu, Fedora, RedHat Enterprise Linux, Debian und Arch Linux installiert werden.
Ubuntu
Wie oben erwähnt, ist Netplan seit 2016 standardmäßig auf Ubuntu-Systemen installiert und wird daher täglich von Millionen von Benutzern auf vielen Langzeit-Support-Versionen von Ubuntu (18.04, 20.04, 22.04) verwendet. Dies deckt hauptsächlich Ubuntu-Serverszenarien wie Bridging, Bonding, VLANs, VXLANs, VRFs, IP-Tunnel oder WireGuard-Tunnel ab, wobei systemd-networkd als Backend-Renderer verwendet wird.
Auf Ubuntu-Desktopsystemen kann Netplan manuell über seine YAML-Konfigurationsdateien verwendet werden, die die Konfiguration des NetworkManager-Stacks übernehmen. Lesen Sie weiter, um zu erfahren, wie sich dies in Zukunft durch Automatisierung und Integration verbessern wird.
Wolke
Es ist vielleicht nicht so offensichtlich, aber viele Leute haben Netplan verwendet, ohne es zu wissen, wenn sie eine öffentliche Cloud-Instanz über AWS, Google Cloud oder cloud-init eingerichtet haben. Dies liegt daran, dass „Networking Config Version 2“ von cloud-init eine Gateway-Konfiguration für Netplan ist, die den zugrunde liegenden Netzwerk-Stack auf der Cloud-Instanz festlegt. Deshalb ist Netplan beispielsweise auch ein Schlüsselpaket in der Debian-Distribution und wird standardmäßig auch in Debian-Cloud-Images verwendet.
Unsere Vision für das Linux-Netzwerk
Wir wissen, dass Linux-Netzwerke ein Biest sein können, und wir möchten, dass die Dinge einfach und unkompliziert bleiben. Erlauben Sie aber auch individuelle Konfigurationen beliebiger Komplexität. Mit Netplan werden alltägliche Netzwerkanforderungen durch leicht verständliche und gut dokumentierte YAML-Dateien abgedeckt, die den gewünschten Zustand der lokalen Netzwerkschnittstellen beschreiben, der in den entsprechenden Konfigurationsdateien für den jeweiligen Netzwerk-Stack gerendert wird (Neustart oder Laufzeit mit der „netplan apply“-CLI. Zum Beispiel /etc/netplan/lan.yaml
:
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
Auch für Administratoren ist es wichtig, eine einzige Quelle der Wahrheit für die Netzwerkkonfiguration zu haben, damit sie nicht mehrere Netzwerk-Stacks verstehen müssen, sondern sich auf deklarative Daten verlassen können. /etc/netplan/
um ein System unabhängig vom zugrunde liegenden Netzwerkkonfigurations-Backend zu konfigurieren. Dies ist auch sehr hilfreich, um die anfängliche Netzwerkkonfiguration für neue Linux-Installationen zu erweitern, beispielsweise durch Installationssysteme wie Subiquity, Ubuntus Desktop-Installer oder Cloud-Init auf öffentlichen und privaten Clouds.
Neben der Beschreibung und Anwendung der Netzwerkkonfiguration „netplan status
„Die CLI kann verwendet werden, um relevante Daten vom zugrunde liegenden Netzwerkstapel wie systemd-networkd, NetworkManager oder iproute2 abzufragen und auf einheitliche Weise darzustellen.
Im Netplan-Projekt streben wir ein sehr hohes Maß an Testautomatisierung und -abdeckung mit mehreren Unit-Tests, Integrationstests und Linting-Schritten über mehrere Linux-Distributionen hinweg an, was uns die Sicherheit gibt, auch fortgeschrittenere Netzwerkanwendungsfälle wie Open vSwitch oder SR zu unterstützen -. IOV-Netzwerkvirtualisierung, kabelgebunden (statische IP, DHCP, Routing), drahtlos (z. B. WWAN-Modems, WPA2/3-Verbindungen, WLAN-Hotspot, regulatorische Domänenkontrolle, …) und gängige Serverszenarien.
Sollte es jemals ein Szenario geben, das nicht von Netplan selbst abgedeckt wird, bietet es volle Flexibilität zur direkten Steuerung des zugrunde liegenden Netzwerkstapels über Systemd-Override-Konfigurationen oder NetworkManager-Passthrough-Einstellungen sowie manuelle Konfiguration zusammen mit Netplan-gesteuerten Schnittstellen. .
Die Zukunft der Netplan-Desktop-Integration
Am Arbeitsplatz kommt es am häufigsten vor, dass Endbenutzer NetworkManager über seine Benutzeroberflächen-Tools konfigurieren, anstatt sich von den deklarativen YAML-Dateien von Netplan leiten zu lassen, die die nativen Konfigurationsdateien von NetworkManager verwenden. Um zu verhindern, dass Netplan die Kontrolle über solche Systeme an NetworkManager übergibt, arbeiten wir an einer bidirektionalen Integration zwischen NetworkManager und Netplan, um den Anwendungsfall „Single Source of Truth“ in Ubuntu-Desktopinstallationen weiter zu verbessern.
Netplan liefert eine „libnetplan“-Bibliothek aus, die einen internen Netplan-Parser und eine Validierungs-API bereitstellt, die NetworkManager zum Schreiben einer Netzwerkschnittstellenkonfiguration verwenden kann. Beispielsweise kann die über die UI-Tools von NetworkManager oder die D-Bus-API bereitgestellte Konfiguration an einem gemeinsamen Speicherort in das native YAML-Format von Netplan exportiert werden. /etc/netplan/
. Daher müssen sich Administratoren bei der Verwaltung einer Flotte von Desktop-Installationen um Netplan kümmern. Diese Lösung wird in eingeschränkteren Umgebungen wie Ubuntu Core verwendet, wenn der NetworkManager-Snap verwendet wird, und wir werden sie in 24.04 LTS auf generischen Ubuntu-Desktopsystemen bereitstellen.
Zusätzlich zu NetworkManager kann libnetplan auch zur Integration mit anderen Tools im Netzwerkbereich verwendet werden, wie z. B. cloud-init, um die Validierung von Benutzerdaten oder Installationssystemen beim Erstellen neuer Linux-Images zu verbessern.
Abschluss
Insgesamt kann Netplan als guter Bürger in einer Netzwerkumgebung angesehen werden, der Hand in Hand mit anderen Netzwerktools spielt und die einfache Steuerung moderner Netzwerkstacks wie systemd-networkd oder NetworkManager auf gemeinsame, einfache und deklarative Weise ermöglicht. der Weg Es bietet Netzwerkadministratoren eine „einzige Quelle der Wahrheit“ über den Zustand ihres Netzwerks, wobei die einfachen Dinge einfach bleiben, aber komplexe benutzerdefinierte Konfigurationen möglich sind.
Wenn Sie mehr erfahren möchten, können Sie unsere Aktivitäten auf Netplan.io, GitHub, Launchpad, IRC oder unserem Netplan Developer Diaries-Talkblog verfolgen.