DHCP即时块分配

我们有大量的客户端连接到我们的DHCP机器。 我们想把它们中的一部分分配给一个不同的IP块,这个IP块的路由优先级较低。 每一次DHCP租约续约,我们都想检查一个数据库,并决定我们要分配一个客户的IP块。

有一种方法可以让DHCP服务器执行脚本,查看数据库,或者在决定在哪个池中分配哪个地址时执行一些dynamic代码? 每个客户端都由option82唯一标识,即“DHCP中继代理信息选项”。

理想情况下,您可以修改dhcpd以支持基于Option82的地址分配,相当于主机对象中的“硬件”行。 我在一个ISP工作的时候,用OpenBSD的dhcpd做了这个工作,它的内部结构比isc-dhcpd更简单。

如果你不能这样做,那么看看omapi(3)和omshell(1); 您将使用OMAPIdynamic创build“class”和“pool”对象,以实现Zypher的build议。 我只是检查dhcpd.hclass结构有一个OMAPI_OBJECT_PREAMBLE ,所以这应该是可能的。 请注意,OMAPI的文档可能会有点小…。

所以我没有做到这一点与选项82,但你最好的select是在isc dhcpd中使用分类。

你会做什么是设置一个类,如:

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

然后在你的池声明中:

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

参考: dhcpd.conf

这应该至less让你在正确的轨道上,我没有我的播放服务器来testing它,但我已经做了类似的其他选项。

也许你可以从这里开始:

http://blog.nominet.org.uk/tech/2005/12/21/using-omapi-object-management-application-programming-interface/

从来没有使用过,但有一些脚本,我认为它可以工作。

编辑

man omshell(1)会给出一些其他的例子

一种方法是将这些客户端分配给单独的VLAN,然后客户端获得的DHCP地址将自动处于不同的池中。