Как именно взаимодействуют NetworkManager, networkd, netplan, ifupdown2 и iproute2?

20

Я учусь о Linux сети на рабочей станции Kubuntu 18.04, и я вижу , что оба NetworkManagerи networkd-dispatcherработаю:

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кажется, настроен на обработку "все" с помощью netplan:

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

Я полагаю, netplanчто все будет отдано, networkdесли NetworkManagerне было установлено.

Там также есть куча файлов /etc/network/, и я не уверен, что с ними работает. Многие пакеты используют этот каталог:

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

Мои первоначальные мысли после некоторого поиска в Google таковы, NetworkManagerи networkdони оба работают, но netplanгенерируют конфигурацию так, что только один действительно что-то делает. Но я не знаю, как я мог бы это проверить, выяснить цепочку операций или настроить ее в соответствии с моими гнусными планами для dummy0.

Вопрос: Как именно NetworkManager, networkd и netplan работают вместе? Другими словами, когда компьютер загружается, какие процессы и что другим процессам? Как инструменты из таких пакетов, как net-tools, ifupdown2и iproute2и каталоги, как /etc/network/вписываются во все это? И, наконец, как я могу понять это сам и узнать подробности с помощью командной строки?

Обновление: я не ищу обзор высокого уровня. Скорее, я хочу знать, как эти компоненты взаимодействуют, конфликтуют или избегают конфликтов на уровне ядра или аналогичных.

Олег
источник

Ответы:

15

systemd-networkd когда он включен, учитывает конфигурации в /etc/systemd/network

Принимая во внимание, что NetworkManagerбудут следовать некоторые автоматические правила, такие как попытка подключиться к проводному соединению, если оно его найдет.

Оба включаются и отключаются как systemdслужбы, а systemd с помощью udev создает файлы устройств для сетевых адаптеров. Обычно вам, вероятно, не следует включать оба одновременно, но если вы это сделаете, вам нужно быть осторожным, чтобы их конфигурации не конфликтовали.

netplanперед запуском любого сетевого менеджера создает конфигурации для каждого из них на основе его собственной конфигурации. Таким образом, netplan на самом деле является абстракцией конфигурации и использует ли он systemd-networkd или NetworkManager является частью конфигурации.

iproute2представляет собой пакет инструментов для настройки сетевых интерфейсов в командной строке. Он включает в себя конфигурацию канала, аналогичную сетевым менеджерам и старому ifconfig. В то время net-tools, ipupdownи ifupdown2использование сетевых конфигураций в / и т.д. / сети / интерфейсы для настройки и интерфейсов из конфигурации.

ifupdown или другие его версии могут использоваться для управления сетями, но это не автоматическое, а системная служба может использоваться для запуска при загрузке.

ifupdown2использует графики зависимостей, аналогичные тем, которые systemdиспользуются, но с сетевыми интерфейсами. Далее это действует как абстракция к другим инструментам, таким какiproute2

jdwolf
источник
2
Спасибо за сравнение / контраст, но я искал больше о том, как эти компоненты взаимодействуют друг с другом, на более глубоком уровне. Например, что именно происходит в ядре, когда и systemd, и NetworkManager пытаются одновременно управлять одним и тем же интерфейсом? Что делают инструменты iproute2 / ifupdown в ядре, которые конфликтуют (или избегают конфликтов) с networkd / NetworkManager? Какие команды я могу использовать, чтобы увидеть, какие инструменты и с какими интерфейсами (на уровне udev / kernel)?
Олег
Лучшее объяснение, которое я видел, поскольку существует общее замешательство со многими объяснениями, утверждающими, что netplan является либо NetworkManager, либо systemd-networkd, но не обоими. Некоторые ссылки были бы полезны. Например, manpages.ubuntu.com/manpages/cosmic/man5/netplan.5.html
Крейг Хикс
Прочитав это, я ожидаю найти файлы конфигурации, /etc/systemd/networkно в моем Ubuntu 19.10 с включенным и работающим systemd-networkd этот каталог пуст. Однако я нахожу файлы в/lib/systemd/network . Это новый конфиг? Изгой убунту? Ошибка?
Стивен Бостон
1
@StephenBoston Ответы
Тимоти Гу