ntpd: time correction of X seconds exceeds sanity limit (1000); set clock manually to the correct UTC time

Con la configuración por defecto de NTP, si la diferencia entre la hora establecida en el servidor y la real es muy grande podemos recibir el siguiente error en los logs y detectar que no hay sincronización con el pool:

ntpd[1077]: time correction of 32410331 seconds exceeds sanity limit (1000);
 set clock manually to the correct UTC time.

La solución que el propio mensaje del log propone es establecer la hora manualmente y posteriormente, al ser reducida la diferencia de sincronización con la hora real todo funcionará correctamente:

# date -s "Thu Aug 17:42:00....."

En principio es una solución totalmente válida, pero si queremos asegurarnos de que el demonio ntpd fuerce la sincronización aunque la diferencia sea muy grande tenemos que especificar la siguiente línea al comienzo del fichero de configuración /etc/ntpd.conf:

tinker panic 0

Reiniciamos el demonio ntpd:

# /etc/init.d/ntpd restart

Y si esperamos un poco veremos la sincronización correcta, con el intervalo de diferencia entre ambas horas:

Aug  2 07:54:11 xxxxxxx ntpd[12709]: synchronized to 69.164.217.193, stratum 3
Aug  2 07:54:11 xxxxxxx ntpd[12709]: time reset +32412621.083528 s
Aug  2 07:54:11 xxxxxxx ntpd[12709]: kernel time sync status change 2001

Esto es útil en máquinas virtuales (por aquello de las suspensiones y demás), aunque por que no, también puede serlo en servidores físicos.