Nmstate Ein deklaratives Netzwerkkonfigurationstool für Linux

Nmstate Ein deklaratives Netzwerkkonfigurationstool für Linux

Das Linux-Ökosystem bietet zahlreiche Möglichkeiten, Netzwerke zu konfigurieren. In diesem Handbuch wird ein weiteres Netzwerkkonfigurationstool vorgestellt, das als bekannt ist Nmstate

Nmstate ist ein deklarativer Netzwerkmanager für die Konfiguration von Netzwerken auf Linux -Hosts. Es handelt sich um eine Bibliothek, die ein Befehlszeilen-Tool bietet, das Host-Netzwerkeinstellungen verwaltet. Es verwaltet Host Networking über eine deklarative API in Richtung Norden. Zum Zeitpunkt des Schreibens dieses Leitfadens die Netzwerk Manager Dämon ist der einzige Anbieter, der von unterstützt wird Nmstate.

In diesem Leitfaden betrachten wir einige der Beispielanwendungen der Nmstate Werkzeug. Für diesen Leitfaden werden wir dies verwenden Fedora Linux.

Imperative gegen deklarative Ansätze

Das Netzwerkmanagement kann zwei Ansätze verfolgen - Imperativ Und deklarativ. Im Imperativ Ansatz definieren Sie explizit den Netzwerkzustand einer Schnittstelle, indem Sie Befehle auf dem Terminal ausführen. Der Fokus liegt auf der 'Wie''.

Führen Sie den Befehl aus, um beispielsweise ein Netzwerk mit dem Imperativansatz zu fällen:

$ sudo ifconfig ENP0S3 unten 

Andererseits die deklarativ Ansatz verwendet a Yaml Datei, um die Änderungen auf eine Konfiguration anzuwenden. Die meisten DevOps -Orchestrierungswerkzeuge wie z Kubernetes Verwenden Sie diesen Ansatz, um Pods -Anwendungen mit a zu bereitstellen Yaml Datei.

