ntpdate y ntpd no pueden sincronizar el reloj en Linux

11

Tengo un problema extraño con uno de mis servidores. ntpdy ntpdateno funcionan, pero la depuración no muestra ningún error. Al principio pensé que tal vez un firewall local o de red estaba bloqueando el puerto UDP 123, pero ese no es el caso: este servidor puede comunicar el puerto UDP 123 (el protocolo ntp) a Internet y obtener respuestas.

Déjame demostrar el problema.

date -s "30 DEC 2012 02:30:00" - funciona, por lo que puedo configurar el reloj con éxito sin error.

ntpq -pn pool.ntp.org - funciona, obtengo datos detallados del tiempo del servidor de tiempo, y demuestra que los paquetes UDP están funcionando.

ntpdate -d pool.ntp.org - el modo de depuración funciona, muestra una tonelada de datos de depuración y muestra el desplazamiento de tiempo actual: 30 Dec 02:38:56 ntpdate[19267]: step time server 208.97.140.69 offset 228.234554 sec

Todo parece normal, hasta que: ntpdate pool.ntp.org- después de una pausa de 4.7 segundos, devuelve: 30 Dec 02:41:29 ntpdate[19274]: no server suitable for synchronization found

Problema similar al ejecutarse ntpd, no actualiza el reloj.

Después de que se inicia ntpd, los ntpq -pnresultados de todas las devoluciones se quedan para siempre, lo .INIT.que significa que no pueden sincronizarse.

/ var / lib / ntp / drift es la configuración del archivo de deriva en ntp.conf, que es chmod 644 y es propiedad de ntp: ntp, igual que todos mis otros sistemas.

Probé una docena de otros servidores de hora ntp, desactivé el firewall de iptables y confirmé que el centro de datos no está filtrando el tráfico udp. ¿Alguna idea de qué impide que ntpd y ntpdate sincronicen mi reloj?

Este es CentOS 6.3 x64 en un servidor dedicado con CPU Intel.

Anulación de choque
fuente
2
¿Puede aclarar lo que quiere decir con "servidor dedicado": hardware físico o máquina virtual?
Shane Madden
Servidor dedicado = hardware físico. NO es una máquina virtual.
Crash Override

Respuestas:

13

ntpdate(y ntpd) se negará a (fácilmente) establecer el tiempo si el desplazamiento es demasiado alto. Ambas aplicaciones intentarán ajustar lentamente su tiempo, para no confundir su sistema o cualquier aplicación que no pueda manejar saltos de gran tamaño muy bien.

Intenta en su ntpdate -blugar. Fijará el tiempo sin importar cuán irrazonable pueda parecer.

También es posible que deba agregar el -uindicador, lo que evitará el ntpdateuso de puertos privilegiados (<1024). Tenga en cuenta que -uestá implícito en -d! Y parece que -destá funcionando bien.

Si agregar -uhace una diferencia entre trabajar y no trabajar, entonces tiene un firewall en el camino que está causando estos problemas.

Y desafortunadamente no parece posible ntpdutilizar un puerto sin restricciones .

chutz
fuente
Aún falla. ntpdate -b pool.ntp.orgresultados: 30 Dec 03:00:10 ntpdate[1341]: no server suitable for synchronization foundel indicador de depuración ntpdate, que -dmostrará datos de depuración pero no se sincronizará realmente, y eso funciona: ntpdate -d pool.ntp.orgresultados:30 Dec 03:00:55 ntpdate[1343]: step time server 128.10.254.6 offset 228.030338 sec
Anulación
@CrashOverride, actualicé mi respuesta para tratar de explicar por qué -dpuede estar funcionando mientras que, de lo contrario, no está funcionando.
chutz
1
ntpdate -b -u¡¡¡trabajos!!! Increíble. Dos preguntas. El ntpd daemon sigue fallando, ¿cómo hago para que no use puertos privilegiados? Segunda pregunta, ¿POR QUÉ esta máquina falla con ntp en puertos privilegiados cuando todos mis otros servidores no lo hacen?
Crash Override
Humm, tal vez hay un firewall que bloquea el puerto UDP de origen 123 de mi servidor. Comprobando eso. De nuevo, gracias por tu respuesta.
Crash Override
Actualicé con un enlace para explicar que no es posible cambiar el puerto fuente ntpd. Lo siento, no he buscado más que encontrar ese enlace.
chutz
2

¿Puede proporcionar los siguientes resultados en 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

¿Estás sincronizando desde los servidores del estrato 1 o cualquier otra cosa?

Ningún servidor adecuado para la sincronización significa lo que dice, que no se puede establecer la comunicación entre el cliente y el servidor.

Si no podemos encontrar pistas de este conjunto de datos, es posible que se requiera tcpdump para ver dónde se pierde el paquete.

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

Deténgase e inicie ntpd daemon y espere a que llegue a 377 y luego detenga el tcpdump. Eso debería dar más pistas.

Soham Chakraborty
fuente
pastebin.com/Rw0nZTA8
Crash Override