Como você evita uma liberação DHCP durante o desligamento?

3

Atualmente estou usando o Ubuntu 14.04, mas espero que isso seja aplicável a diferentes distros.

Eu gostaria de evitar uma liberação de DHCP durante o desligamento e optar pela expiração da concessão ou por uma renovação de DHCP (se necessário) na inicialização.

Isso é possível?

EDIT: Eu (usado para) ter um aplicativo distribuído que respondeu de forma diferente dependendo da resolução do nome de domínio. Se a máquina estiver on-line, mas o aplicativo não estiver disponível, o aplicativo em outras máquinas a entenderá como indisponível. No entanto, se o IP tiver sido liberado (por meio do desligamento), o aplicativo não conseguirá entender que ele está indisponível, mas trava ou gera um erro.

Infelizmente, não tenho mais a configuração para reproduzir o erro e não consigo me lembrar se ele suspendeu ou jogou um erro e qual foi o erro.

    
por neverendingqs 27.08.2014 / 16:56

3 respostas

2

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).

  1. escreva um cliente dhcp
  2. modifique um cliente dhcp com uma opção de linha de comando para alterar o comportamento.
  3. modificar um cliente dhcp só para ter o novo comportamento
  4. matar -9

Existem duas condições de corrida que a abordagem kill -9 introduz

  1. 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
  2. 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.

    
por 06.04.2015 / 21:25
1

Quando você obtém a concessão do DHCP, essa concessão é vinculada a um MAC-ID específico até o vencimento. É irrelevante se você desligar sua máquina ou não; tudo o que importa é se ele solicita novamente um endereço IP antes do vencimento da concessão.

Além disso, os mais servidores DHCP funcionam com expiração de lease 'soft', o que significa que quando uma concessão expirar oficialmente eles a manterão em cache até que e a menos que ativamente precisem distribuir esse particular endereço em outro lugar, ou eles recebem instruções para limpar seu cache.

(Nota: Alguns ISPs ativamente desativam esse recurso como medida de segurança - embora a sua eficácia tenda a ser discutível - ou impedir que os clientes executem seus próprios servidores a baixo custo quando não deveriam Se você está tentando alcançar o último, você pode querer olhar para os dyndns.)

Se você está recebendo um novo endereço IP toda vez que inicializa, você pode querer olhar para as configurações do servidor DHCP (se você tem acesso de administrador a ele) ou pelo menos perguntar sobre elas (se não tiver).

    
por 04.04.2015 / 08:24
0

Em vez de eliminar o cliente DHCP para impedir que ele libere a concessão, convém desligar a interface de rede antes do desligamento do sistema (por exemplo, ifconfig eth0 down ou algo parecido).

    
por 07.04.2015 / 13:52