Dieser Ansatz liefert das, was allgemein als Infrastruktur als Code bezeichnet wird (Code (IAC) In DevOps -Kreisen. Dies verbessert die Automatisierung der Netzwerkkonfiguration am Host und bietet eine schnelle und zuverlässigere Möglichkeit, mehrere Änderungen an einer Netzwerkschnittstelle mit minimalen Fehlern vorzunehmen.

Lassen Sie uns nun die Gänge wechseln und sehen, wie Sie das verwenden können Nmstate Konfigurationstool zum Konfigurieren Ihrer Netzwerkschnittstellen unter Linux.

Schritt 1: Installieren Sie das NMState -Networking -Konfigurationstool

Wir werden den Ball ins Rollen bringen, indem wir die installieren Nmstate. Überprüfen Sie zunächst die Verfügbarkeit des Pakets von Fedora Repositorys wie folgt:

$ sudo dnf suche nmstate 

Aus der Ausgabe können wir feststellen, dass der Netzwerkmanager in den offiziellen Repositories verfügbar ist.

Überprüfen Sie das NMState -Paket

Als nächstes installieren Sie Nmstate folgendermaßen. Das funktioniert weiter Fedora 31 und spätere Versionen.

$ sudo dnf install nmstate 

Der Befehl installiert die Nmstate Netzwerkmanager -API neben anderen Python -Abhängigkeiten.

Installieren Sie NMState in Fedora

Überprüfen Sie nach Abschluss der Installation die nmstate Das Paket ist wie folgt installiert.

$ rpm -qi nmstate 
Überprüfen Sie das NMState -Paket

Aktivieren Sie für rhelbasierte Linux zuerst das COPR-Repository.

$ sudo dnf copr aktivieren nmstate/nmstate-stabil 

Dann installieren Nmstate folgendermaßen.

$ sudo dnf install nmstate 

Weitere Anweisungen zur Installation von NMState aus der Quelle finden Sie in der Quelle.

Nach der Installation können Sie die Version von überprüfen Nmstate wie folgt installiert.

$ nmstatectl Version 1.0.2 

Verwenden von NMState -Konfigurationstool unter Linux

Mit Nmstate Lassen Sie uns installiert, und gehen Sie zu den gestrickten Grittien, wie Sie das Network Manager-API optimal nutzen können.

Führen Sie den folgenden Befehl aus, um die aktuelle Netzwerkkonfiguration Ihrer Netzwerkschnittstelle anzuzeigen. Hier ist die Konfiguration Ihrer ENP0S3 Schnittstelle.

$ nmstatectl show ENP0S3 
Zeigen Sie die Konfiguration der Netzwerkschnittstellenkonfiguration

Die Ausgabe ist in 4 verschiedene Abschnitte unterteilt:

  • DNS-Reolver: Dieser Abschnitt enthält die Namenserver -Konfiguration für die bestimmte Schnittstelle.
  • Routenströme: Dies sieht die Routing -Regeln vor.
  • Routen: Dies schließt sowohl dynamische als auch statische Routen ein.
  • Schnittstellen: Dieser Abschnitt gibt sowohl die IPv4- als auch die IPv6 -Einstellungen an.

Ändern der Netzwerkkonfiguration unter Linux

Du kannst den ... benutzen Nmstate Konfigurationstool zum Konfigurieren Ihrer Hosts im gewünschten Status mithilfe interaktiven oder dateibasierten Modi im gewünschten Status.

  • Interaktiv: Dies bearbeitet eine Netzwerkschnittstelle mit der nmstatectl bearbeiten Befehl. Dieser Befehl öffnet einen Texteditor, der durch die Variable der Editorumgebungsvariable definiert ist. Sobald die Änderungen gespeichert sind, wendet NMState die neue Konfiguration sofort an, sofern Syntaxfehler festgestellt wurden.
  • Dateibasiert: Im dateibasierten Modus wird die Schnittstellenkonfiguration mithilfe einer YAML- oder JSON-Datei mit der Datei angewendet nmStatectl beantragen Befehl.

Lassen Sie uns nun die Hände schmutzig machen und sehen Sie, wie Sie die Netzwerkkonfiguration mithilfe verwenden können Nmstate.

Unser Fedora System verfügt über zwei aktive Netzwerkschnittstellen mit der folgenden Konfiguration:

$ ip -br -4 a 
Probenausgabe
LO Unbekannt 127.0.0.1/8 ENP0S3 UP 192.168.2.104/24 ENP0S8 UP 192.168.2.103/24 

Beispiel für den interaktiven Konfigurationsmodus

Wir werden den interaktiven Modus verwenden, um die zu ändern MTU (Maximale Übertragungseinheit) des ENP0S3 Netzwerkschnittstelle. Standardmäßig ist dies auf 1500 wie gezeigt.

$ ifconfig 
Überprüfen Sie das Netzwerk -MTU unter Linux

Wir werden dies an ändern 4000. Wir werden dies mit dem tun nmstatectl bearbeiten Befehl wie folgt.

$ sudo nmstatectl bearbeiten eNP0S3 

Dies öffnet die Konfiguration in einem Texteditor. Für unseren Fall öffnet es ein Vim Editor. Als nächstes scrollen Sie den ganzen Weg nach unten und finden Sie die MTU Parameter. Wir werden den Wert auf ändern 4000, So wie wir eine Datei in Vim bearbeiten würden. Dann werden wir die Änderungen speichern.

Ändern Sie das Netzwerk -MTU unter Linux

Wenn Sie die Datei speichern und beenden, sehen Sie eine durcheinandergebrachte Ausgabe am Terminal als Nmstate rettet die Änderungen. Es ist keine Intervention erforderlich, also sitzen Sie einfach still.

Lassen Sie uns nun bestätigen, dass die Änderung vorgenommen wurde.

$ ifconfig 

Aus dem Terminalausgang können wir sehen, dass wir die MTU erfolgreich in die MTU geändert haben 4000 Aus der Standardeinstellung 1500 Wert.

Überprüfen Sie die Netzwerk -MTU unter Linux

Beispiel für den Dateibasierten Konfigurationsmodus

Lassen Sie uns nun die Konfiguration mit dem dateibasierten Modus ändern. In diesem Beispiel werden wir deaktivieren IPv6 für die ENP0S8 Netzwerkschnittstelle. Der erste Schritt besteht darin, eine YAML -Datei zu erstellen, in der der gewünschte Status der angegeben wird ENP0S8 Netzwerkschnittstelle.

$ sudo nmstatectl show ENP0S8> ENP0S8.YML 
Network YAML -Datei erstellen

Als nächstes werden wir die bearbeiten Yaml Datei wie folgt.

$ sudo vim enp0s8.YML 

Scrollen Sie zum IPv6 -Abschnitt nach unten. Um IPv6 zu deaktivieren, legen Sie den aktivierten Parameter auf False ein und löschen Sie die durchgeschlagenen Zeilen.

Deaktivieren Sie IPv6 unter Linux

Speichern Sie die Konfiguration und wenden Sie den neuen Status mit der YAML -Datei wie folgt an.

$ sudo nmstatectl anwenden eNP0S8.YML 

Führen Sie nun den angezeigten Befehl aus, um zu überprüfen, ob IPv6 deaktiviert wurde. Die angezeigte Ausgabe zeigt, dass das IPv6 für die ENP0S8 Die Netzwerkschnittstelle ist leer, was bedeutet, dass wir IPv6 auf der Schnittstelle erfolgreich deaktiviert haben.

$ ip -br a 
Bestätigen Sie IPv6 unter Linux deaktiviert

Änderungen des Netzwerks vorübergehend anwenden

Eine andere wirklich praktische Funktionalität, die Nmstate Bietet die Möglichkeit, einen gewünschten Netzwerkzustand vorübergehend zu konfigurieren. Sobald Sie mit der Konfiguration zufrieden sind, können Sie fortfahren und die Änderungen dauerhaft vornehmen. Andernfalls werden die vorgenommenen Änderungen zu den ersten Einstellungen zurückgeführt, sobald die Zeitüberschreitung abgelaufen ist. Das Standard -Timeout beträgt 60 Sekunden.

Um dies zu demonstrieren, werden wir vorübergehend eine statische IP auf die festlegen ENP0S3 Schnittstelle und deaktivieren DHCP. Greifen Sie noch einmal mit einem Texteditor auf die Datei zu.

$ sudo vim enp0s3.YML 

Scrollen Sie zum IPv4 Abschnitt. Geben Sie die statische IP an - in unserem Fall 192.168.2.150 und löschen Sie die durchgehenden Linien. Stellen Sie außerdem sicher, dass Sie die festlegen DHCP Parameter zu FALSCH.

Stellen Sie statische IP in Linux ein

Speichern Sie die Datei und begehen Sie die Änderungen wie folgt vorübergehend.

$ sudo nmStatectl anwenden-no-commit-Timeout 20 ENP0S3.YML 

Der --No-Commit Die Option wendet die Änderungen für einen von der definierten Zeitraum vorübergehend an --Auszeit Option, die in diesem Beispiel 20 Sekunden beträgt.

Um die zeitliche Anwendung der Änderungen zu überprüfen, werden wir die IP -Konfiguration in einem Zeitintervall von 20 Sekunden überprüfen.

$ ip -br a 

Aus der Ausgabe können Sie feststellen, dass die IP -Konfiguration der Schnittstelle nach dem Zeitintervall von 20 Sekunden zu DHCP zurückgekehrt ist. Die IP -Adresse ging zurück zu 192.168.2.104 Aus dem früheren statisch konfigurierten IP, der war 192.168.2.150.

Überprüfen Sie die Netzwerkschnittstelle

Zugegeben, die Nmstate Tool ist ein bequemes Tool zum Konfigurieren Ihrer Netzwerkschnittstellen. Es ist ein deklaratives Tool, das den gewünschten Konfigurationsstatus der Schnittstelle eines Hosts mithilfe der NetworkManager -API anwendet.

Der Zustand wird leicht mit entweder die definiert interaktiv sich nähern oder die verwenden Dateibasiert Methode, die eine vorkonfigurierte Methode verwendet Yaml Datei. Dies verbessert die Automatisierung von Konfigurationsaufgaben und die Verringerung von Fehlern während der Konfiguration.