Assegnazione del blocco al volo DHCP


8

Abbiamo un gran numero di client che si connettono al nostro computer DHCP. Vogliamo assegnarne alcuni a un diverso blocco IP, che viene instradato con priorità inferiore. Ad ogni rinnovo del lease DHCP, vorremmo controllare un database e decidere a quale blocco IP vorremmo assegnare un cliente.

Esiste un modo per fare in modo che un server DHCP esegua uno script, cerchi in un database o esegua un codice dinamico quando si decide quale indirizzo assegnare in quale pool? Ogni client è identificato in modo univoco da option82, alias "Opzione di informazioni sull'agente di inoltro DHCP".


Quale server DHCP su quale sistema operativo?
Zypher,

Sembra un'installazione di tipo carrier ... è così? Sarei sorpreso se qualcosa del genere esistesse già negli strumenti aperti. Probabilmente guarderei a scriverlo da solo. Domanda molto interessante però!
MikeyB,

@Zypher: sistema operativo Debian, dhcpd regolare @MikeyB: Sì, configurazione
dell'operatore

Risposte:


2

Idealmente, dovresti modificare dhcpd per supportare l'assegnazione degli indirizzi in base a Option82, equivalente alle linee "hardware" negli oggetti host. L'ho fatto con OpenBSD dhcpd quando ho lavorato in un ISP, che ha una struttura interna più semplice per isc-dhcpd.

Se non sei in grado di farlo, allora guarda omapi (3) e omshell (1); useresti OMAPI per creare dinamicamente oggetti "class" e "pool", per implementare il suggerimento di Zypher. Ho appena controllato dhcpd.he la classstruttura ha un OMAPI_OBJECT_PREAMBLE, quindi questo dovrebbe essere possibile. Attenzione che la documentazione su OMAPI può essere un po '... succinta.


La soluzione che Zypher ha suggerito è quella che abbiamo attualmente. E non credo che gli amministratori di sistema apprezzerebbero una versione modificata di dhcpd. Ma OMAPI sembra una buona alternativa, grazie!
Andomar,

3

Quindi non l'ho fatto con l'opzione 82, ma la soluzione migliore sarebbe quella di utilizzare la classificazione in isc dhcpd.

Quello che faresti è impostare una classe come:

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>";
}

Quindi nell'istruzione del pool:

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;
}

Riferimento: dhcpd.conf

Questo dovrebbe almeno portarti sulla strada giusta, non ho il mio server di gioco per testarlo, ma ho fatto qualcosa di simile con altre opzioni.


Non dovremmo ripristinare dhcpd ogni volta che c'è un cambiamento? È possibile avere l'appartenenza al pool determinata dinamicamente da una chiamata di script?
Andomar,

@Andomar: Sì, lo faresti. Sfortunatamente non la penso così - ma potrei sbagliarmi lì
Zypher


0

Un modo per farlo è quello di assegnare quei client a una VLAN separata, quindi l'indirizzo DHCP che ottengono quei client sarà automaticamente in un pool diverso.


In realtà, cambiare VLAN è ciò che vorremmo evitare. Gli switch VLAN confondono i modem del client e richiedono molto tempo per l'esecuzione
Andomar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.