Icono del sitio Blog personal de Guido Cutipa

Cómo sincronizar la hora en Ubuntu/Debian usando systemd-timesyncd

analog clock in macro photography

Photo by Tima Miroshnichenko on Pexels.com

La sincronización de la hora de un sistema operativo es parte integral de las implementaciones de software modernas. La sincronización de tiempo puede ayudar a garantizar que sus registros se registren en el orden correcto o que las actualizaciones de la base de datos se apliquen correctamente, previniendo problemas como la corrupción de datos u otros problemas que son difíciles de depurar.

Afortunadamente, Ubuntu 18.04, 20.04 y 22.04 tienen sincronización horaria integrada y activada de forma predeterminada mediante el servicio timesyncd de systemd.

Este artículo asume que posees los conocimientos mínimos de Linux, sabes cómo usar la terminal, y lo más importante, conoces tu servidor. La configuración es simple y se asume que estás ejecutando la terminal con la cuenta de root (si se utiliza Ubuntu se puede utilizar el comando «sudo su» para acceder al usuario root), si no es así, deberás adicionar ‘sudo’ a los comandos para obtener los privilegios de root.

Configuración

El primer paso a realizar es la verificación de la configuración horaria del sistema operativo con el comando date:

date

Con el comando anterior se obtendrá un resultado similar al siguiente:

Mon 18 Apr 2022 02:10:03 AM -04

El el caso de que la zona horaria no se la correcta, se la debe cambiar, para esto es posible ver las zonas horarias disponibles con el comando:

timedatectl list-timezones

Para configurar la zona horaria se puede utilizar el comando timedatectl set-timezone reemplazando la parte resaltada con la zona horaria que encontró en la lista anterior:

timedatectl set-timezone America/La_Paz

Sincronización horaria con un servidor NTP

Se puede usar timesyncd en lugar de ntpd.timesyncd funciona de manera similar al conectarse a los mismos servidores de tiempo NTP, pero es liviano.

Para verificar la configuración se puede utilizar el comando:

timedatectl status

Si ne el anterior resultado NTP service se muestra como inactivo, se puede activar mediante el comando:

timedatectl set-ntp on

Para configurar el servidor NTP se debe verificar que el servicio systemd-timesyncd este instalado mediante el siguiente comando:

systemctl start systemd-timesyncd 

Si se obtiene un resultado similar al siguiente, entonces el servicio no está instalado:

Failed to start systemd-timesyncd.service: Unit systemd-timesyncd.service not found.

Para instalarlo ejecutar el comando:

apt install systemd-timesyncd

Una vez instalado, se debe modificar el archivo timesyncd.conf para configurar el servidor NTP:

nano /etc/systemd/timesyncd.conf

Solo es necesario agregar el IP del servidor NTP si se tiene un servidor secundario se lo puede agregar en el atributo FallbackNTP, el contenido del archivo sería similar al siguiente:

[Time]
NTP=192.168.1.2
FallbackNTP=ntp.ubuntu.com
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048

Para aplicar los cambios realizar será necesario reiniciar el servicio:

systemctl restart systemd-timesyncd.service

Para validar que se esta realizando la sincronización ejecutaremos:

systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
     Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-04-14 00:58:40 -04; 2 days ago
       Docs: man:systemd-timesyncd.service(8)
   Main PID: 837 (systemd-timesyn)
     Status: "Initial synchronization to time server 192.168.1.2:123 (192.168.1.2)."
      Tasks: 2 (limit: 19104)
     Memory: 2.6M
     CGroup: /system.slice/systemd-timesyncd.service
             └─837 /lib/systemd/systemd-timesyncd

Apr 14 00:58:40 srv01 systemd[1]: Starting Network Time Synchronization...
Apr 14 00:58:40 srv01 systemd[1]: Started Network Time Synchronization.
Apr 14 00:58:46 srv01 systemd-timesyncd[837]: Network configuration changed, trying to establish connection.
Apr 14 00:58:47 srv01 systemd-timesyncd[837]: Initial synchronization to time server 192.168.1.2:123 (192.168.1.2).
Apr 14 00:59:13 srv01 systemd-timesyncd[837]: Initial synchronization to time server 192.168.1.2:123 (192.168.1.2).

Si el servicio se muestra como active (running), pero no se muestra que se esté sincronizando con el IP del servidor NTP, entonces existe un error en la configuración.

Si se esta utilizando un servidor Windows como servidor NTP, en algunas ocasiones puede producirse un problema de sincronización para solucionarlo solo se deberá modificar el valor de RootDistanceMaxSec, el contenido del archivo /etc/systemd/timesyncd.conf quedaría de la siguiente manera:

[Time]
NTP=192.168.1.2
FallbackNTP=ntp.ubuntu.com
RootDistanceMaxSec=30
PollIntervalMinSec=32
PollIntervalMaxSec=2048

Para obtener más información, puede visitar la documentación oficial https://manpages.ubuntu.com/manpages/xenial/man1/timedatectl.1.html

Salir de la versión móvil