根据子网部分内的类别成员分配选项

根据子网部分内的类别成员分配选项

我们正在寻找一种方法来在 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";
}

相关内容