Chính xác thì NetworkManager, networkd, netplan, ifupdown2 và iproute2 tương tác như thế nào?


18

Tôi đang tìm hiểu về mạng Linux trên máy trạm Kubfox 18.04 của mình và tôi thấy ở đó cả hai NetworkManagernetworkd-dispatcherđang chạy:

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

NetworkManagerdường như được cấu hình để xử lý "mọi thứ" bằng cách netplan:

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

Tôi tin rằng netplansẽ xử lý mọi thứ networkdnếu NetworkManagerkhông được cài đặt.

Ngoài ra còn có một loạt các tập tin trong đó /etc/network/, và tôi không chắc những gì đang xử lý chúng. Rất nhiều gói dường như sử dụng thư mục này:

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

Suy nghĩ ban đầu của tôi sau khi một số Google là NetworkManagernetworkdcả hai đang chạy, nhưng netplantạo ra cấu hình sao cho chỉ có một người thực sự đang làm gì đó. Nhưng tôi không biết làm thế nào tôi sẽ xác minh điều này, tìm ra chuỗi hoạt động hoặc định cấu hình nó cho phù hợp với kế hoạch bất chính của tôi cho dummy0.

Câu hỏi: Chính xác thì NetworkManager, networkd và netplan hoạt động như thế nào? Nói cách khác, khi máy tính khởi động, quá trình nào xử lý những gì của quá trình khác? Làm thế nào để các công cụ từ gói thích net-tools, ifupdown2iproute2và thư mục như /etc/network/phù hợp vào tất cả điều này? Và cuối cùng, làm thế nào tôi có thể tự mình tìm ra điều này và tìm hiểu các chi tiết bằng cách sử dụng dòng lệnh?

Cập nhật: Tôi không tìm kiếm một cái nhìn tổng quan cấp cao. Thay vào đó, tôi muốn biết làm thế nào các thành phần này tương tác, xung đột hoặc tránh xung đột ở cấp độ hạt nhân hoặc tương tự.

Câu trả lời:


14

systemd-networkd khi nó được kích hoạt cấu hình danh dự trong /etc/systemd/network

Trong khi đó, NetworkManagersẽ tuân theo một số quy tắc tự động như nó sẽ cố gắng kết nối với kết nối có dây nếu tìm thấy.

Cả hai đều được bật và tắt vì systemdcác dịch vụ và systemd sử dụng udev tạo các tệp thiết bị cho các bộ điều hợp mạng. Nói chung, có lẽ bạn không nên bật cả hai cùng một lúc nhưng nếu bạn cần cẩn thận thì cấu hình của chúng không xung đột.

netplantrước khi trình quản lý mạng bắt đầu tạo cấu hình cho cả hai dựa trên cấu hình của chính nó. Theo cách này, netplan thực sự là một sự trừu tượng hóa cấu hình và khi nó sử dụng systemd-networkd hoặc NetworkManager là một phần của cấu hình.

iproute2là gói công cụ để cấu hình giao diện mạng tại dòng lệnh. Nó bao gồm cấu hình liên kết tương tự như trình quản lý mạng và ifconfig cũ. Trong khi net-tools, ipupdownifupdown2sử dụng các cấu hình mạng trong / etc / network / giao diện để định cấu hình và giải mã giao diện.

ifupdown hoặc các phiên bản khác của nó có thể được sử dụng để quản lý mạng nhưng nó không tự động nhưng dịch vụ systemd có thể được sử dụng để khởi động khi khởi động.

ifupdown2sử dụng biểu đồ phụ thuộc tương tự như những gì systemdnhưng với giao diện mạng. Hơn nữa, nó hoạt động như một sự trừu tượng cho các công cụ khác nhưiproute2


1
Cảm ơn bạn đã so sánh / tương phản, nhưng tôi đã tìm kiếm thêm về cách các thành phần này tương tác với nhau, ở mức độ sâu sắc hơn nhiều. Ví dụ, điều gì chính xác xảy ra trong kernel khi cả systemd và NetworkManager đều cố gắng kiểm soát cùng một giao diện cùng một lúc? Các công cụ iproute2 / ifupdown làm gì trong kernel xung đột (hoặc tránh xung đột) với Networkd / NetworkManager? Tôi có thể sử dụng các lệnh nào để xem công cụ nào đã làm gì với giao diện nào (ở cấp độ udev / kernel)?
Oleg

Lời giải thích tốt nhất mà tôi đã thấy cho đến nay là có sự nhầm lẫn chung với nhiều giải thích tuyên bố netplan đó là một trong hai NetworkManager hoặc systemd-networkd, nhưng không phải cả hai. Một số liên kết sẽ có ích. Ví dụ: manpages.ubfox.com/manpages/cosmic/man5/netplan.5.html
Craig Hicks

Sau khi đọc xong, tôi hy vọng sẽ tìm thấy các tệp cấu hình trong /etc/systemd/networknhưng trong Ubuntu 19.10 của tôi có bật và chạy systemd-networkd, thư mục đó trống. Tuy nhiên tôi tìm thấy các tập tin trong /lib/systemd/network. Đây có phải là một cấu hình mới? Rogue ubfox? Một lỗi?
Stephen Boston

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.