In che modo interagiscono esattamente NetworkManager, networkd, netplan, ifupdown2 e iproute2?


20

Sto imparando a conoscere le reti Linux sulla mia workstation Kubuntu 18.04, e vedo lì che entrambe NetworkManagere networkd-dispatchersono in esecuzione:

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

NetworkManagersembra essere configurato per gestire "tutto" da netplan:

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

Credo che se non fosse installato, netplanlascerebbe tutto a posto .networkdNetworkManager

Ci sono anche un sacco di file in /etc/network/, e non sono sicuro di cosa li stia gestendo. Molti pacchetti sembrano usare questa directory:

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

I miei pensieri iniziali dopo alcuni Googling sono quelli NetworkManagere networkdsono entrambi in esecuzione, ma netplangenera una configurazione tale che solo uno sta effettivamente facendo qualcosa. Ma non so come verificherei questo, capire la catena di operazioni o configurarlo per soddisfare i miei piani malvagi per manichino0.

Domanda: come funzionano esattamente NetworkManager, networkd e netplan? In altre parole, all'avvio del computer, quali processi passano a quali altri processi? Come non strumenti da pacchetti come net-tools, ifupdown2, e iproute2e le directory come /etc/network/in forma in tutto questo? E infine, come posso capirlo da solo e apprendere i dettagli usando la riga di comando?

Aggiornamento: non sto cercando una panoramica di alto livello. Piuttosto, voglio sapere come questi componenti interagiscono, sono in conflitto o evitano conflitti a livello di kernel o simili.

Risposte:


15

systemd-networkd quando abilitato onora le configurazioni in /etc/systemd/network

Mentre NetworkManagerseguirà alcune regole automatiche come se tentasse di connettersi a una connessione cablata se ne trova una.

Entrambi sono abilitati e disabilitati come systemdservizi e systemd usando udev crea i file del dispositivo per gli adattatori di rete. Generalmente probabilmente non dovresti averli abilitati entrambi contemporaneamente, ma se lo fai dovresti fare attenzione che le loro configurazioni non siano in conflitto.

netplanprima che uno dei gestori di rete si avvii, crea configurazioni per entrambi in base alla propria configurazione. In questo modo netplan è in realtà un'astrazione della configurazione e ogni volta che utilizza systemd-networkd o NetworkManager fa parte della configurazione.

iproute2è un pacchetto di strumenti per la configurazione delle interfacce di rete dalla riga di comando. Include una configurazione dei collegamenti simile ai gestori di rete e al vecchio ifconfig. Mentre net-tools, ipupdowne ifupdown2configurazioni di utilizzo della rete in / etc / network / interfaces alle interfacce di configurazione e deconfigurare.

ifupdown oppure le sue altre versioni possono essere utilizzate per gestire le reti ma non è automatico ma è possibile utilizzare un servizio systemd per avviarlo all'avvio.

ifupdown2usa grafici di dipendenza simili a quelli che systemdfanno ma con interfacce di rete. Inoltre agisce come un'astrazione per altri strumenti similiiproute2


2
Grazie per il confronto / contrasto, ma stavo cercando di più su come questi componenti interagiscono tra loro, a un livello molto più profondo. Ad esempio, cosa succede esattamente nel kernel quando sia systemd che NetworkManager provano a controllare la stessa interfaccia contemporaneamente? Cosa fanno gli strumenti iproute2 / ifupdown nel kernel che è in conflitto (o evita conflitti) con networkd / NetworkManager? Quali comandi posso usare per vedere quali strumenti hanno fatto cosa a quali interfacce (a livello di udev / kernel)?
Oleg,

Migliore spiegazione che ho visto finora in quanto v'è confusione generale con molte spiegazioni, sostenendo che Netplan è sia NetworkManager o systemd-networkd, ma non entrambi. Alcuni link sarebbero stati utili. Ad esempio manpages.ubuntu.com/manpages/cosmic/man5/netplan.5.html
Craig Hicks

Dopo aver letto questo mi aspetto di trovare i file di configurazione /etc/systemd/networkma nel mio Ubuntu 19.10 con systemd-networkd abilitato e in esecuzione, quella directory è vuota. Comunque trovo i file in /lib/systemd/network. Questa è una nuova configurazione? Ubuntu criminale? Un errore?
Stephen Boston,

1
@StephenBoston Risposto
Timothy Gu
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.