DHCP-On-the-Fly-Blockzuweisung

8

Wir haben eine große Anzahl von Clients, die eine Verbindung zu unserem DHCP-Computer herstellen. Wir möchten einige davon einem anderen IP-Block zuweisen, der mit niedrigerer Priorität weitergeleitet wird. Bei jeder Erneuerung des DHCP-Lease möchten wir eine Datenbank überprüfen und entscheiden, welchem ​​IP-Block wir einen Kunden zuweisen möchten.

Gibt es eine Möglichkeit, einen DHCP-Server ein Skript ausführen zu lassen, in einer Datenbank zu suchen oder dynamischen Code auszuführen, wenn entschieden wird, welche Adresse in welchem ​​Pool zugewiesen werden soll? Jeder Client wird durch option82, auch bekannt als "DHCP Relay Agent Information Option", eindeutig identifiziert.

Andomar
quelle
Welcher DHCP-Server auf welchem ​​Betriebssystem?
Zypher
Das klingt nach einem Carrier-Setup ... ist das der Fall? Es würde mich wundern, wenn so etwas bereits in den offenen Tools vorhanden wäre. Ich würde es wahrscheinlich selbst schreiben. Sehr interessante Frage!
MikeyB
@ Zypher: Debian OS, reguläres dhcpd @ MikeyB: Ja, Carrier Setup
Andomar

Antworten:

2

Idealerweise würden Sie dhcpd so ändern, dass die Adresszuweisung basierend auf Option82 unterstützt wird, was den "Hardware" -Zeilen in Hostobjekten entspricht. Ich habe es mit dem OpenBSD dhcpd gemacht, als ich bei einem ISP gearbeitet habe, der eine einfachere interne Struktur als isc-dhcpd hat.

Wenn Sie dazu nicht in der Lage sind, schauen Sie sich Omapi (3) und Omshell (1) an. Sie würden OMAPI verwenden, um dynamisch "Klassen" - und "Pool" -Objekte zu erstellen und den Vorschlag von Zypher zu implementieren. Ich habe gerade nachgesehen dhcpd.hund die classStruktur hat eine OMAPI_OBJECT_PREAMBLE, also sollte dies möglich sein. Beachten Sie, dass die Dokumentation zu OMAPI etwas ... knapp sein kann.

Phil P.
quelle
Die von Zypher vorgeschlagene Lösung ist die, die wir derzeit haben. Und ich glaube nicht, dass die Systemadministratoren eine bearbeitete Version von dhcpd schätzen würden. Aber OMAPI scheint eine gute Alternative zu sein, danke!
Andomar
3

Ich habe dies also nicht mit Option 82 gemacht, aber Ihre beste Wette wäre, die Klassifizierung in isc dhcpd zu verwenden.

Sie würden eine Klasse einrichten wie:

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

Dann in Ihrer Pool-Anweisung:

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

Referenz: dhcpd.conf

Dies sollte dich zumindest auf den richtigen Weg bringen. Ich habe meinen Play Server nicht zum Testen bereit, aber ich habe etwas Ähnliches mit anderen Optionen gemacht.

Zypher
quelle
Müssten wir dhcpd nicht jedes Mal zurücksetzen, wenn sich etwas ändert? Ist es möglich, die Poolmitgliedschaft durch einen Skriptaufruf dynamisch bestimmen zu lassen?
Andomar
@Andomar: Ja, das würdest du. Leider glaube ich nicht - aber ich könnte
mich
0

Eine Möglichkeit, dies zu tun, besteht darin, diese Clients einem separaten VLAN zuzuweisen. Die DHCP-Adresse, die diese Clients erhalten, befindet sich automatisch in einem anderen Pool.

Zak
quelle
Das Wechseln des VLAN möchten wir eigentlich vermeiden. VLAN-Switches verwirren die Modems des Clients und die Ausführung
dauert