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

ความคิดเริ่มต้นของฉันหลังจาก Googling บางอย่างเป็นเช่นนั้น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การกำหนดค่าการใช้งานเครือข่ายใน / etc / เครือข่าย / อินเตอร์เฟซการกำหนดค่าและ deconfigure อินเตอร์เฟซ

ifupdown หรือเวอร์ชันอื่น ๆ ของมันสามารถใช้เพื่อจัดการเครือข่ายได้ แต่มันไม่อัตโนมัติ แต่สามารถใช้บริการ systemd เพื่อเริ่มทำงานเมื่อเริ่มระบบ

ifupdown2ใช้กราฟพึ่งพาคล้ายกับสิ่งที่systemdทำ แต่กับเชื่อมต่อเครือข่าย นอกจากนี้ยังทำหน้าที่เป็นนามธรรมของเครื่องมืออื่น ๆ เช่นiproute2


2
ขอบคุณสำหรับการเปรียบเทียบ / ความคมชัด แต่ฉันกำลังมองหาเพิ่มเติมเกี่ยวกับวิธีการที่องค์ประกอบเหล่านี้มีปฏิสัมพันธ์ซึ่งกันและกันในระดับที่ลึกกว่ามาก ตัวอย่างเช่นสิ่งที่ว่าเกิดขึ้นใน kernel เมื่อทั้งสอง systemd และ NetworkManager พยายามที่จะควบคุมอินเตอร์เฟซเดียวกันในเวลาเดียวกันได้หรือไม่ เครื่องมือ iproute2 / ifupdown ทำอะไรในเคอร์เนลที่ขัดแย้ง (หรือหลีกเลี่ยงความขัดแย้ง) กับ networkd / NetworkManager ฉันสามารถใช้คำสั่งใดเพื่อดูว่าเครื่องมือใดทำสิ่งใดที่อินเตอร์เฟสใด (ในระดับ udev / เคอร์เนล)
Oleg

คำอธิบายที่ดีที่สุดที่ผมเคยเห็นไกลที่สุดเท่าที่มีความสับสนทั่วไปที่มีหลายคำอธิบายที่อ้าง netplan ที่ทั้ง NetworkManager หรือ systemd-networkd แต่ไม่ใช่ทั้งสอง ลิงก์บางลิงค์อาจมีประโยชน์ เช่นmanpages.ubuntu.com/manpages/cosmic/man5/netplan.5.html
Craig Hicks

หลังจากอ่านสิ่งนี้ฉันคาดว่าจะพบไฟล์การกำหนดค่า/etc/systemd/networkแต่ใน Ubuntu 19.10 ที่มี systemd-networkd เปิดใช้งานและทำงานอยู่ไดเรกทอรีนั้นจะว่างเปล่า /lib/systemd/networkอย่างไรก็ตามผมพบไฟล์ใน นี่คือการกำหนดค่าใหม่หรือไม่ Rogue Ubuntu มีข้อผิดพลาด?
สตีเฟ่นบอสตัน

1
@StephenBoston นั่นคือคำตอบในunix.stackexchange.com/questions/206315/…
ทิโมธี Gu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.