我们在 RHEL 6 服务器上运行 DHCPD 4.1.1-P1。目前我们定义了 1 个用于拒绝目的的类。我们现在需要类匹配来允许所有与变量匹配的设备并拒绝其他所有设备。我们当前的类配置如下,我们正在匹配 MAC 地址:
## Define denied
class "denied" {
match if substring (hardware,1,3) = 00:54:36;
}
在池声明中我们拒绝该类:
pool {
deny members of "denied";
range 192.168.100.100 192.168.100.200;
}
我们的新班级配置如下:
## Define denied
class "denied" {
match if substring (hardware,1,3) = 00:54:36;
}
class "allowed" {
match if substring (hardware,1,3) = 00:42:12;
)
池声明如下:
pool {
allow members of "allowed";
deny members of "denied";
range 192.168.100.100 192.168.100.200;
}
我的第一个问题是,一旦引入允许类,我们是否需要拒绝类?我的理解是允许类隐式地拒绝其他所有内容。此外,我们如何通过主机名而不是 MAC 地址来匹配允许类?在我的研究中,我无法从我见过的示例中弄清楚语句实际上是什么样子。在 /var/lib/dhcp/dhcpd.leases 中,我们为每个写入的租约提供了 2 行可能感兴趣的内容。
hardware ethernet xx:xx:xx:xx:xx:xx;
client-hostname "hostname";
我猜测如果我们想要对主机名进行类别匹配,它看起来会像这样:
class "allowed" {
match if substring (client-hostname) = "hostname";
}
池声明如下:
pool {
allow members of "allowed";
deny members of "denied";
range 192.168.100.100 192.168.100.200;
}
因此,再次总结我的两个问题。
1)池声明中的“允许成员”语句是否隐式拒绝其他所有内容,并且我不再需要我的拒绝语句?
2)与主机名匹配的正确的类匹配语法是什么?
答案1
对于第一个问题:
“允许成员”声明是否隐式地拒绝其他一切?
这个问题在 dhcpd.conf 的手册页中已经得到回答:
- 如果池具有允许列表,则只有与允许列表中的特定条目匹配的客户端才有资格从池中分配地址。
- 如果池有拒绝列表,那么只有与拒绝列表中的任何条目不匹配的客户端才有资格。
- 如果池中同时存在允许列表和拒绝列表,则只有与允许列表匹配且与拒绝列表不匹配的客户端才允许访问。
对于第二个问题匹配主机名
您是指请求的主机名还是在 dhcp 服务器上配置的主机名?
要对发送的主机名做出反应,应该简单地
match if (option host-name = “foobar”);
或部分:
match if substring(option host-name,0,2) = “foo”;
配置选项匹配似乎不起作用