NetworkManager/nmcli

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:

  1. ⚓︎ Installation von Programmen

  2. ⚓︎ Starten von Programmen

  3. ⚓︎ Ein Terminal öffnen

  4. ⚓︎ NetworkManager

Inhaltsverzeichnis
  1. Installation
  2. Bedienung
    1. Ausgabeformate
    2. Aufruf
  3. Beispiele
    1. Status abfragen
    2. Verbindung aufbauen und beenden
  4. Optionen
  5. Bereiche und Kommandos
  6. Verbindungsprofil pflegen
    1. Verbindungsprofil anlegen
    2. Verbindungsprofil bearbeiten
    3. Verbindungsprofil entfernen
  7. Dokumentation
  8. Links

Dieser Artikel beschreibt, wie man den NetworkManager[4] ohne grafische Oberfläche konfigurieren und bedienen kann. Dies erfolgt sowohl bei Desktops als auch bei Servern auf der Kommandozeile[3] oder in Skripten über das universelle Kommandozeilenprogramm nmcli (NetworkManager Command Line Interface).

⚓︎ Es gibt weitere Bedienoberflächen mit gegenüber nmcli eingeschränkter Funktionalität; diese sind im Hauptartikel zu Networkmanager[4] beschrieben:

Installation

Das Kommandozeilenprogramm nmcli ist das Dienstprogramm zu NetworkManager[4], welcher bei Ubuntu-Desktops immer standardmäßig installiert wird und zur Konfiguration von Netzwerkverbindungen eingesetzt wird. Bei Desktops ist nichts zusätzlich zu installieren[1].

Ubuntu-Server verwenden systemd-networkd zur Konfiguration des Netzwerks. Man kann das umstellen auf NetworkManager, was aber hier nicht beschrieben wird. ( → Hinweise) Auf jeden Fall benötigt man:

Befehl zum Installieren der Pakete:

sudo apt-get install network-manager 

Bedienung

Man benutzt das Programm nmcli zur Abfrage von das Netzwerk betreffenden Einstellungen und Zustandsdaten (Status) sowie zur Steuerung (Auf- und Abbau) von Netzwerkverbindungen über Verbindungsprofile. Ein Verbindungsprofil ist eine Sammlung von Eigenschaften, die bei einer Kommunikation über ein Netzwerk eine Rolle spielen, dazu gehören Adressen und Routen, zulässige Telegrammlänge, Übertragungsgeschwindigkeit und vieles mehr. Man kann solche Verbindungsprofile mit nmcli erstellen, ändern und löschen.

⚓︎

Ausgabeformate

Das Programm kennt drei Ausgabeformate für unterschiedliche Anwendungszwecke:

Tabelle 1: Auswahl des Ausgabeformates
Format Option Beispiel Beschreibung
ausführlich --pretty
-p
nmcli --pretty device 
Gut lesbar in der eingestellten Sprache mit zusätzlichen Formatierungen, besonders geeignet zur Bedienerführung.
normal
nmcli device 
Gut lesbar in der eingestellten Sprache, Standardmodus bei allen Arbeiten auf der Kommandozeile.
kurz und knapp --terse
-t
nmcli -t device 
Kompaktes, schlecht lesbares Format, aber gut geeignet zur Weiterverarbeitung in Skripten. Ausgabe wird nicht übersetzt.

Beispielausgaben:

Die Ausgaben unterscheiden sich nur in Darstellung und ggf. Sprache; die Inhalte sind identisch.

Aufruf

Das Programm nmcli wird im Terminal[3] immer als normaler Benutzer aufgerufen[2] und niemals wird ein sudo voran gestellt. NetworkManager verschafft sich bei Bedarf erweiterte Rechte über PolicyKit.

Die Grundstruktur aller Aufrufe entspricht diesem Schema:

nmcli OPTIONEN BEREICH KOMMANDO-mit-Parametern 

Der Befehl kennt außerdem die Vervollständigung über die Tabulatortaste Tab ⇆ , auch für alle Zusätze auf der Kommandozeile.

Beispiele

Status abfragen

Einen Überblick des momentanen Zustands des Netzwerks erhält man mit diesen Befehlen:

nmcli general
nmcli device
nmcli connection 

Der erste Befehl zeigt an, ob und wie gut man mit dem Rest der Welt verbunden ist.

Der zweite Befehl zeigt eine Liste der NetworkManager bekannten Schnittstellen und deren Status (STATE):

Der dritte Befehl zeigt eine Liste mit allen verfügbaren Verbindungsprofilen.

Verbindung aufbauen und beenden

