DHCP 动态块分配

DHCP 动态块分配

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

在决定在哪个池中分配哪个地址时,有没有办法让 DHCP 服务器执行脚本、查看数据库或执行一些动态代码?每个客户端都由 option82(又称“DHCP 中继代理信息选项”)唯一标识。

答案1

理想情况下,您应该修改 dhcpd 以支持基于 Option82 的地址分配,这相当于主机对象中的“硬件”行。我在 ISP 工作时使用 OpenBSD dhcpd 完成过此操作,它的内部结构比 isc-dhcpd 更简单。

如果您无法做到这一点,请查看 omapi(3) 和 omshell(1);您可以使用 OMAPI 动态创建“类”和“池”对象,以实现 Zypher 的建议。我刚刚检查过,dhcpd.h结构class有一个OMAPI_OBJECT_PREAMBLE,所以这应该是可能的。请注意,OMAPI 上的文档可能有点……简略。

答案2

所以我没有使用选项 82 来执行此操作,但最好的选择是使用 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配置文件

这至少应该让你走上正确的轨道,我没有启动我的游戏服务器来测试它,但是我已经用其他选项做了类似的事情。

答案3

也许你可以从这里开始:

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

从未使用过,但我认为通过一些脚本就可以工作。

编辑

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

答案4

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

相关内容