Comment NetworkManager, networkd, netplan, ifupdown2 et iproute2 interagissent-ils exactement?

20

J'apprends la mise en réseau Linux sur ma station de travail Kubuntu 18.04, et je vois là que les deux NetworkManageret networkd-dispatcherfonctionnent:

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...

NetworkManagersemble être configuré pour gérer "tout" par netplan:

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

Je crois que tout netplanserait remis à networkds'il NetworkManagern'était pas installé.

Il y a aussi un tas de fichiers /etc/network/, et je ne sais pas ce qui les gère. De nombreux packages semblent utiliser ce répertoire:

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

Mes premières réflexions après une recherche sur Google sont les suivantes NetworkManageret networkdfonctionnent toutes les deux, mais netplangénèrent une configuration telle qu'une seule fait réellement quelque chose. Mais je ne sais pas comment je vérifierais cela, déterminerais la chaîne des opérations ou le configurerais pour convenir à mes plans néfastes pour dummy0.

Question: Comment exactement NetworkManager, networkd et netplan fonctionnent-ils ensemble? En d'autres termes, au démarrage de l'ordinateur, quels processus transmettent quoi à quels autres processus? Comment les outils de paquets comme net-tools, ifupdown2et iproute2et répertoires comme /etc/network/dans tout cela? Et enfin, comment puis-je comprendre cela moi-même et apprendre les détails en utilisant la ligne de commande?

Mise à jour: je ne cherche pas un aperçu de haut niveau. Je veux plutôt savoir comment ces composants interagissent, sont en conflit ou évitent les conflits au niveau du noyau ou similaire.

Oleg
la source

Réponses:

15

systemd-networkd lorsque ses configurations honorées activées dans /etc/systemd/network

Considérant que NetworkManagersuivra certaines règles automatiques comme il essaiera de se connecter à une connexion filaire s'il en trouve une.

Les deux sont activés et désactivés en tant que systemdservices et systemd utilisant udev crée les fichiers de périphérique pour les adaptateurs réseau. En général, vous ne devriez probablement pas avoir les deux activés en même temps, mais si vous le faites, vous devez faire attention à ce que leurs configurations n'entrent pas en conflit.

netplanavant que l'un des gestionnaires de réseau ne démarre, crée des configurations pour l'une ou l'autre en fonction de sa propre configuration. De cette façon, netplan est vraiment une abstraction de configuration et s'il utilise systemd-networkd ou NetworkManager fait partie de la configuration.

iproute2est un ensemble d'outils pour configurer les interfaces réseau sur la ligne de commande. Il inclut une configuration de lien similaire aux gestionnaires de réseau et à l'ancien ifconfig. Bien que net-tools, ipupdownet les ifupdown2configurations de réseau d'utilisation dans / etc / network / interfaces aux interfaces configure et Déconfigurer.

ifupdown ou ses autres versions peuvent être utilisées pour gérer les réseaux mais ce n'est pas automatique mais un service systemd peut être utilisé pour le démarrer au démarrage.

ifupdown2utilise des graphes de dépendances similaires à ceux utilisés systemdmais avec des interfaces réseau. De plus, il agit comme une abstraction à d'autres outils commeiproute2

jdwolf
la source
2
Merci pour la comparaison / contraste, mais je cherchais plus sur la façon dont ces composants interagissent les uns avec les autres, à un niveau beaucoup plus profond. Par exemple, que se passe- t-il exactement dans le noyau lorsque systemd et NetworkManager essaient de contrôler la même interface en même temps? Que font les outils iproute2 / ifupdown dans le noyau qui sont en conflit (ou évitent les conflits) avec networkd / NetworkManager? Quelles commandes puis-je utiliser pour voir quels outils ont fait quoi à quelles interfaces (au niveau udev / kernel)?
Oleg
Meilleure explication que j'ai vue dans la mesure où il existe une confusion générale avec de nombreuses explications affirmant que netplan est soit NetworkManager soit systemd-networkd, mais pas les deux. Certains liens auraient été utiles. Par exemple manpages.ubuntu.com/manpages/cosmic/man5/netplan.5.html
Craig Hicks
Après avoir lu ceci, je m'attends à trouver des fichiers de configuration dans /etc/systemd/networkmais dans mon Ubuntu 19.10 avec systemd-networkd activé et en cours d'exécution, ce répertoire est vide. Cependant, je trouve des fichiers dans /lib/systemd/network. Est-ce une nouvelle configuration? Voleur Ubuntu? Une erreur?
Stephen Boston
1
@StephenBoston C'est répondu dans unix.stackexchange.com/questions/206315/…
Timothy Gu