Dafür gibt es Befehle wie in Tabelle 2. Der hier beispielhaft gewählte Schnittstellenname eth0 ist durch den Namen einer vorhandenen Schnittstelle zu ersetzen. PROFIL identifiziert das konkrete Verbindungsprofil über dessen Namen oder dessen UUID (dann mit voran gestelltem Schlüsselwort uuid).

Tabelle 2: Befehle zum Verbinden und Trennen
Befehl Wirkungen
nmcli device connect eth0 
1. Wenn bereits eine Verbindung über die Schnittstelle eth0 besteht, so wird diese getrennt.
2. Es werden alle Verbindungsprofile gesucht, welche zur Schnittstelle eth0 passen; dazu muss der Typ des Profils zum Typ der Schnittstelle passen und im Profil muss entweder genau diese Schnittstelle oder gar keine eingetragen sein. Auch Profile mit nicht automatischer Verbindung werden berücksichtigt. Wenn es kein passendes Verbindungsprofil gibt, wird automatisch ein temporäres Profil angelegt.
3. Die so ausgewählten Verbindungsprofile werden nacheinander ausprobiert, bis eines funktioniert.
nmcli device up eth0 
nmcli connection up PROFIL 
1. Es wird zuerst die Schnittstelle bestimmt, auf die der Befehl angewendet werden soll. Die Schnittstelle kann entweder explizit im Profil angegeben sein oder alle es werden alle Schnittstellen des passenden Typs ohne bestehende Verbindung selektiert.
2. Es wird versucht, nacheinander über jede selektierte Schnittstelle mit dem Profil PROFIL zu verbinden bis das gelingt.
nmcli device disconnect eth0 
Eine existierende Verbindung über die Schnittstelle eth0 wird getrennt.
Diese Schnittstelle wird nicht mehr automatisch aktiviert.
nmcli device down eth0 
nmcli connection down PROFIL 
Eine existierende Verbindung mit dem Profil PROFIL wird getrennt.
Die benutzte Schnittstelle bleibt für automatische Verbindungsversuche aktiviert.

Optionen

Eine vollständige Liste aller OPTIONEN erhält man mit dem Befehl:

nmcli help 

In der Tabelle 3 werden einige ausgewählte Optionen erläutert, soweit diese für das Verständnis der in diesem Artikel gezeigten Beispiele benötigt werden.

Tabelle 3: Ausgewählte Optionen
Option Beispiel und
Beschreibung
--fields FELDLISTE
-f FELDLISTE
nmcli -f name,autoconnect,autoconnect-priority connection 
FELDLISTE ist eine mit Komma getrennte Liste von Eigenschaften bzw. Variablen oder das Wort all oder das Wort common Es werden nicht die Standardvariablen, sondern die angegebenen gelistet; all steht natürlich für alle und common für eine oft nachgefragte Auswahl (= Standardauswahl), die auch gilt, wenn man die Option -f nicht verwendet.
--get-values FELDLISTE
-g FELDLISTE
nmcli -g general.device,IP4.ADDRESS device show cable 
FELDLISTE wie vorstehend. Es werden die Werte der angegebenen Eigenschaften, getrennt durch Doppelpunkte : ausgegeben. Nützlich für die weitere Verarbeitung in Skripten.
--pretty
-p
Siehe Tabelle 1
--terse
-t
Siehe Tabelle 1
--mode multiline
-m multiline
Ein weiteres Ausgabeformat, welches manchmal automatisch aktiviert wird. Anstelle einer gemeinsamen Zeile wird für jede Eigenschaft eine eigene Zeile verwendet.

Eis gibt ziemlich viele in einer FELDLISTE verwendbare Eigenschaften; welche konkret hängt aber aber ab vom Bereich, dem Kommando, der Schnittstelle und des ggf. daran gebundenen Verbindungsprofils sowie auch von der momentanen betrieblichen Situation. Man kann die zulässigen Namen abfragen mit solchen Befehlen:

nmcli -m multiline -f all connection  show | cat 

nmcli -m multiline -f all device show eth00 | cat 

Statt cat kann man natürlich auch mit grep filtern.

Die Namen der Eigenschaften werden durchgehend in Großbuchstaben geschrieben. Meistens kann man aber auch andere Schreibweisen verwenden.

Bereiche und Kommandos

Eine vollständige Liste aller BEREICHe erhält man mit dem Befehl:

nmcli help 

Für jeden BEREICH erhält man eine vollständige Liste aller KOMMANDOS mit diesem Befehl:

nmcli BEREICH help 

Dieser Artikel beschränkt sich im folgenden auf eine Auswahl praxisrelevanter Beispiele.

Verbindungsprofil pflegen

Es gibt permanente (d.h. abgespeicherte) und temporäre (d.h. ad hoc von nmcli angelegte) Verbindungsprofile. Man kann ein temporäres Verbindungsprofil in ein permanentes umwandeln, indem man irgend etwas, z.B. den Namen ändert und speichert.

