Linux - konfigurasi jaringan generik

Saya membuat seperangkat utilitas untuk mengkonfigurasi sistem Linux untuk konfigurasi jaringan dan domain tertentu. Salah satu langkah konfigurasi ini adalah mengkonfigurasi antarmuka jaringan. Meskipun saya dapat dengan mudah mengkonfigurasi hal-hal seperti Samba, atau NTP (karena mereka memiliki sintaks file konfigurasi yang sama, apa pun distronya), jaringan tampaknya sedikit lebih sulit.

Dengan Debian menggunakan /etc/network/interfaces, Fedora dan Red Hat menggunakan /etc/sysconfig/network-scripts, dan distro lain menggunakan pengelola jaringannya masing-masing (saya pribadi menggunakan netctl di Arch), mendapatkan skrip untuk dapat mengonfigurasi antarmuka jaringan tampaknya hampir mustahil. Apakah ada cara portabel untuk mengkonfigurasi antarmuka jaringan?

Jika gagal, cara apa yang baik untuk membuat 'modul' untuk berbagai distro? Proyek saya akan menggunakan Autotools untuk mengkonfigurasi dan menginstal utilitas, sehingga beberapa 'kompilasi' dapat dilakukan, tetapi bagaimana saya bisa mendeteksi manajer jaringan mana yang sedang digunakan? Masalah dengan pendekatan ini mencakup apa yang harus dilakukan ketika tidak ada modul untuk manajer jaringan yang digunakan. Atau haruskah saya menyerahkan kepada pengguna kompilasi untuk memutuskan 'modul' mana yang akan diaktifkan?

Pertanyaan ini kemudian meluas ke pengemasan - ketika membuat ini sebagai sebuah paket, bagaimana saya bisa mendukung banyak manajer jaringan yang ada, bahkan di satu distro? Di Arch, misalnya, pengguna mungkin telah menginstal netctl, yang menggunakan satu set file konfigurasi, atau Wicd atau mungkin manajer jaringan GNOME.


person Xenopathic    schedule 08.01.2014    source sumber
comment
Wicd dan manajer jaringan tampaknya menyediakan antarmuka D-Bus. Jadi Anda dapat memeriksa perangkat lunak Anda, apakah salah satu daemon ini terdaftar di D-Bus.   -  person yegorich    schedule 08.01.2014
comment
Alternatifnya, Anda cukup menentukan NM atau Wicd sebagai persyaratan, sehingga pengguna harus menggunakan salah satu alat ini untuk menggunakan perangkat lunak Anda. Dalam hal ini Anda memiliki lingkungan yang ditentukan, sehingga perangkat lunak Anda tidak akan terlalu rumit.   -  person yegorich    schedule 08.01.2014
comment
@yegorich Haruskah saya membuat keputusan 'modul' mana yang akan diaktifkan pada waktu kompilasi, atau waktu berjalan?   -  person Xenopathic    schedule 08.01.2014
comment
Jika yang Anda maksud adalah hal-hal D-Bus, maka pada saat run-time. Anda bahkan dapat mendesain perangkat lunak Anda dengan semacam API plug-in. Satu plug-in untuk NM, satu untuk Wicd, satu untuk netctl, dll. API menjelaskan, cara mengkonfigurasi antarmuka jaringan. Pengguna kemudian dapat memilih plug-in mana yang akan dikompilasi, bergantung pada konfigurasi sistemnya.   -  person yegorich    schedule 08.01.2014
comment
@yegorich ingin menuliskannya sebagai jawaban formal? Sepertinya pendekatan terbaik bagi saya   -  person Xenopathic    schedule 09.01.2014


Jawaban (1)


Anda dapat membuat perangkat lunak Anda dengan mempertimbangkan API plug-in. API menjelaskan, bagaimana antarmuka jaringan dapat dikonfigurasi. Anda kemudian akan memiliki satu plug-in untuk NM, satu untuk Wicd, satu untuk /etc/network/interfaces dll. Pengguna dapat memilih, plug-in apa yang akan dikompilasi selama tahap ./configure, sehingga ia tidak perlu menginstal ketergantungan yang tidak dibutuhkan.

Untuk beberapa plug-in yang diaktifkan (misalnya NM dan Wicd), Anda dapat menggunakan D-Bus untuk memeriksa layanan apa yang didaftarkan untuk mengelola antarmuka jaringan.

person yegorich    schedule 09.01.2014