Affectation de blocs DHCP à la volée

8

Nous avons un grand nombre de clients qui se connectent à notre machine DHCP. Nous voulons affecter certains d'entre eux à un bloc IP différent, qui est routé avec une priorité inférieure. À chaque renouvellement de bail DHCP, nous aimerions vérifier une base de données et décider à quel bloc IP nous aimerions attribuer un client.

Existe-t-il un moyen pour qu'un serveur DHCP exécute un script, regarde dans une base de données ou exécute du code dynamique pour décider quelle adresse attribuer dans quel pool? Chaque client est identifié de manière unique par l'option 82, alias «Option d'informations sur l'agent de relais DHCP».

Andomar
la source
Quel serveur DHCP sur quel OS?
Zypher
Cela ressemble à une configuration de type opérateur ... est-ce le cas? Je serais surpris si quelque chose comme ça existait déjà dans les outils ouverts. Je regarderais probablement l'écrire moi-même. Question très intéressante cependant!
MikeyB
@Zypher: Debian OS, dhcpd régulier @MikeyB: Oui, configuration de l'opérateur
Andomar

Réponses:

2

Idéalement, vous modifieriez dhcpd pour prendre en charge l'attribution d'adresses basée sur l'option 82, équivalente aux lignes "matérielles" des objets hôtes. Je l'ai fait avec le dhcpd d'OpenBSD lorsque je travaillais chez un FAI, qui a une structure interne plus simple que isc-dhcpd.

Si vous n'êtes pas en mesure de le faire, regardez omapi (3) et omshell (1); vous utiliseriez OMAPI pour créer dynamiquement des objets "classe" et "pool", pour implémenter la suggestion de Zypher. Je viens de vérifier dhcpd.het la classstructure a un OMAPI_OBJECT_PREAMBLE, donc cela devrait être possible. Attention, la documentation sur OMAPI peut être un peu ... maigre.

Phil P
la source
La solution suggérée par Zypher est celle que nous avons actuellement. Et je ne pense pas que les administrateurs système apprécieraient une version modifiée de dhcpd. Mais l'OMAPI semble être une bonne alternative, merci!
Andomar
3

Je n'ai donc pas fait cela avec l'option 82, mais votre meilleur pari serait d'utiliser le classement dans isc dhcpd.

Ce que vous feriez serait d'installer une classe comme:

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

Puis dans votre relevé de 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;
}

Référence: dhcpd.conf

Cela devrait au moins vous mettre sur la bonne voie, je n'ai pas mon serveur de jeu pour le tester, mais j'ai fait quelque chose de similaire avec d'autres options.

Zypher
la source
Ne devrions-nous pas réinitialiser dhcpd chaque fois qu'il y a un changement? Est-il possible que l'appartenance au pool soit déterminée dynamiquement par un appel de script?
Andomar
@Andomar: Oui, vous le feriez. Malheureusement, je ne le pense pas - mais je peux me tromper
Zypher
0

Une façon de procéder consiste à affecter ces clients à un VLAN distinct, puis l'adresse DHCP que ces clients obtiennent sera automatiquement dans un pool différent.

Zak
la source
En fait, le changement de VLAN est ce que nous aimerions éviter. Les commutateurs VLAN confondent les modems du client et prennent beaucoup de temps à s'exécuter
Andomar