Modernisierung des NetworkManager ab Fedora 36, RHEL 9 und anderen Distros

Eine der Änderungen in Fedora Linux 36 und anderen Distros die nur auf neueste Technologien setzen ist, dass neue Installationen nicht mehr die ifcfg-Dateien zur Netzwerkkonfiguration unterstützen. Das bedeutet eine große Umstellung für Sysadmins in Zukunft.

In den guten alten Zeiten war es einfach, einen Linux-Rechner mit einem Netzwerk zu verbinden. Für jede der Schnittstellenkarten, die mit einem Netzwerk verbunden waren, legte der Systemadministrator eine Konfigurationsdatei im Verzeichnis /etc ab. Diese Konfigurationsdatei beschreibt die Adressierungskonfiguration für ein bestimmtes Netzwerk.

Unter Fedora Linux bestand die Konfigurationsdatei aus einer Text-Datei wie im Beispiel:

$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYP=Ethernet
GERÄT=eth0
BOOTPROTO=dhcp

Diese wurde beim Start eingelesen und die Konfiguration übernommen.

2004 gab es schon die ersten Veränderungen. Wlan wurde allgegenwärtig, Notebooks konnten sich schnell mit neuen Netzwerken verbinden und USB-Netzwerk-Adapter ermöglichten es, dass kabelgebundene Netzwerkadapter kommen und gehen konnten, während das System in Betrieb war. Die Netzwerkkonfiguration musste damit dynamischer als je zuvor werden, so dass die bestehenden Netzwerkkonfigurationswerkzeuge in einzelnen Dateien unpraktisch wurden. Hier kam der NetworkManager ins spiel.

RHEL-basierte Linux-Systeme verwenden den NetworkManager, der dieselben Dateien erstellt und verwaltet wie zuvor. Der NetworkManager war von Anfang an darauf ausgelegt, mit den bestehenden Konfigurationsformaten zu arbeiten, ohne dass sich Sysadmins und Benutzer groß umändern mussten. Auch gibt es Plugins, die nahtlos zwischen dem internen Konfigurationsmodell von NetworkManager und dem nativen Format der jeweiligen Distribution konvertieren können.

Ifcfg-Dateien

Der Legacy-Netzwerkdienst, der jetzt Teil des Pakets network-scripts ist, definierte ursprünglich das ifcfg-Dateiformat. Mit dem Paket wird eine Datei namens sysconfig.txt mitgeliefert, die das Format hilfreich dokumentiert.

Als der NetworkManager immer beliebter wurde, musste er oft Konfigurationen ausdrücken, die vom herkömmlichen Netzwerkdienst nicht unterstützt wurden. Da es in der Natur der Sache liegt, Dinge mit Shell-Skripten zu konfigurieren, ist das Hinzufügen neuer Einstellungen keine große Sache. Die unbekannten Einstellungen werden in der Regel einfach ignoriert.

Im Allgemeinen bemüht sich der NetworkManager, ifcfg-Dateien zu schreiben, die gut mit dem Legacy-Netzwerkdienst funktionieren. Doch heutzutage unterstützt der NetworkManager weitaus mehr Arten von Netzwerkverbindungen, als der alte Netzwerkdienst konfigurieren kann. Ein neues Format wird nun verwendet, um das auszudrücken, was das alte Format nicht kann. Dazu gehören auch VPN-Verbindungen.

Schlüsseldateien

Das neue Format ähnelte stark dem ursprünglichen Konfigurationsmodell des NetworkManagers:

$ cat /etc/NetworkManager/system-connections/vpn.ovpn
[connection]
id=RedHat9-openvpn
uuid=f20c0f69-6198-40c0-a074-98f9de1c09e6
type=vpn

[vpn]
service-type=org.freedesktop.NetworkManager.openvpn
connection-type=geheim
password-flags=3
username=rene
remote=ovpn.remefuerst.eu
cipher=AES-512-CBC
reneg-seconds=0
port=443
ca=/etc/openvpn/ovpnca.pem
tls-remote=ovpn.renefuerst.eu

