Asignación de bloque sobre la marcha de DHCP

8

Tenemos una gran cantidad de clientes que se conectan a nuestra máquina DHCP. Queremos asignar algunos de ellos a un bloque de IP diferente, que se enruta con menor prioridad. En cada renovación de arrendamiento de DHCP, nos gustaría verificar una base de datos y decidir a qué bloque de IP nos gustaría asignar un cliente.

¿Hay alguna manera de que un servidor DHCP ejecute un script, busque en una base de datos o ejecute algún código dinámico al decidir qué dirección asignar en qué grupo? Cada cliente se identifica de forma exclusiva por la opción 82, también conocida como "Opción de información del agente de retransmisión DHCP".

Andomar
fuente
¿Qué servidor DHCP en qué sistema operativo?
Zypher
Esto suena como una configuración tipo operador ... ¿es ese el caso? Me sorprendería si algo así ya existiera en las herramientas abiertas. Probablemente me gustaría escribirlo yo mismo. ¡Pregunta muy interesante sin embargo!
MikeyB
@Zypher: Debian OS, dhcpd regular @MikeyB: Sí, configuración del operador
Andomar

Respuestas:

2

Idealmente, modificaría dhcpd para admitir la asignación de direcciones basada en la Opción 82, equivalente a las líneas de "hardware" en los objetos host. Lo hice con el dhcpd de OpenBSD cuando trabajé en un ISP, que tiene una estructura interna más simple que isc-dhcpd.

Si no estás en condiciones de hacerlo, mira omapi (3) y omshell (1); usaría OMAPI para crear dinámicamente objetos de "clase" y "grupo", para implementar la sugerencia de Zypher. Acabo de comprobar dhcpd.hy la classestructura tiene un OMAPI_OBJECT_PREAMBLE, así que esto debería ser posible. Tenga en cuenta que la documentación sobre OMAPI puede ser un poco ... escasa.

Phil P
fuente
La solución sugerida por Zypher es la que tenemos actualmente. Y no creo que los administradores de sistemas apreciarían una versión editada de dhcpd. Pero OMAPI parece una buena alternativa, ¡gracias!
Andomar
3

Así que no he hecho esto con la opción 82, pero su mejor opción sería usar la clasificación en isc dhcpd.

Lo que harías es configurar una clase como:

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

Luego, en su declaración de grupo:

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

Referencia: dhcpd.conf

Esto debería al menos llevarte por el camino correcto, no tengo mi servidor de reproducción listo para probarlo, pero he hecho algo similar con otras opciones.

Zypher
fuente
¿No deberíamos restablecer dhcpd cada vez que hay un cambio? ¿Es posible tener membresía de grupo determinada dinámicamente por una llamada de script?
Andomar
@Andomar: Sí, lo harías. Desafortunadamente no lo creo, pero podría estar muy equivocado allí
Zypher
0

Una forma de hacer esto es asignar esos clientes a una VLAN separada, luego la dirección DHCP que esos clientes obtienen estará automáticamente en un grupo diferente.

Zak
fuente
En realidad, cambiar la VLAN es lo que nos gustaría evitar. Los conmutadores de VLAN confunden los módems del cliente y tardan mucho tiempo en ejecutarse
Andomar