ntpdate e ntpd não conseguem sincronizar o relógio no Linux

11

Eu tenho um problema estranho com um dos meus servidores. ntpd e ntpdate não funcionam, mas a depuração não mostra nenhum erro. No começo eu pensei que talvez um firewall local ou de rede estivesse bloqueando a porta UDP 123, mas esse não é o caso - esse servidor pode falar a porta UDP 123 (o protocolo ntp) para a Internet e obter respostas.

Deixe-me demonstrar o problema.

date -s "30 DEC 2012 02:30:00" - funciona, para que eu possa definir o relógio com sucesso sem erros.

ntpq -pn pool.ntp.org - funciona, eu obtenho dados de hora detalhados do servidor de horas e prova que os pacotes UDP estão funcionando.

ntpdate -d pool.ntp.org - o modo de depuração funciona, mostra uma tonelada de dados de depuração e mostra o deslocamento de hora atual: 30 Dec 02:38:56 ntpdate[19267]: step time server 208.97.140.69 offset 228.234554 sec

Tudo parece normal, até: ntpdate pool.ntp.org - após uma pausa de 4,7 segundos, retorna: 30 Dec 02:41:29 ntpdate[19274]: no server suitable for synchronization found

Problema semelhante a correr ntpd , não atualiza o relógio.

Depois que o ntpd for iniciado, ntpq -pn resulta em todos os refid ficarem colados em .INIT. , o que significa que eles não podem sincronizar.

/ var / lib / ntp / drift é a configuração do driftfile no ntp.conf, que é chmod 644 e pertence ao ntp: ntp, o mesmo que todos os meus outros sistemas.

Eu tentei uma dúzia de outros servidores de tempo ntp, desativei o firewall iptables e confirmei que o datacenter não está filtrando o tráfego do udp. Alguma idéia do que está impedindo que o ntpd e o ntpdate sincronizem meu relógio?

Este é o CentOS 6.3 x64 em um servidor dedicado com CPU Intel.

    
por Crash Override 30.12.2012 / 09:54

2 respostas

12

ntpdate (e ntpd ) recusará (facilmente) definir a hora se o deslocamento for muito alto. Ambos os aplicativos tentarão lentamente ajustar o seu tempo, para não confundir muito bem o seu sistema ou qualquer aplicativo que não consiga lidar com grandes saltos de tempo.

Experimente ntpdate -b . Vai definir o tempo, não importa o quão irracional possa parecer.

Você também pode precisar adicionar o sinal -u , o que impedirá que ntpdate use portas privilegiadas (< 1024). Observe que -u está implícito em -d ! E parece que -d está funcionando bem.

Se adicionar -u fizer diferença entre trabalhar e não trabalhar, você terá um firewall sobre o modo como está causando esses problemas.

E, infelizmente, não parece ser possível fazer ntpd use uma porta irrestrita .

    
por 30.12.2012 / 09:58
2

Você pode fornecer as seguintes saídas no pastebin.

cat /etc/ntp.conf
cat /etc/sysconfig/ntpd
ntpq -pn
ntpdc -c sysstat
ntpdc -c kerninfo
ntpdc -c loopinfo
ntpdate -d <time-server-IP>
ntptrace

Você está sincronizando de servidores do estrato 1 ou qualquer outra coisa.

Nenhum servidor adequado para sincronização significa o que ele diz, que a comunicação entre o cliente e o servidor não pode ser estabelecida.

Se não podemos encontrar pistas a partir deste conjunto de dados, o tcpdump pode ser necessário para ver onde o pacote está sendo perdido.

tcpdump -s0 -i ethX -p udp -w /tmp/ntp.pcap

Pare e inicie o daemon ntpd e aguarde até que o alcance vá para 377 e depois pare o tcpdump. Isso deve dar mais pistas.

    
por 30.12.2012 / 18:09