ADMIN
2022
11
2022-10-27T12:00:00
Software-definierte Infrastrukturen
PRAXIS
066
Open-Source-Tipp
Netzwerkmanagement
NetworkManager
Neues im NetworkManager
Die passende Einstellung
von Thorsten Scherf
Veröffentlicht in Ausgabe 11/2022 - PRAXIS
Der NetworkManager ist auf Linux-Systemen der De-facto-Standard, wenn es um die Konfiguration des Netzwerkstacks geht. Die aktuelle Version der Software bringt jedoch einige Änderungen mit sich, die jeder Linux-Administrator kennen sollte. Der Open-Source-Tipp in diesem Monat zeigt, welche Anpassungen an der Konfiguration notwendig sind, damit das Netzwerk auch in Zukunft noch reibungslos funktioniert.

Die allermeisten Linux-Distributionen setzen den NetworkManager [1] als Standardtool zur Konfiguration des Netzwerk-Stacks ein. Auch wenn mit systemd-networkd [2] seit einiger Zeit bereits eine beliebte Alternative existiert, schätzen viele Administratoren doch die Flexibilität, die der NetworkManager mit sich bringt. Gerade beim Einsatz auf Notebooks und dem Wechsel zwischen unterschiedlichen WLANs überzeugt das Tool durch seinen Komfort. Neben einem grafischen Werkzeug inklusive einem Applet für den Desktop besteht natürlich auch die Möglichkeit, den Dienst komplett aus der Shell heraus zu konfigurieren. Diese Funktion erlaubt es auch, das komplette Setup der Netzwerkumgebung im Serverumfeld zu automatisieren.
ifcfg-Dateien
Seit jeher erfolgt die Konfiguration des NetworkManagers über sogenannte ifcfg-Dateien. Diese enthalten einfache Anweisungen zur Konfiguration eines Netzwerkgeräts oder aber auch komplexere Profile für bestimmte Netzwerkverbindungen. Bei den meisten Linux-Distributionen befinden sich diese Dateien im Verzeichnis "/etc/sysconfig/network-scripts/" oder "/etc/network/interfaces". Letztendlich entscheidet das eingesetzte Plug-in darüber, auf welche Dateien der NetworkManager zurückgreift. Doch dazu später mehr. Wer sich unsicher ist, kann den genauen Pfad der Konfigurationsdateien mit dem folgenden Befehl in Erfahrung bringen:
nmcli -f TYPE,FILENAME,NAME conn
TYPE wifi
FILENAME /etc/sysconfig/network-scripts/ifcfg-GrandHotel_Guest
NAME GrandHotel_Guest
Listing 1 zeigt ein triviales Beispiel, um die Ethernet-Karte mit dem Namen "enp0s31f6" als DHCP-Client zu konfigurieren, Listing 2 hingegen zeigt ein komplettes Profil für eine WLAN-Verbindung, die für die Netzwerkarte "wlp0s20f3" eingerichtet wurde.
Die allermeisten Linux-Distributionen setzen den NetworkManager [1] als Standardtool zur Konfiguration des Netzwerk-Stacks ein. Auch wenn mit systemd-networkd [2] seit einiger Zeit bereits eine beliebte Alternative existiert, schätzen viele Administratoren doch die Flexibilität, die der NetworkManager mit sich bringt. Gerade beim Einsatz auf Notebooks und dem Wechsel zwischen unterschiedlichen WLANs überzeugt das Tool durch seinen Komfort. Neben einem grafischen Werkzeug inklusive einem Applet für den Desktop besteht natürlich auch die Möglichkeit, den Dienst komplett aus der Shell heraus zu konfigurieren. Diese Funktion erlaubt es auch, das komplette Setup der Netzwerkumgebung im Serverumfeld zu automatisieren.
ifcfg-Dateien
Seit jeher erfolgt die Konfiguration des NetworkManagers über sogenannte ifcfg-Dateien. Diese enthalten einfache Anweisungen zur Konfiguration eines Netzwerkgeräts oder aber auch komplexere Profile für bestimmte Netzwerkverbindungen. Bei den meisten Linux-Distributionen befinden sich diese Dateien im Verzeichnis "/etc/sysconfig/network-scripts/" oder "/etc/network/interfaces". Letztendlich entscheidet das eingesetzte Plug-in darüber, auf welche Dateien der NetworkManager zurückgreift. Doch dazu später mehr. Wer sich unsicher ist, kann den genauen Pfad der Konfigurationsdateien mit dem folgenden Befehl in Erfahrung bringen:
nmcli -f TYPE,FILENAME,NAME conn
TYPE wifi
FILENAME /etc/sysconfig/network-scripts/ifcfg-GrandHotel_Guest
NAME GrandHotel_Guest
Listing 1 zeigt ein triviales Beispiel, um die Ethernet-Karte mit dem Namen "enp0s31f6" als DHCP-Client zu konfigurieren, Listing 2 hingegen zeigt ein komplettes Profil für eine WLAN-Verbindung, die für die Netzwerkarte "wlp0s20f3" eingerichtet wurde.
Die einzelnen Konfigurationsoptionen sind in der Datei "/usr/share/doc/init-scripts/sysconfig.txt" oder der Hilfedatei "nm-settings-ifcfg-rh" zu finden.
Listing 1: Ethernet-Karte ifcfg-enp0s31f6
TYPE=Ethernet
DEVICE=enp0s31f6
BOOTPROTO=dhcp
Listing 2: WLAN-Profil ifcfg-GrandHotel_Guest
ESSID=GrandHotel_Guest
MODE=Managed
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
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=GrandHotel_Guest
UUID=4b0753b1-8994-4ca8-b068-23d5e0f79ebf
DEVICE=wlp0s20f3
ONBOOT=yes
USERS=tscherf
NetworkManager Plug-ins
Nun unterstützt der NetworkManager unterschiedliche Formate zur Konfiguration der Netzwerkkarten und der Verbindungsprofile. Während die ifcfg-Dateien lediglich einfache Key/Value-Paare enthalten, sorgt das keyfile-Plug-in dafür, dass auch Dateien im INI-Format zum Einsatz kommen können. Diese enthalten ebenfalls Key/Value-Paare, jedoch sind diese bestimmten Sektionen zugeordnet. Eine Übersicht der verfügbaren Sektionen und der darin erlaubten Anweisungen finden Sie in der Hilfeseite zu nm-settings sowie zum nm-settings-keyfile.
Welche Plug-ins in der aktuellen Konfiguration der Software verwendet werden, stellen Sie leicht mit dem folgenden Befehl fest:
NetworkManager --print-config
[main]
plugins=keyfile,ifcfg-rh
[...]
Im diesem Beispiel verwendet der NetworkManager also sowohl das ifcfg-rh- als auch das keyfile-Plug-in. Die systemweiten Keyfiles liegen im Verzeichnis "/etc/NetworkManager/system-connec-tions/", allerdings kann der Speicherort auch abweichen. Mit dem "nmcli"-Befehl erhalten Sie erneut eine Übersicht der Konfigurationsdateien und wo genau sich diese befinden (Listing 3).
Listing 3: Konfigurationen anzeigen
nmcli -f TYPE,FILENAME,NAME conn
TYPE FILENAME NAME
vpn /etc/NetworkManager/system-connections/HOME-VPN.ovpn HOME-VPN
wifi /etc/NetworkManager/system-connections/HOME-Office.nmconnection HOME-Office
ethernet /run/NetworkManager/system-connections/enp0s31f6.nmconnection enp0s31f6
Legacy-Plug-in ifcfg-rh fliegt raus
Grundsätzlich ist es in Ordnung, mehrere Plug-ins parallel zu nutzen. Dies war bisher auch immer der Fall. Konkret heißt dies, dass für ein einzelnes Verbindungsprofil sowohl eine Konfiguration im ifcfg- als auch im keyfile-Format erzeugt wird. Im Fall einer manuellen Änderung an lediglich einer der beiden Dateien wird das keyfile-Format jedoch bevorzugt.
Seit Version 1.38 setzt der NetworkManager das ifcfg-rh-Plug-in standardmäßig nicht mehr ein. Dies bedeutet, dass sich Konfigurationen, die lediglich im Verzeichnis "/etc/sysconfig/network-scripts/" vorhanden sind, mit den nativen NetworkManager-Tools wie nmcli, gnome-control-center oder dem Applet weder lesen noch verändern lassen. Gleiches gilt natürlich auch für Software, die auf die NetworkManager-API zugreift. Führen Sie also beispielsweise ein Upgrade auf Fedora 36 durch und haben einige Konfigurationsdateien lediglich im alten ifcfg-Format vorliegen, bleiben diese bei einem Upgrade zwar erhalten, werden aber auch nicht weiter verwendet.
Was bedeutet das nun konkret? Sollten Sie über Konfigurationsdateien verfügen, die lediglich im Verzeichnis "/etc/sysconfig/network-scripts/" vorhanden sind, nicht jedoch in "/etc/NetworkManager/ system-connections/", müssen Sie entweder das Plug-in ifcfg-rh wieder manuell aktivieren oder stattdessen die ifcfg-Dateien in das keyfile-Format umwandeln. Da der Einsatz des keyfile-Formats wesentlich eleganter ist, sollten Sie dieses tatsächlich auch bevorzugen und somit ältere Dateien, die lediglich im ifcfg-Format vorliegen, migrieren. Dies erledigen Sie ganz einfach für sämtliche Dateien mit dem folgenden Befehl:
nmcli connection migrate
Möchten Sie lediglich eine bestimmte Datei migrieren, hängen Sie einfach den Namen oder die UUID des Profils an das Kommando an:
nmcli conn migrate GrandHotel_Guest
Connection 'GrandHotel_Guest' (4b0753b1-8994-4ca8-b068-23d5e0f79ebf) successfully migrated.
nmcli -f TYPE,FILENAME,NAME conn | grep GrandHotel_Guest
wifi /etc/NetworkManager/system-connections/GrandHotel_Guest.nmconnection GrandHotel_Guest
Wechseln zwischen Plug-in-Formaten
Solange der NetworkManager grundsätzlich noch das ifcfg-Format unterstützt, können Sie die Konfigurationen natürlich auch wieder in dieses Format zurücktransferieren, sollte hierfür einmal die Notwendigkeit bestehen:
nmcli conn migrate --plugin ifcfg-rh GrandHotel_Guest
nmcli -f TYPE,FILENAME,NAME conn | grep GrandHotel_Guest
wifi /etc/sysconfig/network-scripts/ifcfg-GrandHotel_Guest GrandHotel_Guest
Um die Konfiguruationsdateien mithilfe von nmcli anzupassen, lohnt sich ein Blick in die Hilfeseite zu nmcli-examples. Dort finden Sie viele praktische Beispiele dazu, wie Sie die einzelnen Sektionen und die darin enthalten Anweisungen an Ihre eigenen Bedürfnisse anpassen können.
Fazit
In aktuellen Versionen setzt der NetworkManager standardmäßig nur noch auf das keyfile-Format zur Konfiguration von Netzwerkkarten und Verbindungsprofilen. Administratoren, die auf Ihren Systemen noch auf das alte ifcfg-Format setzen, sollten die Konfigurationsdateien im Idealfall in eine keyfile-Version transferieren. Solle dies aus irgendeinem Grund nicht gewünscht sein, besteht jedoch die Möglichkeit, auch weiterhin ifcfg zu verwenden. In diesem Fall müssen Sie jedoch das ifcfg-rh-Plug-in manuell zur NetworkManager-Konfiguration hinzufügen.
(dr)