我们正在寻找一种方法来在 dhcpd.conf 文件中执行以下步骤:
subnet ... {
#couple of options for the subnet here
pool {
allow members of "class-name1";
allow members of "class-name2";
range ip1 ip2;
}
if is member of class "class-name1" {
option ...;
}
}
有问题的部分是if is member of class "class-name"
——不知道如何验证这个条件。
该类本身的定义如下:
class "class name" {
match if some_condition_here;
}
当然,一个显而易见的解决方案就是在本subnet
节中重复相同的条件,但这是一种重复——这不是一个好方法。我还认为这在某种程度上违背了类的本质。
我们的另一个想法是使用单独的pool
方法,而不指定范围。像这样:
pool {
allow members of "class-name1";
option ...;
}
但那行不通——配置不被视为无效。显然pool
部分需要range
内部,尽管我无法在规范中找到此要求。
我们还有一个猜测 - 指定两个相同的池,一个用于其他类,一个用于“class-name1”。但是这意味着相同的范围会出现两次,这又是一个无效的配置。
那么,有没有一个好方法来验证设备是否被归类为特定类别的成员?
答案1
选项可以在特定的类声明中定义,因此不需要在子网块中定义选项:
class "class1" {
match if substring (option vendor-class-identifier,0,8) = "qwerty12";
log(info, concat("Vendor Class = ", substring (option vendor-class-identifier,0,8)));
vendor-option-space TBoot;
option TBoot.SrvType "tboot";
option TBoot.Srv 192.168.1.50;
option TBoot.Version "0.5.4";
filename "http://192.168.1.50/tboot.pxe";
}