¿Cuál es la forma recomendada de sincronizar la hora con NTP?

18

Esta pregunta ha surgido varias veces de forma localizada, esta pregunta está destinada a proporcionar el mejor / método preferido para sincronizar el reloj de un sistema usando NTP.

La solución debe manejar múltiples problemas correctamente, como:

  1. Corrija el tiempo de arranque rápidamente donde el reloj tiene una gran inclinación.

  2. Proporcione una configuración que proteja y / o corrija las situaciones en las que el reloj a veces puede desarrollar un gran sesgo con el tiempo.

  3. Una solución robusta que puede manejar y sincronizar la hora rápidamente cuando surgen ciertos problemas, tales como: "no se pudo acceder al servidor de tiempo durante el arranque" o "no se puede acceder a Internet durante el arranque".

La solución ideal sería un único archivo de configuración NTP que sea capaz de manejar todo esto.

Referencias

Muchas de las piezas que proporcionarán la solución "definitiva" se extienden por todo el sitio de U&L en preguntas como estas:

Es probable que haya otros, pero estos son los que he visto que me vienen a la mente como relevantes.

slm
fuente
1
discusión de chat sobre el alcance de esta pregunta
Gilles 'SO- deja de ser malvado'
1
FYI: Planeando trabajar en una respuesta integral a esto. Vea el registro de chat que comienza en chat.stackexchange.com/transcript/message/11350138#11350138
derobert el
# 2 no debería suceder si ntpd se está ejecutando
dfc
@dfc: esto puede suceder cuando una máquina virtual está en pausa y luego se reanuda, hay otras situaciones en las que también puede suceder.
slm
@slm "se desarrolla" significa un salto de tiempo en el sesgo después de reiniciar VM? Parece que dentro de un par de horas después del reinicio, ntpd debería tener el sesgo bajo control. Definitivamente no lo empeora. ¿Cuáles son las otras situaciones?
dfc

Respuestas:

6

Como no puede corregir grandes desviaciones en el tiempo usando ntp (a menos que tenga algunas horas para que el reloj se ponga al día o se desacelere), hago esto:

servicio ntpd stop
ntpdate us.pool.ntp.org
servicio ntpd start

Lo crono por una vez al día, todos los días. También puse ntpdate en un script de inicio para que se ejecute antes de que ntp comience después del arranque, ya que los reinicios y los ciclos de encendido son los eventos más probables / frecuentes que alteran la hora del sistema.

Andrés
fuente
Si ntpd se ejecuta correctamente, ¿por qué necesita detenerlo e iniciarlo? Esto parece una idea terrible.
DFC
3
ntpdate no funcionará si ntpd se está ejecutando.
Grizly
4

Lo que estás buscando es ntpdcon la --panicgateopción.

La opción panicgate permite que el primer ajuste después de que ntpdcomience sea de cualquier tamaño. Esto es exactamente para el caso de uso que describió cuando aparece una máquina y su reloj es muy inexacto. Cuando ntpd comienza con esta opción habilitada, puede tomar un momento encontrar un servidor y establecer una sincronización con él.

Esa opción en sí misma resuelve su artículo # 1.

# 2 es vainilla ntpd. Ntpd mantiene un archivo de deriva que es la tasa de desviación del reloj de su sistema.

# 3 también es lo mismo que # 1. La --panicgateopción no se limita a inmediatamente cuando se inicia ntpd, se limita a "el primer ajuste", siempre que ese ajuste sea.

Patricio
fuente
escribiendo ntpd --panicgate y luego date no hace absolutamente nada
AlxVallejo
¿Modifica los archivos init para pasar -go hay una opción equivalente para configurar ntp.conf?
Jérôme
Me acabo de dar cuenta de -gque ya se usa de manera predeterminada en mi instalación de Debian, pero no sé en qué archivo init / config se hace esto.
Jérôme
2

Use chronyd / chronyc en lugar de ntp / ntpdate. Ya es el método predeterminado en fedora y, supongo, estará en RHEL 7.0 tan pronto como esté listo.

La documentación se puede encontrar en http://chrony.tuxfamily.org/

objetivo
fuente