Inhalt

GNU/Linux - NetworkManager CLI

Voraussetzungen
  • Eine GNU/Linux Installation, bzw. eine Linux Kommandozeile wie z.B. die GNU Bash.
  • Um eine sichere Systemumgebung zu gewährleisten, bin ich als regulärer Benutzer mit sudo Berechtigung angemeldet.

Folgende Festlegung gelten:

Zeilenanfang Bedeutung
# Wenn ein Kommando mit einem # beginnt, muss der folgende Linux-Befehl mit Root-Rechten, entweder direkt als Root-Benutzer oder mit dem Befehl sudo ausgeführt werden.
$ Bedeutet, dass der angegebene Linux-Befehle als regulärer, nicht privilegierter Benutzer ausgeführt werden kann.

Als Betriebssystem nutze ich in der Regel Fedora Workstation. Die gezeigten Befehle sollten aber unter allen gängigen, modernen Distribuionen mit der GNU Bash Shell funktionieren.

Der Netzwerk Manager auf der Kommandozeile “nmcli”

Es gibt unter den meisten “Mainstream Linux Distributionen” drei Möglichkeiten sich mit einem Netzwerk zu verbinden, bzw. dieses zu konfigurieren.

  • Der NetworkManager ist auf der grafischen Oberfläche im Tray und in den Systemeinstellungen zu finden.
  • Auf der Konsole gibt es den grafischen, menügeführten Netzwerkmanager nmtui.
  • Und es gibt den nmcli, welcher ein reiner kommandozeilen Netzwerkmanager darstellt und sich somit auch für Scripte eignet.

Ich denke, die meisten werden die grafische Oberfläche nutzen und damit auch gut klar kommen. Jeder, der sich ein bisschen mit Netzwerk und seinen Begrifflichkeiten auskennt, wird auch mit nmtui sehr gut klar kommen. Aus diesem Grund hier die Grundlagen zu meinem Favoriten nmcli für alle Anderen.

Konventionen bei “nmcli”

Der Netzwerkmanager nmcli wird als normaler Benutzer und nicht mit Administratorberechtigungen konfiguiert. Das bedeutet, dass das Kommando sudo nicht benötigt wird!

Des Weiteren kann man die Kommandos für nmcli in einer langen und einer kurzen Version schreiben. So wie unter dem Betriebssystem der Cisco-Geräte. In diesem Beispiel sind alle drei Befehle identisch:

1
2
3
$ nmcli connection show
$ nmcli con sh
$ nmcli c s

Es kann so lange gekürzt werden, wie die Befehle eindeutig sind.

Übersicht der Verbindungen

Als erstes gucke ich immer, wie der Zustand meines Netzwerkes ist. Dafür reicht einfaches nmcli, ohne weitere Parameter. Hier ein Beispiel:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ nmcli
wlp0s20f3: verbunden zu HotSpot
        "Intel Cannon Point-LP CNVi"
        wifi (iwlwifi), 24:4D:5B:78:EF:G6, hw, mtu 1500
        ip4-Vorgabe
        inet4 10.10.10.131/24
        route4 0.0.0.0/0
        route4 10.10.10.0/24
        route4 169.254.0.0/16
        inet6 fe80::414d:7306:a7f7:5dd3/64
        route6 fe80::/64

enp0s31f6: nicht verfügbar
        "Intel Ethernet"
        ethernet (e1000e), C4:85:A3:F0:13:9F, hw, mtu 1500

lo: nicht verwaltet
        "lo"
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

DNS configuration:
        servers: 10.10.10.254
        domains: hotspot.local
        interface: wlp0s20f3

Hier kann man gut sehen, dass meine Hardware erkannt wurde und schon eine bestehede Verbindung aktiv ist. In den meisten Terminalprogrammen wird die aktive Verbindung auch noch in grüner Schrift dargestellt.

Netzwerkhardware anzeigen

Falls man nicht das Glück hat, dass die Verbindunge schon bestehen, fängt am besten bei der Hardware an. Diese wird folgendermaßen aufgelistet.

1
2
3
4
5
$ nmcli device status
	DEVICE             TYPE      STATE            CONNECTION 
	wlp0s20f3          wifi      verbunden        HotSpot  
	enp0s31f6          ethernet  nicht verfügbar  --         
	lo                 loopback  nicht verwaltet  -- 

Das Device wlp0s20f3 ist die Wlan-Karte und enp0s31f6 die Ethernet-Karte im System. Wenn diese den Status nicht verfügbar hat, bedeutet das in der Regel, dass kein Ethernetkabel angeschlossen ist.

Für den Fall, dass in der Liste kein Gerät mit den Typ ethernet vorhanden ist, wurde die Netzwerk-Hardware nicht erkannt.

