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".
Respostas:
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.h
e aclass
estrutura possui umOMAPI_OBJECT_PREAMBLE
, portanto isso deve ser possível. Cuidado que a documentação do OMAPI pode ser um pouco ... acanhada.fonte
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:
Em seguida, na sua declaração de pool:
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.
fonte
Talvez você possa começar por aqui:
http://blog.nominet.org.uk/tech/2005/12/21/using-omapi-object-management-application-programming-interface/
Nunca usei, mas com um pouco de script acho que poderia funcionar.
EDITAR
man omshell (1) daria outros exemplos
fonte
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.
fonte