Como atribuo hosts a classes no ISC DHCPD?

4

Suponha que eu tenha um monte de hosts configurados assim:

host host2 { hardware ethernet 10:bf:48:xx:xx:xx; fixed-address 192.168.1.2; }
host host3 { hardware ethernet 10:bf:48:xx:xx:xx; fixed-address 192.168.1.3; }
# etc ...   

subnet 192.168.1.0 netmask 255.255.255.0 {
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.1.255;
  option routers 192.168.1.254;
  option domain-name-servers 8.8.8.8, 8.8.4.4;

  # Unknown test clients get this pool.
  pool {
    max-lease-time 1800; # 30 minutes
    range 192.168.1.100 192.168.1.250;
    allow unknown-clients;
  }

  # MyHosts nodes get this pool
  pool {
    max-lease-time 1800;
    range 192.168.1.1 192.168.1.20;
    allow members of MyHosts;
    deny unknown-clients;
  }
}

Eu quero colocá-los em uma classe e atribuí-los a um pool para garantir que apenas esses hosts sejam permitidos nesse pool.

Eu tentei defini-los como:

class "MyHosts" {
  host host2 { hardware ethernet 10:bf:48:xx:xx:xx; fixed-address 192.168.1.2; }
  host host3 { hardware ethernet 10:bf:48:xx:xx:xx; fixed-address 192.168.1.3; }
}

Mas isso deu um erro "declarações de host não permitidas aqui".

Como faço isso?

    
por Matt 26.01.2013 / 10:54

1 resposta

8

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";
        ...
    }
}
    
por 26.01.2013 / 16:28