ntpdate e ntpd falhando ao sincronizar o relógio no Linux

11

Estou com um problema estranho com um dos meus servidores. ntpde ntpdatefalha ao trabalhar, mas a depuração não mostra nenhum erro. No começo, pensei que talvez um firewall local ou de rede estivesse bloqueando a porta UDP 123, mas esse não é o caso - este servidor pode conversar com a porta UDP 123 (o protocolo ntp) com a Internet e obter respostas.

Deixe-me demonstrar o problema.

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

ntpq -pn pool.ntp.org - funciona, eu recebo dados de tempo 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 tempo 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, ele retorna: 30 Dec 02:41:29 ntpdate[19274]: no server suitable for synchronization found

Problema semelhante ao executar ntpd, ele não atualiza o relógio.

Depois que o ntpd é iniciado, ntpq -pntodos os refid ficam presos para sempre, o .INIT.que significa que eles não podem sincronizar.

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

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

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

Substituição de falha
fonte
2
Você pode esclarecer o que você entende por "servidor dedicado" - é hardware físico ou uma máquina virtual?
Shane Madden
Servidor dedicado = hardware físico. NÃO é uma máquina virtual.
Crash Override

Respostas:

13

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

Tente em ntpdate -bvez disso. Ele definirá o tempo, por mais irracional que possa parecer.

Você também pode precisar adicionar o -usinalizador, o que impedirá o ntpdateuso de portas privilegiadas (<1024). Observe que -uestá implícito por -d! E parece que -destá funcionando bem.

Se adicionar -ufaz a diferença entre trabalhar e não trabalhar, você tem um firewall no caminho que está causando esses problemas.

E, infelizmente , não parece possível ntpdusar uma porta irrestrita .

chutz
fonte
Ainda falha. ntpdate -b pool.ntp.orgresultados: 30 Dec 03:00:10 ntpdate[1341]: no server suitable for synchronization foundO sinalizador de depuração ntpdate que -dmostra os dados de depuração, mas na verdade não é sincronizado, e funciona: ntpdate -d pool.ntp.orgresultados:30 Dec 03:00:55 ntpdate[1343]: step time server 128.10.254.6 offset 228.030338 sec
Substituição de falha
@CrashOverride, atualizei minha resposta para tentar explicar por que -dpode estar funcionando enquanto, caso contrário, não está.
Chutz
1
ntpdate -b -utrabalho!!! Impressionante. Duas questões. O daemon ntpd ainda está falhando. Como faço para que isso não use portas privilegiadas? Segunda pergunta: POR QUE esta máquina está falhando com o ntp em portas privilegiadas quando todos os meus outros servidores não o fazem?
Crash Override
Humm, talvez haja um firewall bloqueando a porta UDP de origem 123 do meu servidor. Verificando isso. Mais uma vez, obrigado pela sua resposta.
Crash Override
Atualizei com um link para explicar que não é possível alterar a porta de origem ntpd. Desculpe, não procurei mais do que encontrar esse link.
Chutz
2

Você pode fornecer as seguintes saídas em 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 a partir de servidores do estrato 1 ou qualquer outra coisa.

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

Se não conseguirmos encontrar pistas desse conjunto de dados, 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 o alcance ir para 377 e, em seguida, pare o tcpdump. Isso deve dar mais pistas.

Soham Chakraborty
fonte
pastebin.com/Rw0nZTA8
Crash Override