Wie genau interagieren NetworkManager, networkd, netplan, ifupdown2 und iproute2?

18

Ich lerne über Linux auf meinem Kubuntu 18.04 Workstation Vernetzung, und ich sehe es , dass beide NetworkManagerund networkd-dispatcherausgeführt werden :

oleg@eclectic:~$ sudo ps -ef | grep -i net
root        56     2  0 Oct11 ?        00:00:00 [netns]
root      1097     1  0 Oct11 ?        00:00:02 /usr/sbin/NetworkManager --no-daemon
root      1098     1  0 Oct11 ?        00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root      1250     1  0 Oct11 ?        00:00:02 /usr/sbin/inetd
root      1593  1097  0 Oct11 ?        00:00:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper...

NetworkManagerscheint so konfiguriert zu sein, dass es "alles" handhabt von netplan:

oleg@eclectic:~$ cat /etc/netplan/01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

Ich glaube, das netplanwürde alles übergeben, networkdwenn NetworkManagernicht installiert wäre.

Es gibt auch eine Reihe von Dateien in /etc/network/, und ich bin nicht sicher, was diese behandelt. Viele Pakete scheinen dieses Verzeichnis zu verwenden:

oleg@eclectic:~$ dpkg -S /etc/network
avahi-daemon, ifupdown2, wpasupplicant, openvpn, postfix, netbase, avahi-autoipd, wireless-tools, clamav-freshclam: /etc/network

Meine erste Gedanken nach einigen googeln sind , dass NetworkManagerund networkdbeide laufen, sondern netplanerzeugen Konfiguration , so dass man nur wirklich etwas tut. Aber ich weiß nicht, wie ich das überprüfen, die Kette der Operationen herausfinden oder es konfigurieren würde, um meinen schändlichen Plänen für Dummy0 zu entsprechen.

Frage: Wie genau arbeiten NetworkManager, networkd und netplan zusammen? Mit anderen Worten, wenn der Computer hochfährt, welche Prozesse übergeben was welchen anderen Prozessen? Wie fügen sich Tools aus Paketen wie net-tools, ifupdown2und iproute2und Verzeichnissen /etc/network/in all das ein? Und schließlich, wie kann ich das selbst herausfinden und die Details über die Befehlszeile lernen?

Update: Ich suche keine übergeordnete Übersicht. Ich möchte vielmehr wissen, wie diese Komponenten interagieren, Konflikte verursachen oder Konflikte auf Kernel-Ebene oder ähnlichem vermeiden.

Oleg
quelle

Antworten:

14

systemd-networkd Wenn aktiviert, werden Konfigurationen in berücksichtigt /etc/systemd/network

Dabei NetworkManagerwerden einige automatische Regeln befolgt, z. B. wird versucht, eine Verbindung zu einer Kabelverbindung herzustellen, wenn eine gefunden wird.

Beide sind als systemdDienste aktiviert und deaktiviert und systemd erstellt mit udev die Gerätedateien für die Netzwerkadapter. Im Allgemeinen sollten Sie wahrscheinlich nicht beide gleichzeitig aktivieren, aber wenn Sie dies tun, müssen Sie darauf achten, dass ihre Konfigurationen nicht in Konflikt geraten.

netplanvor dem Start eines der beiden Netzwerkmanager erstellt Konfigurationen für beide basierend auf seiner eigenen Konfiguration. Auf diese Weise ist netplan wirklich eine Konfigurationsabstraktion und ob es systemd-networkd verwendet oder NetworkManager Teil der Konfiguration ist.

iproute2ist ein Paket von Tools zum Konfigurieren von Netzwerkschnittstellen über die Befehlszeile. Es enthält eine Verbindungskonfiguration ähnlich der von Netzwerkmanagern und der alten ifconfig. Während net-tools, ipupdownund ifupdown2Verwendung Netzwerk - Konfigurationen in / etc / network / interfaces zu konfigurieren und dekonfiguriert Schnittstellen.

ifupdown oder seine anderen Versionen können verwendet werden, um Netzwerke zu verwalten, aber es ist nicht automatisch, sondern ein systemd-Dienst kann verwendet werden, um es beim Booten zu starten.

ifupdown2Verwendet Abhängigkeitsdiagramme ähnlich systemdwie bei Netzwerkschnittstellen. Weiterhin wirkt es als Abstraktion zu anderen Werkzeugen wieiproute2

jdwolf
quelle
1
Vielen Dank für den Vergleich / Kontrast, aber ich habe mehr darüber gesucht, wie diese Komponenten auf einer viel tieferen Ebene miteinander interagieren. Was genau passiert zum Beispiel im Kernel, wenn sowohl systemd als auch NetworkManager versuchen, dieselbe Schnittstelle zur gleichen Zeit zu steuern? Was machen die iproute2 / ifupdown-Tools im Kernel, die Konflikte mit networkd / NetworkManager verursachen (oder Konflikte vermeiden)? Mit welchen Befehlen kann ich sehen, welche Tools was mit welchen Schnittstellen gemacht haben (auf der Ebene udev / kernel)?
Oleg
Die beste Erklärung, die ich je gesehen habe, da es allgemeine Verwirrung mit vielen Erklärungen gibt, die behaupten, dass netplan entweder NetworkManager oder systemd- networkd ist , aber nicht beides. Einige Links wären hilfreich gewesen. ZB manpages.ubuntu.com/manpages/cosmic/man5/netplan.5.html
Craig Hicks
Nachdem ich dies gelesen habe, erwarte ich Konfigurationsdateien /etc/systemd/networkin meinem Ubuntu 19.10 zu finden, aber wenn systemd-networkd aktiviert ist und ausgeführt wird, ist dieses Verzeichnis leer. Ich finde jedoch Dateien in /lib/systemd/network. Ist das eine neue Konfiguration? Rogue Ubuntu? Ein Fehler?
Stephen Boston vor