Penugasan blok on-the-fly DHCP

8

Kami memiliki sejumlah besar klien yang terhubung ke mesin DHCP kami. Kami ingin menetapkan beberapa dari mereka ke blok IP yang berbeda, yang dialihkan dengan prioritas lebih rendah. Setiap pembaruan sewa DHCP, kami ingin memeriksa database dan memutuskan blok IP mana yang ingin kami berikan pelanggan.

Apakah ada cara untuk membuat server DHCP menjalankan skrip, mencari dalam database, atau mengeksekusi beberapa kode dinamis saat memutuskan alamat mana yang akan ditetapkan di kumpulan mana? Setiap klien diidentifikasi secara unik oleh option82, alias "Opsi Informasi Agen Relay DHCP".

Andomar
sumber
Server DHCP mana pada OS apa?
Zypher
Ini terdengar seperti pengaturan tipe pembawa ... apakah itu masalahnya? Saya akan terkejut jika sesuatu seperti ini sudah ada di alat terbuka. Saya mungkin akan melihat menulisnya sendiri. Pertanyaan yang sangat menarik!
MikeyB
@Zypher: Debian OS, dhcpd biasa @MikeyB: Ya, pengaturan operator
Andomar

Jawaban:

2

Idealnya, Anda akan memodifikasi dhcpd untuk mendukung penetapan alamat berdasarkan Option82, setara dengan baris "perangkat keras" pada objek host. Saya sudah melakukannya dengan OpenBSD dhcpd ketika saya bekerja di ISP, yang memiliki struktur internal yang lebih sederhana untuk isc-dhcpd.

Jika Anda tidak berada dalam posisi untuk melakukan itu, maka lihat omapi (3) dan omshell (1); Anda akan menggunakan OMAPI untuk secara dinamis membuat objek "class" dan "pool", untuk mengimplementasikan saran Zypher. Saya baru saja memeriksa dhcpd.hdan classstruct memiliki OMAPI_OBJECT_PREAMBLE, jadi ini harus dimungkinkan. Berhati-hatilah karena dokumentasi tentang OMAPI bisa sedikit ... minim.

Phil P
sumber
Solusi yang disarankan Zypher adalah yang saat ini kami miliki. Dan saya tidak berpikir sysadmin akan menghargai versi dhcpd yang sudah diedit. Tapi OMAPI sepertinya alternatif yang bagus, terima kasih!
Andomar
3

Jadi saya belum melakukan ini dengan opsi 82, tetapi taruhan terbaik Anda adalah menggunakan classing di isc dhcpd.

Apa yang akan Anda lakukan adalah mengatur kelas seperti:

class "userclass1" { 
    match if substring(option agent.circuit-id, 2, 2) = "<your_id1>";
}
class "userclass2" { 
    match if substring(option agent.circuit-id, 2, 2) = "<your_id2>";
}

Kemudian dalam pernyataan kolam Anda:

pool {
  allow members of "userclass1";
  range 10.0.0.11 10.0.0.50;
}
pool {
   allow members of "userclass2";
   range 10.0.0.51 10.0.0.100;
}

Referensi: dhcpd.conf

Setidaknya ini harus membuat Anda di jalur yang benar, saya tidak punya server bermain saya untuk mengujinya, tetapi saya telah melakukan sesuatu yang mirip dengan opsi lain.

Zypher
sumber
Bukankah kita harus mengatur ulang dhcpd setiap kali ada perubahan? Apakah mungkin untuk memiliki kumpulan keanggotaan yang ditentukan secara dinamis oleh panggilan skrip?
Andomar
@Andomar: Ya, tentu saja. Sayangnya saya tidak berpikir begitu - tetapi saya bisa sangat salah di sana
Zypher
0

Salah satu cara untuk melakukan ini adalah dengan menetapkan klien-klien itu ke VLAN terpisah, maka alamat DHCP yang didapat klien-klien itu akan secara otomatis berada dalam kumpulan yang berbeda.

Zak
sumber
Sebenarnya, mengganti VLAN adalah hal yang ingin kami hindari. Switch VLAN membingungkan modem klien dan membutuhkan waktu lama untuk mengeksekusi
Andomar