Linux rdate: comprobar un servidor de tiempo y ajustar el reloj del sistema

rdate es un comando que obtiene la hora de un servidor de tiempo remoto para verificarla o ajustar el reloj del sistema una vez. Sin embargo, el significado de las opciones difiere para cada implementación con el mismo nombre, por lo que primero debe consultar el manual del programa instalado. Para la sincronización continua del tiempo, es mejor usar un servicio de sincronización de tiempo como chrony.

Diferencia entre rdate y la sincronización de tiempo

rdate es una herramienta que envía una solicitud a un servidor remoto cuando se ejecuta. Incluso si ajusta el reloj una vez, el comando en sí no sigue funcionando para corregir desviaciones. Si operas servicios sensibles al tiempo, como registros, tareas programadas o verificación de certificados, necesitas verificar el estado de la sincronización continua.

Los ejemplos a continuación utilizan OpenRdate como se documenta en el manual de rdate de Ubuntu 24.04. Las mismas opciones pueden significar cosas diferentes en otras implementaciones, así que no apliques estos ejemplos sin cambios.

Instalación y verificación de implementación

En Ubuntu, si puedes acceder al repositorio de paquetes, instálalo de la siguiente manera. Si dice que el paquete no se encuentra, verifica la versión de la distribución y el repositorio que estás usando.

sudo apt update
sudo apt install rdate

Después de la instalación, abre el manual para comprobar las opciones del programa real. La tecla de salida en el manual es q.

command -v rdate
man rdate

En OpenRdate, -p significa que muestra la hora del servidor sin cambiar el reloj, y -s significa que no la muestra. En otras implementaciones de rdate, -s podría significar que configura el reloj. Por lo tanto, no adivines el comportamiento solo por el nombre de la opción. En particular, con OpenRdate, ejecutar sin -p puede intentar configurar el reloj.

Solo comprobar la hora del servidor

El método de comunicación predeterminado de OpenRdate es el puerto TCP 37 del protocolo de tiempo RFC 868. No se puede asumir que un servidor NTP típico (Network Time Protocol) también proporcione RFC 868. El siguiente ejemplo consulta el servidor NTP del Physikalisch-Technische Bundesanstalt (PTB) en Alemania utilizando la opción -n de OpenRdate y el Protocolo Simple de Tiempo en Red (SNTP). Verifique la política de uso del servidor y la accesibilidad de la red, y si es necesario, reemplácelo con el servidor NTP especificado por su organización.

rdate -n -p ptbtime1.ptb.de

Cuando se recibe una respuesta normal, se muestra la hora remota y no se cambia el reloj del sistema local. SNTP utiliza el puerto UDP 123. Según el manual de OpenRdate, con un servidor NTP puede ser necesaria una corrección de segundos intercalares. Si la precisión es importante, consulte la opción -c del manual y las condiciones de la fuente de tiempo. Si no hay respuesta, verifique la dirección del servidor, DNS, firewall y si el servicio del servidor está en funcionamiento. Primero debe verificar el protocolo que el servidor realmente soporta, ya que llamarlo servidor de tiempo no significa que soporte todos los protocolos.

Verifique antes de ajustar el reloj una vez

Si la hora del sistema cambia repentinamente hacia adelante o hacia atrás, puede afectar el orden de los registros, las tareas programadas, la autenticación y los servicios en ejecución. Para los sistemas en operación, revise la fiabilidad de la fuente de tiempo y el impacto de los cambios, y asegúrese de un momento apropiado para las modificaciones. Además, verifique la política operativa actual para evitar alterar repetidamente un reloj que ya está gestionado por chrony u otros servicios de sincronización.

En OpenRdate, el siguiente comando intenta establecer el reloj del sistema a la hora del servidor SNTP sin -p. Se requieren privilegios de administrador y, antes de la ejecución, verifique la respuesta del servidor y la hora actual utilizando el comando de consulta mencionado anteriormente. Este ejemplo es para OpenRdate.

date
timedatectl
sudo rdate -n ptbtime1.ptb.de
date
timedatectl

Si un comando falla, verifique si hay errores y no asuma que tuvo éxito. date y timedatectl ayudan a verificar la hora local y la zona horaria. El hecho de que la zona horaria mostrada en la pantalla sea diferente no significa necesariamente que la hora de referencia del reloj sea incorrecta. Los cambios de hora no se pueden revertir fácilmente como una consulta, por lo que en lugar de restablecer ciegamente a valores anteriores, sincronícese con una fuente de tiempo confiable según los procedimientos operativos.

Verificar la sincronización continua

Ejecutar rdate una sola vez no configura la sincronización continua. En un entorno systemd, puede verificar el servicio de sincronización y el estado del reloj con el siguiente comando.

timedatectl status

Ese NTP service que se muestra como activo y System clock synchronized que se muestra como sincronizado son estados diferentes. Incluso si el servicio está en funcionamiento, si no puede alcanzar un servidor, puede que no esté sincronizado. Los elementos mostrados pueden variar según el sistema y la versión.

En los sistemas que usan chrony, puede verificar el estado y las fuentes de tiempo con chronyc tracking y chronyc sources -v. Si no puede usar los comandos, revise la instalación, el estado del servicio y la configuración de la distribución. En la documentación de sincronización de tiempo de chrony de Red Hat puede ver cómo verificar las fuentes y el estado de sincronización.