Sincronización de tiempo con Chrony

Introducción

La sincronización horaria es crítica en servidores Linux: afecta a los logs, la autenticación (Kerberos, certificados TLS), las bases de datos y los sistemas distribuidos. Chrony es la implementación recomendada de NTP en sistemas modernos, sustituyendo al clásico ntpd. Es más preciso, converge más rápido y funciona bien en sistemas que no están encendidos continuamente.

Instalación


# apt install chrony               # Debian/Ubuntu
# dnf install chrony               # RHEL/Rocky
# systemctl enable --now chronyd
$ systemctl status chronyd
          

Configuración: /etc/chrony.conf

Configuración de cliente (sincronizar contra servidores externos):


# /etc/chrony.conf
pool 2.debian.pool.ntp.org iburst       # Debian/Ubuntu
pool 2.rhel.pool.ntp.org  iburst        # RHEL/Rocky

driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
          
  • pool → grupo de servidores NTP (usa varios para redundancia)
  • iburst → envía varios paquetes al inicio para sincronizar más rápido
  • makestep 1.0 3 → permite ajuste brusco del reloj si el desfase supera 1s en las primeras 3 actualizaciones
  • rtcsync → sincroniza el reloj hardware (RTC) periódicamente

Configuración de servidor NTP local (para clientes de la red interna):


pool 2.debian.pool.ntp.org iburst

# Permitir que los clientes de la red local sincronicen contra este servidor
allow 192.168.1.0/24

local stratum 10                         # actuar como fuente si se pierde internet
          

# systemctl restart chronyd
          

timedatectl — Gestión de fecha y hora


$ timedatectl                         # ver estado completo: hora, zona, NTP
$ timedatectl list-timezones          # listar zonas horarias disponibles
# timedatectl set-timezone Europe/Madrid
# timedatectl set-ntp true            # activar sincronización NTP
# timedatectl set-ntp false           # desactivar NTP (para ajuste manual)
# timedatectl set-time "2026-05-05 10:00:00"  # ajuste manual (NTP debe estar off)
          

Salida típica de timedatectl:


               Local time: Mon 2026-05-05 10:00:00 CEST
           Universal time: Mon 2026-05-05 08:00:00 UTC
                 RTC time: Mon 2026-05-05 08:00:00
                Time zone: Europe/Madrid (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
          

chronyc — Estado y diagnóstico


$ chronyc tracking               # estado de sincronización: offset, frecuencia, fuente
$ chronyc sources -v             # fuentes NTP en uso y su calidad
$ chronyc sourcestats            # estadísticas de las fuentes
$ chronyc activity               # número de fuentes online/offline
          

Salida de chronyc tracking:


Reference ID    : A29FC801 (162.159.200.1)
Stratum         : 3
Ref time (UTC)  : Mon May 05 08:00:00 2026
System time     : 0.000012345 seconds fast of NTP time
Last offset     : +0.000005678 seconds
RMS offset      : 0.000008901 seconds
Frequency       : 1.234 ppm fast
Residual freq   : +0.001 ppm
Skew            : 0.045 ppm
Root delay      : 0.010345678 seconds
Root dispersion : 0.000987654 seconds
          

Forzar sincronización inmediata:


# chronyc makestep               # ajuste brusco inmediato del reloj
          

ntpdate (legacy)

ntpdate es la herramienta clásica para sincronización puntual. Está obsoleta en sistemas modernos pero puede encontrarse en servidores antiguos.


# ntpdate pool.ntp.org           # sincronización puntual (requiere parar chronyd antes)
          

Chrony es la solución recomendada en todos los sistemas Linux modernos. Usa timedatectl para la gestión general y chronyc tracking para diagnosticar problemas de sincronización.

SSH cliente: ssh, ssh-keygen, ssh-copy-id, ~/.ssh/config

Índice de la sección

Índice del curso