web-dev-qa-db-fra.com

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

J'apprends la mise en réseau Linux sur ma station de travail Kubuntu 18.04 et je vois là que NetworkManager et networkd-dispatcher sont en train de courir:

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

NetworkManager semble ê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 netplan remettrait tout à networkd si NetworkManager n'était pas installé.

Il y a aussi un tas de fichiers dans /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 que NetworkManager et networkd sont tous les deux en cours d'exécution, mais netplan génère 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 des packages comme net-tools, ifupdown2, et iproute2 et des répertoires comme /etc/network/ rentre dans tout ça? 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 recherche pas un aperçu de haut niveau. Je veux plutôt savoir comment ces composants interagissent, entrent en conflit ou évitent les conflits au niveau du noyau ou similaire.

21
Oleg

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

Alors que NetworkManager suivra certaines règles automatiques comme s'il tentait de se connecter à une connexion filaire s'il en trouve une.

Les deux sont activés et désactivés en tant que services systemd 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.

netplan avant le démarrage de l'un des gestionnaires de réseau crée des configurations pour l'un 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.

iproute2 est 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. Tandis que net-tools, ipupdown et ifupdown2 utilisez les configurations réseau dans/etc/network/interfaces pour configurer et déconfigurer les interfaces.

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.

ifupdown2 utilise des graphiques de dépendances similaires à ce que fait systemd mais avec des interfaces réseau. De plus, il sert d'abstraction à d'autres outils comme iproute2

16
jdwolf

Je n'essaierai pas de répondre à toute votre question,
mais j'ai trouvé quelques éléments qui m'ont aidé à comprendre comment ces systèmes s'assemblent.
J'espère que cela aide quelqu'un, car cela m'a dérouté


1 - L'ancien fichier de configuration du réseau interfaces et ses commandes ifup & ifdown:

Le /etc/network/interfaces le fichier de configuration réseau semble être assez ancien, mais est toujours utilisé par ifup, ifdown et ifquery.

Celles-ci semblent être l'ancienne façon de faire monter et descendre les "interfaces" réseau (liens basés sur MAC) et les "connexions" (connexions basées sur IP).

man 8 ifup dit:

LA DESCRIPTION
Les commandes ifup et ifdown peuvent être utilisées pour configurer (ou, respectivement, déconfigurer) les interfaces réseau en fonction des définitions d'interface dans le fichier / etc/réseau/interfaces.

L'implication important est la suivante:

si une interface n'est pas définie dans les interfaces, alors ifup/ifdown ne gérera pas cette interface.


2 - Qu'en est-il de l'ancienne commande ifconfig?

Debian a pour moi le paquet de mise en réseau hérité nommé net-tools, qui inclut les amortis: arp, ifconfig, ipmaddr, iptunnel, iwconfig, nameif, netstat, route et vconfig commandes.

Vous voulez maintenant utiliser le iproute2 package et ip, iw, ss et ifrename commandes.


3 - Si ip peut faire monter ou descendre une interface, pourquoi ne pas l'utiliser plutôt que ifup et ifdown?

Quoi ifup/down le fait (via le package ifupdown ou peut-être aussi le Python réécriture dans ifupdown2), ce que ip ne fait pas, c'est d'exécuter des scripts hérités avant et après les changements de réseau. Remarque ce que dit ifup:

NOTES

Le programme ne configure pas directement les interfaces réseau; il exécute des utilitaires de bas niveau tels que ip pour faire son sale boulot.

VOIR AUSSI
interfaces (5), ip (8), ifconfig (8).

Il semble donc que ifup/ifdown ait été mis à niveau de l'utilisation du backend ifconfig déprécié à maintenant à l'aide du backend ip.


4 - Et NetworkManager?

De man 5 NetworkManager,

[IFUPDOWN]

Cette section contient des options spécifiques à ifupdown et n'a donc d'effet que lors de l'utilisation du plugin ifupdown.

géré

Si la valeur est true, les interfaces répertoriées dans/etc/network/interfaces sont gérées par NetworkManager. S'il est défini sur false, toute interface répertoriée dans/etc/network/interfaces sera ignorée par NetworkManager. N'oubliez pas que NetworkManager contrôle la route par défaut, donc parce que l'interface est ignorée, NetworkManager peut affecter la route par défaut à une autre interface.

Il n'est donc pas clair si NetworkManager peut également exécuter des scripts ifup/ifdown, mais ce qui est clair, c'est que NetworkManager peut rester à l'écart des interfaces utilisées par ifup/ifdown.


5 - systemd-networkd

Il semble que ce soit plus ancien que NetworkManager et qu'il soit toujours utilisé pour les serveurs câblés et lorsqu'un environnement GUI n'est pas disponible.

Mais il semble que pour les connexions sans fil, NetworkManager est le chemin à parcourir car il est plus difficile de configurer manuellement systemd-networkd.

Dans man 8 systemd-networkd ça dit,

systemd-networkd gérera les adresses réseau et les routes pour tout lien pour lequel il trouve un fichier .network avec une section [Match] appropriée, voir systemd.network (5) (périphériques réseau réels). Pour ces liens, il videra les adresses et les itinéraires réseau existants lors de la mise en place de l'appareil. Tous les liens ne correspondant à aucun des fichiers .network seront ignorés. Il est également possible de dire explicitement à systemd-networkd d'ignorer un lien en utilisant l'option Unmanaged = yes, voir systemd.network (5).

J'espère que tout va bien, mais sinon, faites-le moi savoir. Merci.

4
Elliptical view