Zur Bearbeitung des Verbindungsprofils gibt es vier Möglichkeiten:

  1. Man benutzt ein GUI-Werkzeug.

  2. Permanente Verbindungsprofile werden in ganz normalen Textdateien gespeichert und können von Root wie jede Systemdatei bearbeitet werden. Dazu muss man mit Root-Rechten arbeiten und wissen, wo diese Dateien gespeichert werden und wie sie aufgebaut sind:

    • Vor Ubuntu 24.04 wurden Verbindungsprofile abgelegt im Ordner /etc/NetworkManager/system-connections/ als INI-Dateien im NetworkManager-Format.

    • Ab Ubuntu 24.04 werden die Profile von Netplan verwaltet und liegen im Ordner /etc/netplan/ im Format YAML. Außerdem werden sie noch unter /run/NetworkManager/system-connections/ als INI-Dateien im NetworkManager-Format gespiegelt, aber eine Bearbeitung dieser Dateien ist sinnlos, da sie einen Neustart nicht überleben.

  3. Der Wert jeder Eigenschaft eines Verbindungsprofils kann im Terminal verändert werden. Siehe unten.

  4. Das Programm nmcli enthält auch einen interaktiven Editor für Verbindungsprofile. → Verbindungsprofil bearbeiten

Verbindungsprofil anlegen

Das erfolgt im Terminal mit einem Befehl folgender Grundstruktur:

nmcli connection add type TYPANGABE EIGENSCHAFT-Name-und-Wert … 
Tabelle 4: Wichtige Eigenschaften von Verbindungsprofilen
Eigenschaft Alias Pflicht Bedeutung
connection.type type ja Der Typ des Verbindungsprofils. Eine vollständige Liste aller unterstützten Typen erhält man durch bewusste Falscheingabe, z.B.
nmcli connection add type ? 
connection.interface-name ifname manchmal Der Name der zu benutzenden oder anzulegenden Schnittstelle ist erforderlich für die Typen bond, team, bridge, vlan.. Das Verbindungsprofil verwendet nur diese Schnittstelle. Wenn man nichts angibt, arbeitet das Profil mit allen Schnittstellen des passenden Typs.
connection.id con-name nein Angabe nicht erforderlich, aber empfohlen. Man legt hiermit den Klartextnamen des Profils fest.
alle anderen nein Es gibt abhängig vom Typ sehr viele mögliche Eigenschaften; man erhält eine Liste, indem man sich eine bestehende Verbindung passenden Typs (hier beispielhaft: 91_APIPA) zeigen lässt:
nmcli connection show 91_APIPA 

Der Klartextname einer Verbindung ist keine Pflichtangabe. Wenn man selbst keinen vergibt, erfindet das System einen Standardnamen.

Hinweis:

Es kann gleichzeitig mehrere Verbindungsprofile mit demselben Klartextnamen geben, was in der Praxis regelmäßig zur vollständigen Verwirrung des Bedieners führt. Das System unterscheidet die Verbindungsprofile durch ihre eindeutig vergebenen UUIDs.

Man sollte sich mit eigenen Namen Mühe geben und diese unverwechselbar gestalten. Leerzeichen in diesen Namen sind möglich, werden sich aber irgendwann als unpraktisch erweisen.

Verbindungsprofil bearbeiten

Es gibt zwei Möglichkeiten ein Verbindungsprofil dauerhaft zu ändern und eine weitere für temporäre Änderungen:

Verbindungsprofil entfernen

Man löscht ein Verbindungsprofil mit einem der folgenden Befehlen:

nmcli connection delete 91_APIPA 

nmcli connection delete id 91_APIPA 

Diese beiden Befehle sind völlig gleichwertig. Das optionale Schlüsselwort id gibt an, dass die Selektion des Verbindungsprofils über dessen Namen erfolgt, und das funktioniert, solange diese Namen eindeutig sind.

nmcli connection delete uuid UUID-von-91_APIPA 

Diesen Befehl muss man nur anwenden, wenn die Namen der Verbindungsprofile nicht eindeutig sind. Man selektiert dann über die UUID des Profils und muss das mit dem Schlüsselwort uuid ankündigen.

Man kann sowohl permanente wie temporäre Profile entfernen. Ein temporäres Profil wird jedoch möglicherweise sofort wieder mit demselben Namen, aber neuer UUID automatisch angelegt.

Es gibt keine Sicherheitsabfrage und auch kein "undelete".

Dokumentation

Es gibt mehrere Manpages, denen man viel zur Verwendung von nmcli zur Konfiguration des NetworkManagers[4] entnehmen kann: