quinta-feira, 1 de setembro de 2011

O misterioso caso do DHCP

Olá pessoas! Bem vindo ao nosso primeiro post. Espero poder compartilhar com vocês informações úteis e que ajudem na resolução de problemas do dia a dia em ambientes Microsoft.

Neste primeiro post, vamos acompanhar um caso bem curioso, onde o administrador da rede me reportou que o serviço de DHCP estava parando todos os dias pela manhã, e com isso centenas de usuários ao chegarem ao trabalho tinham problemas de logon. Resultado: todo mundo sem trabalhar! \o/

Caso queira conhecer a fundo o como funciona o serviço de DHCP o link abaixo é leitura obrigatória:
How DHCP works - http://technet.microsoft.com/pt-br/library/cc780760(WS.10).aspx (em inglês)

Voltando ao problema, olhando a console de serviços do Windows, verificamos que o serviço de DHCP estava com o status "stopped", e clicando em start o serviço era iniciado normalmente, sem nenhum problema, até o dia seguinte, onde o mesmo parava novamente.

Fomos atrás de mais pistas que nos levassem a causa desse comportamento, esperava que o serviço de DHCP tivesse um "crash" ou algo do tipo, mas olhando o log de Application do Windows não encontrei nada que nos provasse isso.
Os eventos de System, também não nos mostravam informações que nos dessem pistas do problema. Para piorar, por algum motivo nem os logs de que o serviço foi iniciado ou parado eram logados nesse servidor.

Verificando os logs de auditoria do DHCP, (que ficam por padrão em C:\Windows\System32\Dhcp - se estiverem ativados, claro!) podíámos ver que o serviço parava:

25,05/24/07,21:39:31,0 leases expired and 8 leases deleted,,,, 25,05/24/07,21:39:31,0 leases expired and 0 leases deleted,,,, 11,05/24/07,21:49:53,Renew,10.226.149.19,machinename.contoso.msft,0013D32435D, 11,05/24/07,22:24:09,Renew,10.226.161.54,machinename02.contoso.msft,000009D9B9EB, 01,05/24/07,22:30:01,Stopped,,,,

Isso se repetiu por diversos dias, e sempre no mesmo horário.

Minha primeira ação foi atualizar os binários do DHCP para uma versão mais atual, com um update que atualizasse o arquivo dhcpssvc.dll para uma versão mais atual. a versão na desse arquivo na maquina problemática era 5.2.3790.3959

Instalamos o Kb 950574 - que atualizou o arquivo para a versão 5.2.3790.4257.

Porém no dia seguinte o problema aconteceu novamente, e no mesmo horário!

Essa repetição programada, me fez lembrar de alguma tarefa agendada que pudesse estar rodando todos os dias nesse horário.

Perguntei ao administrador da rede, que me confirmou a existência de um script de backup do DHCP a qual estava justamente programada para aquele horário.

O script em si, parecia inofensivo (e realmente era! Explicarei o porquê depois... mais abaixo) com apenas a seguinte linha:

netsh dhcp server export C:\Scripts\DHCP\servername.txt ALL

Mas quando rodávamos o script manualmente, o serviço não parava!

Depois de muita paciência, identificamos que o comando só causava uma parada no serviço de DHCP após modificarmos algo no DHCP.

Se nada fosse modificado, o script rodava normalmente.
Bom, já descobrimos a causa pelo qual o serviço parava todos os dias pela manhã, mas porquê o inofensivo script de backup parava o serviço de DHCP se alguma modificação fosse realizada na console do DHCP? Além disso as alterações realizadas na console eram perdidas.

A solução de contorno (workaround) era deixar por enquanto essa tarefa desabilitada.

Realizei alguns testes em laboratório e não conseguimos reproduzir este problema. Até que encontramos o seguinte Kb da Microsoft.
http://support.microsoft.com/kb/938134 - After you restart the DHCP Server service, some DHCP options disappear on a Windows Server 2003-based DHCP server

Pensei comigo mesmo, achamos o problema! Intalamos a atualização e retomamos o teste. Nada feito, o problema persistia.

Comecei a imaginar que a database do DHCP estivesse corrompida.
Desfragmentamos a base com o comando: jetpack dhcp.mbd tmp.mdb

Importamos de volta para o DHCP, e após novos testes, o mesmo problema!

Resolvi importar a base do DHCP para um ambiente de laboratório e verificar com mais calma.

Existiam diversos escopos, e verificar um à um foi bem trabalhoso.



Verificando escopo por escopo identificamos uma reserva para o IP 10.226.149.0, o qual seria o endereço de rede para a rede 10.226.149.0/24
Como podemos ver na imagem abaixo:



Excluímos esta reserva do DHCP e o problema foi resolvido. Foi possível executar o script sem que o serviço tivesse que ser iniciado manualmente e as configurações modificadas na console do DHCP foram salvas!

Conclusão:

O script não estava causando o problema. Ele apenas não conseguia realizar o backup da base do DHCP por haver uma configuração errada no DHCP. No nosso caso uma reserva de IP.

A quantidade de escopos neste caso dificultou que verificássemos logo de início uma configuração incorreta do DHCP.

Portanto lembrem-se, caso tenham algum problema similar, verifiquem as configurações do DHCP e se possível documentem, toda e qualquer alteração realizada no ambiente.

Com a documentação em dia, seria fácil verificar a última alteração realizada e rastrear o problema com maior rapidez.

Espero que tenham gostado e que esse artigo possa ajuda-los em um possível troubleshooting de DHCP.

Abraços e até a próxima!

Luciano Brena

Um comentário:

  1. Que pagueta!!! Parece o Blog do Renato, o misterioso caso do DHCP. KKKKKKKKKKKKKKKKKKK.

    ResponderExcluir