Atribuição de blocos DHCP on-the-fly


8

Temos um grande número de clientes que se conectam à nossa máquina DHCP. Queremos atribuir alguns deles a um bloco IP diferente, que é roteado com menor prioridade. A cada renovação de concessão de DHCP, gostaríamos de verificar um banco de dados e decidir a qual bloco IP gostaríamos de atribuir um cliente.

Existe uma maneira de um servidor DHCP executar um script, procurar em um banco de dados ou executar algum código dinâmico ao decidir qual endereço atribuir em qual pool? Cada cliente é identificado exclusivamente pela opção82, também conhecida como "Opção de informações do agente de retransmissão DHCP".


Qual servidor DHCP em que sistema operacional?
Zypher

Parece uma configuração do tipo operadora ... é esse o caso? Eu ficaria surpreso se algo assim já existisse nas ferramentas abertas. Provavelmente eu mesmo escreveria. Pergunta muito interessante!
MikeyB

@Zypher: Sistema operacional Debian, dhcpd regular @ MikeyB: Sim, configuração de operadora
Andomar

Respostas:


2

Idealmente, você modificaria o dhcpd para oferecer suporte à atribuição de endereços com base na Opção82, equivalente às linhas de "hardware" nos objetos do host. Eu fiz isso com o dhcpd do OpenBSD quando trabalhei em um ISP, que possui uma estrutura interna mais simples do que o isc-dhcpd.

Se você não está em posição de fazer isso, observe omapi (3) e omshell (1); você usaria o OMAPI para criar dinamicamente objetos "class" e "pool", para implementar a sugestão de Zypher. Acabei de verificar dhcpd.he a classestrutura possui um OMAPI_OBJECT_PREAMBLE, portanto isso deve ser possível. Cuidado que a documentação do OMAPI pode ser um pouco ... acanhada.


A solução sugerida por Zypher é a que temos atualmente. E eu não acho que os administradores de sistemas apreciariam uma versão editada do dhcpd. Mas OMAPI parece ser uma boa alternativa, obrigado!
Andomar

3

Portanto, eu não fiz isso com a opção 82, mas sua melhor aposta seria usar a classificação em isc dhcpd.

O que você faria é configurar uma classe como:

class "userclass1" { 
    match if substring(option agent.circuit-id, 2, 2) = "<your_id1>";
}
class "userclass2" { 
    match if substring(option agent.circuit-id, 2, 2) = "<your_id2>";
}

Em seguida, na sua declaração de pool:

pool {
  allow members of "userclass1";
  range 10.0.0.11 10.0.0.50;
}
pool {
   allow members of "userclass2";
   range 10.0.0.51 10.0.0.100;
}

Referência: dhcpd.conf

Isso deve pelo menos colocá-lo no caminho certo, não tenho meu servidor de jogo para testá-lo, mas fiz algo semelhante com outras opções.


Não precisaríamos redefinir o dhcpd toda vez que houver uma alteração? É possível ter a associação ao pool determinada dinamicamente por uma chamada de script?
Andomar 15/07/10

@Andomar: Sim, você faria. Infelizmente eu não penso assim - mas eu poderia ser muito errado lá
Zypher


0

Uma maneira de fazer isso é atribuir esses clientes a uma VLAN separada; o endereço DHCP que esses clientes obtêm estará automaticamente em um pool diferente.


Na verdade, mudar a VLAN é o que gostaríamos de evitar. VLAN muda confundir modems do cliente e levar um longo tempo para executar
Andomar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.