A maioria dos clientes unix dhcp é educada, pois eles sempre limpam a si mesmos e liberam a concessão quando saem. Na maioria dos casos, isso faz com que as coisas fluam melhor, pois o servidor pode identificar facilmente se uma concessão está sendo usada ativamente, mas isso não é necessário para que o protocolo funcione. Existem três maneiras de fazer o que você quer de maneira limpa (e uma maneira feia que simplesmente funciona).
- escreva um cliente dhcp
- modifique um cliente dhcp com uma opção de linha de comando para alterar o comportamento.
- modificar um cliente dhcp só para ter o novo comportamento
- matar -9
Existem duas condições de corrida que a abordagem kill -9 introduz
- deve expirar uma concessão depois que você matou o cliente dhcp, mas antes que o desligamento seja concluído, você usará uma concessão expirada
- se você matar o cliente dhcp durante uma renovação, o comportamento é indefinido.
Por que isso funciona: O comportamento normal de um cliente dhcp com uma concessão válida é passar a maior parte do tempo dormindo, mas ele só acorda para renovar o contrato ou liberá-lo para o encerramento. Quando recebe um sinal para desligar, libera a concessão e sai. O sinal -9 não é acessível e resulta na rescisão imediata sem qualquer limpeza, contornando a liberação da concessão. A maioria (embora não todos) dos clientes dhcp apenas renovará uma concessão se eles forem iniciados com uma concessão válida em seu cache.