我正在为我的网络运行一个 ISC DHCPd 服务器,该服务器为多个子网提供服务。我想做的事情之一是将特定范围的 IP 分配给具有通用 MAC 前缀(例如 00:01:02)的主机。此外,分配必须能够被具有固定地址的分配覆盖。我已经在 Google 上搜索过,但没有找到任何明确的答案。
如果我可以将该语句放在我的 dhcpd.conf 的子网节中,则会获得额外的奖励(它将更适合我的管理软件)。
答案1
在我的系统 (debian lenny) 上,我需要二进制到 ASCII 才能匹配 mac 地址。在我的 dhcpd.conf 的这个 (工作) 示例中,server247 属于“本地”类,但是,我给它一个不在池中的固定地址。我建议将固定地址与动态分配的地址放在不同的范围内(它们仍然可以位于同一子网中)。
class "kvm" {
match if binary-to-ascii(16,8,":",substring(hardware, 1, 2)) = "56:11";
}
class "local" {
match if binary-to-ascii(16,8,":",substring(hardware, 1, 2)) = "52:54";
}
host meme {
fixed-address 10.1.0.254;
}
host server247 {
hardware ethernet 52:54:00:2f:ea:07;
fixed-address 10.1.0.247;
}
subnet 10.1.0.224 netmask 255.255.255.224 {
option routers 10.1.0.225;
pool {
allow members of "kvm";
range 10.1.0.226 10.1.0.235;
}
pool {
allow members of "local";
range 10.1.0.236 10.1.0.240;
}
pool {
# Don't use this pool. It is really just a range to reserve
# for fixed addresses defined per host, above.
allow known-clients;
range 10.1.0.241 10.1.0.253;
}
}
举个例子,你可以这样做:
match if binary-to-ascii(16,8,":",substring(hardware, 1, 3)) = "00:01:02";
答案2
像这样:
class "specialK" {
match if substring (hardware, 1, 3) = 00:01:02;
}
subnet 10.0.0.0 netmask 255.255.255.0 {
pool {
range 10.0.0.16 10.0.0.32;
allow members of "specialK";
}
}
嗯,它应该是(硬件,0,2)还是(.. 1,3),测试一下。:)