Atribuir IPs DHCP para prefixos MAC específicos

5

Estou executando um servidor ISC DHCPd para minha rede, atendendo a várias sub-redes. Uma das coisas que eu gostaria de fazer é atribuir um intervalo específico de IPs aos hosts com um prefixo MAC comum (ex: 00:01:02). Além disso, as atribuições devem poder ser sobrepostas por atribuições com endereço fixo. Eu pesquisei, mas não encontrei nada definitivo.

Bônus se eu puder colocar a declaração em uma sub-rotina de sub-rede do meu dhcpd.conf (ela se encaixaria melhor no meu software de gerenciamento).

    
por Jon Bailey 30.10.2009 / 01:55

2 respostas

7

No meu sistema (debian lenny), preciso de binary-to-ascii para corresponder aos endereços mac. Neste exemplo (de trabalho) do meu dhcpd.conf, server247 está na classe "local", no entanto, dou a ele um endereço fixo que não está no pool. Eu recomendaria que os endereços fixos estejam em um intervalo separado dos endereços atribuídos dinamicamente (eles ainda podem estar na mesma sub-rede).

class "kvm" {
   match if binary-to-ascii(16,8,":",substring(hardware, 1, 2)) = "56:11";
}

class "local" {
   match if binary-to-ascii(16,8,":",substring(hardware, 1, 2)) = "52:54";
}

host meme {
 fixed-address 10.1.0.254;
}

host server247 {
  hardware ethernet 52:54:00:2f:ea:07;
  fixed-address 10.1.0.247;
}

subnet 10.1.0.224 netmask 255.255.255.224 {
  option routers 10.1.0.225;
  pool {
     allow members of "kvm";
     range 10.1.0.226 10.1.0.235;
  }
  pool {
     allow members of "local";
     range 10.1.0.236 10.1.0.240;
  }
  pool {
     # Don't use this pool. It is really just a range to reserve
     # for fixed addresses defined per host, above.
     allow known-clients;
     range 10.1.0.241 10.1.0.253;
  }
}

Para o seu exemplo, você faria:

match if binary-to-ascii(16,8,":",substring(hardware, 1, 3)) = "00:01:02";
    
por 30.10.2009 / 20:53
12

Algo parecido com isto:

class "specialK" {
    match if substring (hardware, 1, 3) = 00:01:02;
}
subnet 10.0.0.0 netmask 255.255.255.0 {
    pool {
        range 10.0.0.16 10.0.0.32;
        allow members of "specialK";
    }
}

hmm, é suposto ser (hardware, 0, 2) ou (.. 1, 3), testar. :)

    
por 30.10.2009 / 06:59