Como você descobriu, não é possível declarar host
s dentro de class
. A declaração class
pode conter apenas match
ou match if
declarações. Se você quiser agrupar suas solicitações de clientes em classes usando a construção class
, poderá fazer algo assim:
class "MyHosts" {
match hardware;
}
subclass "MyHosts" 1:10:bf:48:xx:xx:xx; # host2
subclass "MyHosts" 1:10:bf:48:xx:xx:xx; # host3
Acima, a instrução match
no class
declara que as subclasses serão correspondidas pelo atributo hardware
. ( hardware
avalia a concatenação do tipo de hardware e o endereço MAC do cliente; para clientes ethernet, o tipo de hardware é 1, portanto, o prefixo 1:
na sequência de dados das instruções subclass
.)
Quando um cliente é membro de uma subclasse, também é um membro da classe pai, portanto, agora você pode usar as cláusulas allow
e deny
em suas declarações pool
para garantir que os membros de MyHosts
são atribuídos IPs do pool desejado, por exemplo:
subnet 192.168.1.0 netmask 255.255.255.0 {
...
pool {
range 192.168.1.101 192.168.1.250;
...
deny members of "MyHosts";
...
}
pool {
range 192.168.1.1 192.168.1.20;
...
allow members of "MyHosts";
...
}
}