¿Cómo interactúan exactamente NetworkManager, networkd, netplan, ifupdown2 e iproute2?

20

Estoy aprendiendo acerca de red de Linux en mi estación de trabajo Kubuntu 18.04, y veo que hay que tanto NetworkManagery networkd-dispatcherestá ejecutando:

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

NetworkManagerparece estar configurado para manejar "todo" por netplan:

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

Creo que eso netplanlo entregaría todo networkdsi NetworkManagerno estuviera instalado.

También hay un montón de archivos /etc/network/, y no estoy seguro de qué los maneja. Parece que muchos paquetes usan este directorio:

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

Mis pensamientos iniciales después de buscar en Google son eso NetworkManagery networkdambos se están ejecutando, pero netplangenera una configuración tal que solo uno realmente está haciendo algo. Pero no sé cómo verificaría esto, averiguaría la cadena de operaciones o lo configuraría para que se adaptara a mis nefastos planes para dummy0.

Pregunta: ¿Cómo funcionan exactamente NetworkManager, networkd y netplan juntos? En otras palabras, a medida que la computadora arranca, ¿qué procesos pasan de qué a qué otros procesos? ¿Cómo funcionan las herramientas de paquetes como net-tools, ifupdown2y iproute2y directorios como /etc/network/en todo esto? Y finalmente, ¿cómo puedo resolver esto yo mismo y aprender los detalles usando la línea de comando?

Actualización: no estoy buscando una descripción general de alto nivel. Más bien, quiero saber cómo estos componentes interactúan, entran en conflicto o evitan conflictos a nivel del núcleo o similares.

Oleg
fuente

Respuestas:

15

systemd-networkd cuando está habilitado configuraciones de honores en /etc/systemd/network

Mientras NetworkManagerque seguirá algunas reglas automáticas como si intentara conectarse a una conexión por cable si encuentra una.

Ambos están habilitados y deshabilitados como systemdservicios y systemd usando udev crea los archivos del dispositivo para los adaptadores de red. En general, probablemente no debería haber habilitado ambos al mismo tiempo, pero si lo hace, debe tener cuidado de que sus configuraciones no entren en conflicto.

netplanantes de que cualquiera de los administradores de red comience, crea configuraciones para cualquiera de ellas en función de su propia configuración. De esta manera, netplan es realmente una abstracción de la configuración y si usa systemd-networkd o NetworkManager es parte de la configuración.

iproute2es un paquete de herramientas para configurar interfaces de red en la línea de comando. Incluye una configuración de enlace similar a los administradores de red y el antiguo ifconfig. Mientras net-tools, ipupdowny ifupdown2use configuraciones de red en / etc / network / interfaces para configurar y desconfigurar interfaces.

ifupdown o sus otras versiones se pueden usar para administrar redes, pero no es automático, pero se puede usar un servicio systemd para iniciarlo en el arranque.

ifupdown2usa gráficos de dependencia similares a lo que systemdhace pero con interfaces de red. Además, actúa como una abstracción a otras herramientas comoiproute2

jdwolf
fuente
2
Gracias por la comparación / contraste, pero estaba buscando más acerca de cómo estos componentes interactúan entre sí, en un nivel mucho más profundo. Por ejemplo, ¿ qué sucede exactamente en el kernel cuando systemd y NetworkManager intentan controlar la misma interfaz al mismo tiempo? ¿Qué hacen las herramientas iproute2 / ifupdown en el núcleo que entra en conflicto (o evita el conflicto) con networkd / NetworkManager? ¿Qué comandos puedo usar para ver qué herramientas hicieron qué y qué interfaces (en el nivel udev / kernel)?
Oleg
Mejor explicación que he visto hasta ahora, ya que hay una confusión general con muchas explicaciones que afirman que netplan es bien NetworkManager o -networkd systemd, pero no ambos. Algunos enlaces habrían sido útiles. Por ejemplo, manpages.ubuntu.com/manpages/cosmic/man5/netplan.5.html
Craig Hicks el
Después de leer esto, espero encontrar archivos de configuración, /etc/systemd/networkpero en mi Ubuntu 19.10 con systemd-networkd habilitado y en ejecución, ese directorio está vacío. Sin embargo, encuentro archivos en /lib/systemd/network. ¿Es esta una nueva configuración? Rogue ubuntu? ¿Un error?
Stephen Boston
1
@StephenBoston Eso se responde en unix.stackexchange.com/questions/206315/…
Timothy Gu