[ipv6]
method=auto

[ipv4]
method=auto
never-default=true

Das eigentliche Format sollte jedem, der mit Linux-Systemen vertraut ist, sofort bekannt sein.

Der Hauptvorteil dieses Formats besteht darin, dass es der NetworkManager, wie die Netzwerkkonfiguration auszudrücken ist, sehr ähnlich ist und sowohl intern als auch in der D-Bus-API verwendet wird. Durch die geführte CLI des NetworkManagers geschehen weniger Konfigurations- und Tippfehler.

Es gibt eigentlich nichts, was das Schlüsseldateien-Format nicht ausdrücken kann, wie die ifcfg-Dateien. Es kann einfache kabelgebundene Verbindungen genauso gut ausdrücken wie WLANs, VPNs oder Modems.

Umstellung auf Schlüsseldateien

Der Legacy-Netzwerkdienst hat uns viele Jahre lang gute Dienste geleistet. Fedora hat ihn vor einigen Jahren abgeschafft und ohne ihn gibt es kaum noch einen Grund, die ifcfg-Dateien zu verwenden. Zumindest nicht für neue Konfigurationen. Fedora unterstützt zwar immer noch die ifcfg-Dateien, schreibt aber schon seit geraumer Zeit standardmäßig Schlüsseldateien.

Ab 2022 mit Fedora 36 wird die ifcfg-Unterstützung in neuen Installationen nicht mehr vorhanden sein. Falls du noch ifcfg-Dateien verwendest, wird bei bestehenden Systemen bei Upgrades beibehalten. Es besteht jedoch auch einfach die Möglichkeit die Konfiguration in die Schlüsseldateien zu konvertieren.:

$ nmcli -f TYPE,FILENAME,NAME conn
TYP DATEINAME NAME
ethernet  /etc/sysconfig/network-scripts/ifcfg-eth0  System eth0

Dieses Beispiel zeigt eine LAN-Verbindung, die eine ifcfg-Datei verwendet. Doch wie können wir diese in Schlüsseldateien umwandeln?

Die CLI des NetworkManagers, nmcli hat einen neuen Befehl connection migrate erhalten, mit dem das von einem Verbindungsprofil verwendete Konfigurations-Backend geändert werden kann.

Es ist ratsam, ein Backup der /etc/sysconfig/network-scripts/ifcfg-* Dateien zu erstellen, falls etwas schief geht. Sobald du das Backup hast, kannst du versuchen, eine einzelne Verbindung auf eine Schlüsseldatei zu migrieren:

$ nmcli connection migrate eth0
Verbindung 'eth0' (5fb06bd0-0bb0-7ffb-45f1-d6edd65f1e01) erfolgreich migriert.

Überprüfe nun ob die eth0 migration funktioniert hat.

$ nmcli -f TYPE,FILENAME,NAME conn
TYP DATEINAME NAME
ethernet /etc/NetworkManager/system-connections/eth0.nmc eth0

Wie du siehst ist die Konfigurationsdatei jetzt auch in einen neuen Ordner gewandert, direkt in den NetworkManager.

Wenn dein System keine ifcfg-Dateien mehr hat, ist das Konfigurations-Backend, das sie unterstützt, nicht mehr von Nutzen und du kannst es entfernen:

dnf remove NetworkManager-initscripts-ifcfg-rh

Dein System sollte jetzt genauso wie vorher funktionieren.

Fazit

Wer sich einmal mit dem NetworkManager und der nmcli bzw. nmtui vertraut gemacht hat, braucht sich nicht mehr an die jeweilige Distribution gewöhnen. Es war schon immer ein Murks sich unterschiedliche Pfade zu Ordnern zu merken, wo die jeweilige Distribution ihre Konfigurationen abgelegt hat. Der NetworkManager nimmt einem dabei viel Arbeit ab und hilft dabei Konfigurationsfehler und Tippfehler zu vermeiden.

Quelle

https://www.redhat.com/de/blog/rhel-9-networking-say-goodbye-ifcfg-files-and-hello-keyfiles