Bagaimana tepatnya NetworkManager, networkd, netplan, ifupdown2, dan iproute2 berinteraksi?

19

Saya belajar tentang Linux networking pada saya Kubuntu 18,04 workstation, dan saya melihat ada yang baik NetworkManagerdan networkd-dispatcherberjalan:

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

NetworkManagertampaknya dikonfigurasikan untuk menangani "segalanya" dengan netplan:

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

Saya percaya itu netplanakan menyerahkan semuanya networkdjika NetworkManagertidak diinstal.

Ada juga banyak file di dalamnya /etc/network/, dan saya tidak yakin apa yang menangani itu. Banyak paket tampaknya menggunakan direktori ini:

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

Pikiran awal saya setelah beberapa Googling adalah itu NetworkManagerdan networkdkeduanya berjalan, tetapi netplanmenghasilkan konfigurasi sehingga hanya satu yang benar-benar melakukan sesuatu. Tapi saya tidak tahu bagaimana saya akan memverifikasi ini, mencari tahu rantai operasi, atau mengkonfigurasinya agar sesuai dengan rencana jahat saya untuk dummy0.

Pertanyaan: Bagaimana tepatnya NetworkManager, networkd, dan netplan bekerja bersama? Dengan kata lain, saat komputer dinyalakan, proses mana yang melakukan proses apa? Bagaimana alat dari paket seperti net-tools, ifupdown2, dan iproute2dan direktori seperti /etc/network/masuk ke dalam semua ini? Dan akhirnya, bagaimana saya bisa mengetahui ini sendiri dan mempelajari detailnya menggunakan baris perintah?

Pembaruan: Saya tidak mencari ikhtisar tingkat tinggi. Sebaliknya, saya ingin tahu bagaimana komponen-komponen ini berinteraksi, berkonflik, atau menghindari konflik pada level kernel atau sejenisnya.

Oleg
sumber

Jawaban:

14

systemd-networkd ketika diaktifkan menghormati konfigurasi di /etc/systemd/network

Sedangkan NetworkManagerakan mengikuti beberapa aturan otomatis seperti itu akan mencoba untuk terhubung ke koneksi kabel jika menemukannya.

Keduanya diaktifkan dan dinonaktifkan karena systemdlayanan dan sistem menggunakan udev membuat file perangkat untuk adapter jaringan. Secara umum Anda mungkin seharusnya tidak mengaktifkan keduanya secara bersamaan tetapi jika Anda melakukannya, Anda harus berhati-hati karena konfigurasi mereka tidak bertentangan.

netplansebelum salah satu manajer jaringan mulai membuat konfigurasi untuk baik berdasarkan konfigurasi sendiri. Dengan cara ini netplan benar-benar merupakan abstraksi konfigurasi dan apakah itu menggunakan systemd-networkd atau NetworkManager adalah bagian dari konfigurasi.

iproute2adalah paket alat untuk mengkonfigurasi antarmuka jaringan di baris perintah. Ini termasuk konfigurasi tautan yang mirip dengan manajer jaringan dan ifconfig lama. Sementara net-tools, ipupdowndan ifupdown2gunakan konfigurasi jaringan di / etc / network / interfaces untuk mengkonfigurasi dan mendekonfigurasi interface.

ifupdown atau versi lainnya dapat digunakan untuk mengelola jaringan tetapi tidak otomatis tetapi layanan systemd dapat digunakan untuk memulainya saat boot.

ifupdown2menggunakan grafik dependensi mirip dengan apa yang systemddilakukan tetapi dengan antarmuka jaringan. Selanjutnya itu bertindak sebagai abstraksi ke alat lain sepertiiproute2

jwwolf
sumber
1
Terima kasih atas perbandingan / kontrasnya, tetapi saya mencari lebih banyak tentang bagaimana komponen-komponen ini berinteraksi satu sama lain, pada tingkat yang jauh lebih dalam. Sebagai contoh, apa yang sebenarnya terjadi di kernel ketika kedua systemd dan NetworkManager mencoba untuk mengontrol antarmuka yang sama pada saat yang bersamaan? Apa yang dilakukan alat iproute2 / ifupdown di kernel yang konflik (atau menghindari konflik) dengan networkd / NetworkManager? Perintah apa yang bisa saya gunakan untuk melihat alat apa yang melakukan apa untuk antarmuka mana (pada level udev / kernel)?
Oleg
Penjelasan terbaik yang pernah kulihat sejauh ada kebingungan umum dengan banyak penjelasan mengklaim netplan yang baik NetworkManager atau systemd-networkd, tetapi tidak keduanya. Beberapa tautan akan sangat membantu. Misalnya manpages.ubuntu.com/manpages/cosmic/man5/netplan.5.html
Craig Hicks
Setelah membaca ini saya berharap menemukan file-file konfigurasi /etc/systemd/networktetapi di Ubuntu 19.10 saya dengan systemd-networkd diaktifkan dan berjalan, direktori itu kosong. Namun saya menemukan file di /lib/systemd/network. Apakah ini konfigurasi baru? Ubuntu nakal? Kesalahan?
Stephen Boston
1
@StephenBoston Itu dijawab di unix.stackexchange.com/questions/206315/...
Timothy Gu