Netzwerkverbindungen anzeigen

Wenn man ein Device konfiguriert, dann erhält man eine Verbindung. Diese kann über einen selbst gewählten Namen gespeichert werden. Es verhält sich ähnlich, wie mit Wifi-Netzwerken, wo man zu jedem Netzwerk eine eigene Verbindung speichert.

Das heißt, dass ich ein Gerät, egal ob Wifi oder Ethernet, mit mehreren Verbindungen konfigurieren kann und diese Konfiguration dann wahlweise aktiviere oder deaktiviere.

Erstmal die vorhandenen Verbindungen anzeigen lassen:

1
2
3
4
$ nmcli con show
NAME                         UUID                                  TYPE      DEVICE    
HotSpot                      bfa54609-e50b-45ea-a4b0-f910e49ed7ca  wifi      wlp0s20f3 
Kabelgebundene Verbindung 1  de1a14a4-d391-378a-9916-6ae5aa5da242  ethernet  --

Die Verbindung HotSpot ist in diesem Beispiel auch in grüner Schrift und da ihr ein Device zugeordnet ist, bedeutet dass das sie aktiv ist.

Also die von mir vorkonfigurierte Verbindung HotSpot ist für das Device wlp0s20f3 konfiguriert worden und aktiv.

Wenn der Gerätename mit enp oder eth beginnt, dann handelt es sich um eine Hardware für Ethernet und bei Gerätenamen mit wlp oder wifi um WLAN-Hardware.

Netzwerkverbindung einrichten

Um eine Verbindung zu konfigurieren, muss sie erstmal angelegt werden.

Eine neue Ethernet-Verbindung anlegen

Der Name, den wir für unsere Verbindung benutzen, darf noch nicht vergeben sein, soll heißen, dass er eindeutig sein muss. Wie so oft unter Linux, sollte man möglichst keine Großbuchstaben und Leerzeichen nutzen, damit die Befehle leichter zu tippen sind. Andernfalls muss man diese immer case-sensitiv schreiben, bzw. im Fall von Leerzeichen Hochkommatas nutzen.

Um zum Beispiel eine Ethernet-Verbindung mit der IP-Adresse 192.168.100.44/24 (/24 bedeutet die Subnetmask 255.255.255.0), einem Default-Gateway und DNS-Adresse 192.168.100.254 mit “nmcli” einzurichten, kann man die folgenden Schritte ausführen:

Eine neue Ethernet-Verbindung mit dem Namen “eth0” anlegen.

1
$ nmcli con add con-name <Verbindungsname> ifname <Gerätename> type ethernet

Also:

1
$ nmcli con add con-name eth0 ifname eth0 type ethernet

IP-Adresse, Default-Gateway und DNS Adresse der Verbindung konfigurieren.

1
2
3
4
5
$ nmcli con modify eth0 ipv4.addresses 192.168.100.44/24
$ nmcli con modify eth0 ipv4.gateway 192.168.100.254
$ nmcli con modify eth0 ipv4.dns 192.168.100.254

$ nmcli con up eth0

Natürlich können die Befehle auch in einer Zeile kombiniert werden.

Zusätzliche Route in ein anderes Netz

Braucht man dauerhaft eine zusätzlichen Route in das Netzwerk 10.0.0.0/24 über die Adresse 192.168.100.95, dann geht das mit dem Befehl:

1
2
$ nmcli con mod <Verbindungsname> +ipv4.routes "<Ziel-Netz>/<Netzwerkmaske> <Gateway-IP>"
$ nmcli con mod eth0 +ipv4.routes "10.0.0.0/24 192.168.100.95"

Ein zusätzliche Route entfernen

Um eine Konfiguration an der Verbindung wieder zu entferen, setzt man einfach ein “-” vor den Schalter.

1
$ nmcli con mod <Verbindungsname> -ipv4.routes "<Ziel-Netz>/<Netzwerkmaske> <Gateway-IP>"

Eine WIFI-Netzwerkverbindung anlegen

Zuerst muss überprüft werden, ob das System einen WLAN-Adapter installiert hat.

1
$ nmcli device

Liste der verfügbaren WLAN-Netzwerke anzeigen:

1
$ nmcli device wifi list

Die Verbindung zum Netzwerk herstellen:

1
$ nmcli device wifi connect 'SSID' password 'PASSWORD'

Überprüfen mit:

1
$ nmcli connection show

Der folgende Befehl legt auch eine WLAN-Verbindung an, das Passwort wird aber interaktiv abgefragt und erscheint auf diese Weise nicht in der Command-History.

1
2
$ nmcli con add con-name 'Wlan-Verbindung' ifname wlp2s0 type wifi ssid 'OnAir'
$ nmcli dev wifi connect 'OnAir' --ask