ubuntuusers.de

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.

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:

  • network-manager (Rahmenwerk zur Netzwerkverwaltung (Dienst und Werkzeuge für die Nutzerumgebung) aus main)

Befehl zum Installieren der Pakete:

sudo apt-get install network-manager 

Oder mit apturl installieren, Link: apt://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:

  • Ausführlich:

    =====================
      Status der Geräte
    =====================
    DEVICE         TYPE      STATE               CONNECTION                  
    -----------------------------------------------------------------------------------------------
    cable          ethernet  verbunden           90_DHCP+SLAAC-Client global 
    lo             loopback  verbunden (extern)  lo                          
    radio          wifi      nicht verbunden     --                          
    HUB            bridge    nicht verwaltet     --
  • Normal:

    DEVICE         TYPE      STATE               CONNECTION                  
    cable          ethernet  verbunden           90_DHCP+SLAAC-Client global 
    lo             loopback  verbunden (extern)  lo                          
    radio          wifi      nicht verbunden     --                          
    HUB            bridge    nicht verwaltet     --
  • Kurz und knapp:

    cable:ethernet:connected:90_DHCP+SLAAC-Client global
    lo:loopback:connected (externally):lo
    radio:wifi:disconnected:
    HUB:bridge:unmanaged: 

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 
  • OPTIONEN darf leer sein. Ein Beispiel für Optionen sind die bereits vorgestellten Formate, weitere werden unten beschrieben.

  • BEREICH ist eines der Worte general, networking, radio, connection, device, agent, monitor oder help. Man darf diese Angabe abkürzen, solange sie eindeutig bleibt. → Beispiele

  • KOMMANDO-mit-Parametern darf leer sein, dann wird ein Standardkommando ausgeführt und es werden Informationen angezeigt. Die zulässigen Kommandos hängen vom BEREICH ab, jeder BEREICH kennt das KOMMANDO help. Auch das Kommando selbst (d.h. das erste Wort von KOMMANDO-mit-Parametern) darf man abkürzen, solange die Angabe eindeutig bleibt, jedoch gilt das nicht für eventuell folgende Parameter.

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 connections 

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):

  • Die Angabe „verbunden“ bedeutet, dass diese Schnittstelle in Gebrauch ist.

  • Weitere Über NetworkManager – und damit nmcli – grundsätzlich betreibbare Schnittstellen sind „nicht verbunden“.

  • Nicht betriebsfähige Schnittstellen erscheinen als „nicht verfügbar“ oder „nicht verwaltet“.

  • Die Angabe „nicht verwaltet“ (unmanaged) ist zu lesen als, „diese Schnittstelle wird nicht von NetworkManager verwaltet“; es kann aber im System ein weiteres Konfigurationsprogramm wie z.B. systemd-networkd geben, welches sich um diese Schnittstelle kümmert.

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.

  • nmcli monitor 

    Man startet diesen Befehl im Terminal[2][3] und wechselt dann in ein zweites Fenster mit einem weiteren Terminal. Wirkungen der im zweiten Terminal ausgeführten Befehle, sofern sie den Verbindungsstatus ändern, werden im ersten Terminal aktuell angezeigt. Man beendet den Monitor im ersten Fenster mit den Tasten Strg + C .

  • nmcli device 

    nmcli device status 

    Siehe: Status abfragen

  • nmcli device show eth0 

    nmcli -f common device show eth0 

    Standardauswahl der Eigenschaften der angegebenen Schnittstelle zeilenweise ausgeben. Wenn die Schnittstelle zu einer aktiven Verbindung gehört, sind das auch IP-Adressen und -Routen.

  • nmcli device show 

    Wie vorstehend, jedoch Daten aller bekannten Schnittstellen ausgeben.

  • nmcli -f general.device,general.nm-managed,general.autoconnect device show 

    Die mit der Option -f benannten Eigenschaften für alle Schnittstellen ausgeben. Konkret wird hier angezeigt, welche Schnittstellen vom NetworkManager überhaupt verwaltet und ggf. auch automatisch aktiviert werden.

  • nmcli device set eth0 managed on 

    nmcli device set eth0 managed off 

    Mit diesen Befehlen kann man die Verwaltung durch den NetworkManager für die angegebene Schnittstelle eth0 ein- und ausschalten.

  • nmcli device set eth0 autoconnect on 

    nmcli device set eth0 autoconnect off 

    Automatischen Verbindungsaufbau für die angegebene Schnittstelle eth0 aktivieren bzw. deaktivieren.

  • nmcli device wifi rescan 

    Nach WLAN-Netzwerken suchen. Dieser Befehl erzeugt in der Regel keine Ausgabe.

  • nmcli device wifi list 

    Alle beim letzten Suchlauf gefundenen WLAN-Netze auflisten.

  • nmcli device wifi list --rescan yes 

    Kombination der beiden vorstehenden Befehle.

  • nmcli device wifi help 

    Alle Unterkommandos von wifi anzeigen.

  • Weitere wichtige Kommandos für den Bereich device siehe:

  • Die folgenden Befehle verändern ein Verbindungsprofil, zu Details und Unterschieden siehe: Verbindungsprofil bearbeiten:

    nmcli device modify … 

    nmcli connection modify … 

    nmcli connection edit … 

  • nmcli connection 

    Siehe: Status abfragen

  • nmcli connection show PROFIL 

    Die Standardauswahl der Eigenschaften des Verbindungsprofils PROFIL zeilenweise anzeigen.

  • nmcli connection show 

    Wie vorstehend, jedoch für alle Verbindungsprofile.

  • Weitere wichtige Kommandos für den Bereich connection siehe:

  • nmcli connection help 

    Alle Kommandos für den Bereich connections anzeigen.

  • nmcli networking on 

    nmcli networking off 

    NetworkManager aufwecken oder einschläfern.

  • nmcli radio wifi on 

    nmcli radio wifi off 

    Die Unterstützung für Funknetzwerke ein- bzw. ausschalten.

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 … 

  • Beispiel für folgende Erläuterungen:

    nmcli connection add type ethernet con-name 91_APIPA 
  • TYPANGABE ist eine verpflichtende Angabe und steht für das Schlüsselwort des gewünschten Typs des Verbindungsprofils, beispielsweise ethernet, wifi oder gsm.

  • EIGENSCHAFT-Name-und-Wert kann fehlen oder beliebig oft verwendet werden. Jede Anwendung erfordert ein Paar aus dem Namen einer Eigenschaft und durch Leerzeichen getrennt dem Wert. Für den Namen kann ein Alias lt. folgender Tabelle genannt werden, sofern ein solches existiert. Im Beispiel wird die Eigenschaft con-name mit dem Wert 91-APIPA belegt.

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:

  • nmcli device modify eth0 EIGENSCHAFT NEUER-WERT 

    Dieser Befehl funktioniert nur, wenn der genannten Schnittstelle eth0 auch ein Verbindungsprofil zugeordnet wurde und ändert dann den Wert der angegebenen EIGENSCHAFT temporär bis zum Abbau der Verbindung; der neue Wert wird nicht im Profil eingetragen.

  • nmcli connection modify PROFIL EIGENSCHAFT NEUER-WERT 

    Dieser Befehl ändert dagegen den Wert permanent im Profil PROFIL und bei einem aktiven Verbindungsprofil wirkt sich das auch sofort auf die Verbindung aus.

  • nmcli connection edit PROFIL 

    startet den halb-grafischen interaktiven Editor für Verbindungsprofile. → NetworkManager/NetworkManager ohne GUI

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:

  • nmcli

  • nm-settings-nmcli

  • nmcli-examples

  • NetworkManager

Diese Revision wurde am 10. September 2024 10:28 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Server, Shell, System, Internet, Desktop, Netzwerk