Linux - การกำหนดค่าเครือข่ายทั่วไป

ฉันกำลังสร้างชุดยูทิลิตี้เพื่อกำหนดค่าระบบ Linux สำหรับเครือข่ายและการกำหนดค่าโดเมนเฉพาะ ขั้นตอนหนึ่งของการกำหนดค่านี้คือการกำหนดค่าอินเทอร์เฟซเครือข่าย แม้ว่าฉันจะสามารถกำหนดค่าสิ่งต่าง ๆ เช่น Samba หรือ NTP ได้อย่างง่ายดาย (เนื่องจากมีไวยากรณ์ไฟล์การกำหนดค่าเหมือนกัน โดยไม่คำนึงถึง distro) ระบบเครือข่ายดูเหมือนจะยากขึ้นเล็กน้อย

ด้วย Debian ที่ใช้ /etc/network/interfaces, Fedora และ Red Hat ที่ใช้ /etc/sysconfig/network-scripts และ distros อื่น ๆ ที่ใช้ตัวจัดการเครือข่ายที่เกี่ยวข้อง (ฉันใช้ netctl บน Arch เป็นการส่วนตัว) การได้รับสคริปต์เพื่อให้สามารถกำหนดค่าอินเทอร์เฟซเครือข่ายดูเหมือนแทบจะเป็นไปไม่ได้เลย มีวิธีการกำหนดค่าอินเทอร์เฟซเครือข่ายแบบพกพาหรือไม่?

หากไม่ทำเช่นนั้น อะไรจะเป็นวิธีที่ดีในการสร้าง 'โมดูล' สำหรับ distros ต่างๆ โปรเจ็กต์ของฉันจะใช้ Autotools ในการกำหนดค่าและติดตั้งยูทิลิตี้ ดังนั้น 'การคอมไพล์' บางอย่างจึงสามารถทำได้ แต่ฉันจะตรวจสอบได้อย่างไรว่าตัวจัดการเครือข่ายใดที่ใช้งานอยู่ ปัญหาเกี่ยวกับวิธีการนี้รวมถึงสิ่งที่ต้องทำเมื่อไม่มีโมดูลสำหรับตัวจัดการเครือข่ายที่ใช้งานอยู่ หรือฉันควรปล่อยให้ผู้ใช้คอมไพล์ตัดสินใจว่าจะเปิดใช้งาน 'โมดูล' ใด

คำถามนี้ขยายไปถึงบรรจุภัณฑ์ - เมื่อสร้างสิ่งนี้เป็นแพ็คเกจ ฉันจะสนับสนุนผู้จัดการเครือข่ายหลายรายที่มีอยู่ได้อย่างไร แม้ใน distro เดียว ตัวอย่างเช่น ใน Arch ผู้ใช้อาจติดตั้ง netctl ซึ่งใช้ไฟล์การกำหนดค่าหนึ่งชุด หรือ Wicd หรืออาจเป็นตัวจัดการเครือข่าย GNOME


person Xenopathic    schedule 08.01.2014    source แหล่งที่มา
comment
ดูเหมือนว่าทั้ง wicd และ network-manager จะมีอินเทอร์เฟซ D-Bus คุณจึงสามารถตรวจสอบซอฟต์แวร์ของคุณได้ หากหนึ่งใน daemons เหล่านี้ลงทะเบียนภายใต้ D-Bus   -  person yegorich    schedule 08.01.2014
comment
หรือคุณสามารถกำหนด NM หรือ Wicd ให้เป็นข้อกำหนดได้ ดังนั้นผู้ใช้ต้องใช้หนึ่งในเครื่องมือเหล่านี้เพื่อใช้ซอฟต์แวร์ของคุณ ในกรณีนี้ คุณมีสภาพแวดล้อมที่กำหนดไว้ ดังนั้นซอฟต์แวร์ของคุณจะไม่ซับซ้อนขนาดนั้น   -  person yegorich    schedule 08.01.2014
comment
@yegorich ฉันควรตัดสินใจว่าจะเปิดใช้งาน 'โมดูล' ใดในเวลารวบรวมหรือรันไทม์   -  person Xenopathic    schedule 08.01.2014
comment
ถ้าคุณหมายถึงของ D-Bus ก็แสดงว่าที่รันไทม์ คุณยังสามารถออกแบบซอฟต์แวร์ของคุณด้วย Plug-in API บางประเภทได้ ปลั๊กอินหนึ่งตัวสำหรับ NM หนึ่งอันสำหรับ Wicd หนึ่งอันสำหรับ netctl เป็นต้น API อธิบายวิธีกำหนดค่าอินเทอร์เฟซเครือข่าย จากนั้นผู้ใช้สามารถเลือกปลั๊กอินที่จะคอมไพล์ได้ ขึ้นอยู่กับการกำหนดค่าระบบของเขา   -  person yegorich    schedule 08.01.2014
comment
@yegorich ต้องการเขียนสิ่งนั้นเป็นคำตอบอย่างเป็นทางการหรือไม่? ดูเหมือนเป็นแนวทางที่ดีที่สุดสำหรับฉัน   -  person Xenopathic    schedule 09.01.2014


คำตอบ (1)


คุณสามารถสร้างซอฟต์แวร์โดยคำนึงถึงปลั๊กอิน API เป็นหลัก API อธิบายวิธีกำหนดค่าอินเทอร์เฟซเครือข่าย จากนั้นคุณจะมีปลั๊กอินหนึ่งตัวสำหรับ NM หนึ่งอันสำหรับ Wicd หนึ่งอันสำหรับ /etc/network/interfaces เป็นต้น ผู้ใช้สามารถเลือกได้ว่าปลั๊กอินใดที่จะคอมไพล์ในระหว่างระยะ ./configure เพื่อที่เขาจะได้ไม่ต้องติดตั้ง การพึ่งพาที่ไม่จำเป็น

สำหรับปลั๊กอินที่เปิดใช้งานหลายปลั๊กอิน (เช่น NM และ Wicd) คุณสามารถใช้ D-Bus เพื่อตรวจสอบบริการใดที่ได้รับการลงทะเบียนเพื่อจัดการอินเทอร์เฟซเครือข่าย

person yegorich    schedule 09.01.2014