主机名或mac地址上的dhcpd类匹配

我们在RHEL 6服务器上运行DHCPD 4.1.1-P1。 目前,我们有1个类定义为拒绝的目的。 我们现在需要一个类匹配来允许所有匹配variables的设备拒绝其他所有的设备。 我们目前的类configuration如下,我们在MAC地址匹配:

## Define denied class "denied" { match if substring (hardware,1,3) = 00:54:36; } 

在游泳池宣言中,我们否认这个class级:

  pool { deny members of "denied"; range 192.168.100.100 192.168.100.200; } 

我们的新的类configuration如下:

 ## 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/dh​​cp/dhcpd.leases中,我们对每个租约都有两行可能感兴趣的内容。

 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)什么是适当的类匹配语法来匹配主机名?

对于第一个问题 :一个“允许成员”的声明隐含地否认一切?

这个问题在dhcpd.conf的手册页中得到了解答:

  • 如果池中有许可证列表,则只有那些与许可证列表中的特定条目匹配的客户端才有资格从池中分配地址。
  • 如果一个池有一个拒绝列表,那么只有那些不符合拒绝列表的条目的客户才有资格。
  • 如果同时存在允许和拒绝列表,则只允许匹配许可列表且不匹配拒绝列表的客户端访问。

至于主机名匹配:你的意思是请求的主机名或DHCP服务器上configuration的主机名?

要对发送的主机名作出反应,只需要匹配if(option host-name =“foobar”);

或者为一个部分:match substring(option host-name,0,2)=“foo”;

在configuration选项上匹配似乎没有工作