Saya bekerja pada sistem Linux dengan pengaturan jaringan "klasik", yaitu tidak ada daemon konfigurasi berfitur lengkap yang berjalan seperti NetworkManager. Sebagian besar konfigurasi dilakukan oleh dhclient.
Saya perlu mendeteksi situasi di mana saya harus menjalankan kembali dhclient. (subnet berbeda karena perubahan konfigurasi kabel atau jaringan). Saya ingin menjalankan pemeriksaan setiap 10 menit tanpa memutus koneksi yang ada.
Apa yang saya butuhkan pada dasarnya adalah jawaban untuk pertanyaan seperti Apakah Alamat IP dan Gateway saya valid untuk Jaringan yang saya hubungkan? atau Jika saya akan memperbarui Sewa DHCP saya, apakah saya akan mendapatkan IP yang sama lagi? . Untuk menjawab pertanyaan pertama, seseorang hanya bisa melakukan ping beberapa IP publik seperti 8.8.8.8, tapi saya butuh solusi yang juga berfungsi di jaringan pribadi besar yang saya tidak tahu. Bahkan gateway default mungkin tidak selalu bisa pingable.
Satu saya tahu ip saya tidak valid saya akan melakukan "dhclient -r eth0; dhclient eth0" untuk memperbarui sewa. Namun, ini memutus saya dari internet untuk waktu yang singkat, jika saya sudah terhubung dengan benar.
Saya menemukan bahwa dhcping adalah alat yang baik untuk menanyakan server DHCP tanpa benar-benar menggunakan hasilnya. Namun, saya mendapatkan hasil yang aneh, yang bahkan mungkin memenuhi syarat untuk pertanyaan lain. Tampaknya dhcping hanya berfungsi dengan baik jika saya tahu ip server sebelumnya, jadi ada alat yang hilang untuk DHCP DISCOVER. (dan menggunakan alamat server broadcast tidak dapat diandalkan)
Saya tahu saya bisa melakukan hdcp find dengan nmap, namun menginstal nmap bukan ide yang baik karena alasan keamanan.
Pertanyaan yang ingin saya tanyakan:
- Apakah ada cara untuk memvalidasi ip terkonfigurasi saya dalam konteks jaringan yang terhubung?
- Apakah ada peluang untuk memperbaharui sewa dhclient sesuai permintaan?
- Apakah ada alat yang melakukan siaran dhcp dan menyiarkan hasilnya?
Adendum :
Berbeda dengan hasil tes pertama saya, hanya memanggil dhclient -v tidak menyelesaikan masalah saya. Untuk memperjelas ini, masalah awal saya adalah dhclient berjalan dalam mode latar belakang (tanpa benar-benar memperbarui sewa sepanjang waktu). Memanggil dhclient menghasilkan:
dhclient (30887) sudah berjalan - keluar.
Ini tidak sepenuhnya repoducable. Terkadang berhasil. (Inilah mengapa saya pertama kali berpikir opsi -v akan membuat perbedaan, itu tidak)
Jadi pertanyaan saya adalah: Jika saya mendapatkan masalah yang sudah berjalan ini, walaupun dclient saat ini tidak melakukan apa-apa, bagaimana memicu pembaruan untuk proses latar belakang?
(Alasan di balik ini adalah, bahwa klien DHCP harus mengikat ke port 68. Ketika port ini terikat oleh daemon latar belakang dhclient, contoh lain tidak dapat dieksekusi di latar depan)
sumber
Solusi terbaik yang saya temukan sejauh ini adalah menggunakan implementasi dhcp find di python:
https://code.activestate.com/recipes/577649-dhcp-query/
Yang cukup bagus, karena saya sudah menggunakan python. Tapi mungkin saya masih kehilangan solusi sederhana dan ini semua terlalu rumit.
sunting: Ini tidak terlalu membantu. Masalah utama saya adalah bahwa proses latar belakang dhclient menempati port 68, yang mencegah proses lain yang melakukan penemuan DHCP, dan saya tidak tahu cara apa pun untuk membuat proses latar belakang membebaskannya tanpa menjatuhkan konfigurasi jaringan.
sumber