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