我们在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/dhcp/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选项上匹配似乎没有工作