Network-Manager

(in Arbeit)

Datum: 16.05.2021

ZIEL: Komfortable Verwaltung der Netzwerkschnittstellen, besonders bei wechselnden Umgebungen.

Installation, Erkundung

Je nach Distribution ist die Installation schnell ausgeführt.

Unter Debian/Ubuntu lautet das Paket network-manager. Wer einen Desktop nutzt, braucht darüberhinaus das grafische Systray-Programm nm-applet, was sich im Paket network-manager-gnome befindet. Für KDE Plasma gibt es es separates Widget im Paket plasma-nm. Die Daemon-Komponente wird wie üblich automatisch an den Start gebracht, der Prozess wie auch die systemd-Unit heißen „NetworkManager“.

Unter RedHat/Rocky-Linux ist der Network-Manager sogar zum bevorzugten Tool für die Netzwerkkonfiguration geworden und demnach bereits vorinstalliert. Aber er aktiviert sie nicht ohne zutun. Für die erste Karte mit der Schnittstellenbezeichnung „enp0s3“ wird zwar eine gleichnamige Connection erzeugt, sie erhält aber nach einem Neustart des Systems nicht wieder den aktiven Zustand:

root@rocky ~]# nmcli con

enp0s3  ed7f4e88-7d03-49ed-bacf-ac5068132a65  ethernet  --

[root@rocky ~]# nmcli con up enp0s3
Verbindung wurde erfolgreich aktiviert (aktiver D-Bus-Pfad: /org/freedesktop/NetworkManager/ActiveConnection/1)
[root@rocky ~]#
[root@rocky ~]# nmcli con

enp0s3  ed7f4e88-7d03-49ed-bacf-ac5068132a65  ethernet  enp0s3     ## Diese Zeile wird jetzt grün dargestellt!

[root@rocky ~]#

Zum automatischen Wiederverbinden siehe die Eigenschaft „autoconnect“ unter wiki.ubuntuusers.de. Die Kommandozeile

nmcli con show enp0s3 | grep autoconnect

verrät uns, dass der Wert nicht gesetzt ist („nein“). Mittels der Zeile

nmcli con modify enp0s3 connection.autoconnect yes

ändern wir das, wobei die Karte zugleich aktiviert wird und eine IP-Adresse via DHCP erhält. Bei dem Aktivieren von „autoconnect“ wird die Datei /etc/sysconfig/network-scripts/ifcfg-enp0s3 neu generiert, man beachte die letzte Zeile, die sich von ONBOOT=no auf ONBOOT=yes geändert hat:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=ed7f4e88-7d03-49ed-bacf-ac5068132a65
DEVICE=enp0s3
ONBOOT=yes

Also ist doch noch eine wohlbekannte Konfigurationsdatei ifcfg-enp0s3 vorhanden, allerdings wird sie vom NetworkManager verwaltet und sollte nicht mehr per Hand editiert werden!

Konfiguration

Neben den oben genannten grafischen Systray-Tools wie nm-applet gibt es ein pseudografisches Werkzeug namens nmtui und eins für die Kommandozeile nmcli, was wir bereits benutzt haben. Wir wollen uns vor allem mit letzterem beschäftigen und mit den Konfigurationsdateien unterhalb von /etc/NetworkManager/.

Kommandozeilenwerkzeug „nmcli“

Standardmäßig wird eine DHCP-basierte Grundkonfiguration für kabelgebundene Netzwerkkarten angeboten, die alles automatisch einrichtet.

Möchte man eine einfache, statische IP-Konfiguration vornehmen, kann eine solche Zeile wie folgt aussehen:

nmcli con add con-name nic1-static-lan ifname enp0s3 type ethernet ip4 192.168.2.212/24

Danach ist kein manuelles nmcli con up nic1-static-lan erforderlich, wenn man sowieso vor hat, das System neu zu starten. Die neue, händisch angelegte Verbindung hat Vorrang und wird beim Booten automatisch aktiviert. Zur Kontrolle bitte nmcli dev und nmcli con verwenden.

Sollen darüberhinaus auch Gateway und Nameserver konfiguriert werden, wird die Zeile etwas länger - daher ist sie hier mit Umbrüchen dargestellt (Auf den Backslash muss direkt das CR/Enter-Zeichen folgen!):

nmcli con add con-name nic1-static-HOME ifname enp0s3 \
    type ethernet ip4 192.168.5.251/24 \
    gw4 192.168.5.254 \
    ipv4.dns "192.168.2.1 8.8.8.8"

Zur Kontrolle können nun die hierbei erzeugten Profildateien unter /etc/NetworkManager/system-connections/ inspiziert werden.

Weitere Anwendungsbeispiele

  • Nameserver ändern, der Name der Connection lautet hier genauso wie die Schnittstelle, nämlich „eth0“:

    nmcli con modify eth0 ipv4.dns "194.25.2.129 8.8.8.8"
    nmcli con down eth0
    nmcli con up eth0
    

    Hinweis: Die /etc/resolv.conf wird häufig vom NetworkManager verwaltet und darf in dem Falle nicht direkt bearbeitet werden, die Einstellungen würden verloren gehen! Dann einfach nmcli con modify ... verwenden.

  • Löschen einer Connection:

    nmcli con delete nic1-static-lan
    
  • Eine Connection namens ‚nic2-auto-HOME‘ mit der Netzwerkkarte ‚enp0s8‘ einrichten, die DHCP nutzt:

    nmcli con add con-name nic2-auto-HOME type ethernet ifname enp0s8 ipv4.method auto
    
  • Eine Connection zu einem WLAN herstellen:

    nmcli radio
    nmcli device
    nmcli device wifi list
    nmcli device wifi rescan
    nmcli device wifi connect myWiFiNetwork --ask
    
    # Alternativ mit direkter Passwort-Übergabe:
    nmcli device wifi connect myWiFiNetwork password mySecret0815Key
    

Siehe dazu auch

Konfigurationsdateien

Die Hauptkonfigurationsdatei ist die /etc/NetworkManager/NetworkManager.conf, sie beinhaltet globale Voreinstellungen.

Per Default wird bei dynamischer Zuweisung einer IP-Adresse dem Linux-System ein neuer, generierter Hostname zugewiesen, womit aber das X-Window-System bei Arch/Artix Linux seine Probleme hat und nach Adressänderungen meldet, dass keine DISPLAY-Variable gesetzt sei! Um das zu beheben, fügen wir eine Zeile unterhalb [main] an, so dass die Datei schließlich so aussieht:

# Configuration file for NetworkManager.
# See "man 5 NetworkManager.conf" for details.
[main]
hostname-mode=none

Die Konfigurationsdateien der Verbindungsprofile liegen unter /etc/NetworkManager/system-connections/. Eine solche Datei kann z.B. myWiFiNetwork.nmconnection heißen und folgenden Inhalt haben:

[connection]
id=myWiFiNetwork
uuid=8793554f-2058-4a52-b842-656ebe2240e6
type=wifi
interface-name=wlan0
permissions=user:tux:;
timestamp=1614116352

[wifi]
mac-address-blacklist=
mode=infrastructure
seen-bssids=2F:31:A8:31:2B:E7;2C:81:DA:91:BC:C9;
ssid=myWiFiNetwork

[wifi-security]
auth-alg=open
key-mgmt=wpa-psk
psk=mySecret0815Key

[ipv4]
dhcp-hostname=artix
dns-search=
method=auto

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto

[proxy]