Problemas relacionados a servidores NTP

Estes são alguns problemas que encontrei em servidores NTP que administro e que resolvi (após bater cabeça por um tempinho ...). Ficam aqui as soluções para quem precisar:

Erro:
sendto(200.160.0.8): Bad file descriptor

Sintomas:
Aparecem linhas como as abaixo no seu log de sistema (geralmente no arquivo /var/log/messages ou /var/log/syslog):

Jul 14 10:21:39 server ntpd[29169]: bind() fd 4, family 2, port 123, addr 0.0.0.0, in_classd=0 flags=8 fails: Address already in use
Jul 14 10:21:39 server ntpd[29169]: bind() fd 4, family 10, port 123, addr ::, in6_is_addr_multicast=0 flags=0 fails: Address already in use
Jul 14 10:21:39 server ntpd[29169]: bind() fd 4, family 2, port 123, addr 127.0.0.1, in_classd=0 flags=0 fails: Address already in use
Jul 14 10:21:39 server ntpd[29169]: bind() fd 4, family 2, port 123, addr 172.20.32.6, in_classd=0 flags=8 fails: Address already in use
Jul 14 10:21:40 server ntpd[29169]: sendto(200.160.0.8): Bad file descriptor
Jul 14 10:21:41 server ntpd[29169]: sendto(200.189.40.8): Bad file descriptor
Jul 14 10:32:55 server ntpd[29368]: sendto(200.160.0.8): Bad file descriptor
Jul 14 10:32:57 server ntpd[29368]: sendto(200.192.232.8): Bad file descriptor
Jul 14 10:32:57 server ntpd[29368]: sendto(200.160.0.8): Bad file descriptor
Jul 14 10:32:59 server ntpd[29368]: sendto(200.192.232.8): Bad file descriptor
Jul 14 10:32:59 server ntpd[29368]: sendto(200.189.40.8): Bad file descriptor


Onde server é o nome do seu servidor e os IPs entre parênteses são os IPs dos servidores públicos configurados nos arquivos de configuração (os IPs acima são do projeto brasileiro NTP.br, que disponibiliza servidores atualizados pelo Relógio Atômico do Observatório Nacional - http://www.on.br - , que por sua vez é o responsável pela Hora Legal Brasileira).

Causa:
Existe mais de um processo do servidor NTP (ntpd) rodando na máquina.

Solução:
Pare o serviço do NTP. Em distribuições da família Debian (Ubuntu, Kurumin, Knoppix, etc) e da família Red Hat (Fedora, Mandriva, CentOS, etc) normalmente isso é realizado com /etc/init.d/ntp stop. Em outras distribuições (SlackWare, Gentoo, ?) o processo pode ser diferente, mas não muito. Após parar o serviço, execute um killall ntpd para matar quaisquer processos que possam ter restado e inicie novamente o serviço NTP com /etc/init.d/ntp start (ou comando equivalente em sua distribuição) e o problema deve estar resolvido. Obs: todos os comandos acima necessitam de permissões de root para serem executados.

Dica:
Observe a seguinte linha, retirada do trecho de log acima:

Jul 14 10:21:39 server ntpd[29169]: bind() fd 4, family 2, port 123, addr 0.0.0.0, in_classd=0 flags=8 fails: Address already in use

Em programas com suporte a rede (geralmente programas servidores), bind() é o ato de associar um programa ou processo a uma determinada porta de rede. Observe que o próprio programa já mostra o erro que está ocorrendo: Address already in use, ou seja, o endereço já está em uso por outro processo. Esse tipo de erro é um tanto comum e a mensagem costuma vir parecida com essas, facilitando assim encontrar a solução.


Erro:
O serviço exibe uma mensagem de erro ao iniciar, sobe mas não sincroniza a hora com os servidores externos.

Sintomas:

Aparecem linhas como as abaixo no seu log de sistema (geralmente no arquivo /var/log/messages ou /var/log/syslog):
Jul 14 10:38:11 server ntpdate[30521]: no server suitable for synchronization found
Jul 14 10:38:11 server ntpd:  failed
Jul 14 10:38:11 server ntpd[30525]: ntpd 4.2.0a@1.1190-r Sat May  5 12:55:34 EDT 2007 (1)
Jul 14 10:38:11 server ntpd: ntpd startup succeeded
Jul 14 10:38:18 server ntpd[30525]: kernel time sync disabled 0041
Jul 14 10:38:28 server ntpd[30525]: kernel time sync enabled 0001

Causa:
Servidores inválidos ou inexistentes referenciados nos arquivos de configuração /etc/ntp/ntpservers /etc/ntp/step-tickers).

Solução:
Haviam servidores NTP internos que já haviam sido removidos da rede, mas continuavam configurados nos arquivos citados acima. Com isso, mesmo com os servidores do projeto NTP.br no arquivo de configuração principal, o serviço falhava e não se recuperava. Após remover os IPs dos servidores, o serviço passou a funcionar como um relógio ;-)

Nenhum comentário: