Mantener la Hora del Sistema Precisa con timedatectl y chronyd
En este paso, aprenderá a mantener la hora del sistema precisa utilizando el comando timedatectl y comprenderá el papel del servicio chronyd. El mantenimiento preciso de la hora es crucial para el registro, la seguridad y muchos servicios de red.
1. Usar timedatectl para gestionar la hora del sistema y las zonas horarias:
El comando timedatectl proporciona una descripción general de la configuración actual del sistema relacionada con la hora, incluida la hora local, la hora universal (UTC), la hora RTC, la zona horaria y el estado de sincronización NTP.
Comprobemos la configuración actual de la hora de su sistema:
timedatectl
Debería ver una salida similar a esta (la hora y la fecha exactas reflejarán la hora actual de su sistema):
Local time: Sun 2025-06-15 21:46:11 EDT
Universal time: Mon 2025-06-16 01:46:11 UTC
RTC time: Mon 2025-06-16 01:46:10
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Puede listar todas las zonas horarias disponibles utilizando la opción list-timezones:
timedatectl list-timezones | less
Presione q para salir de less. Las zonas horarias se nombran en función de la base de datos de zonas horarias de la Autoridad de Números Asignados de Internet (IANA), normalmente por continente/océano y luego la ciudad más grande.
Para cambiar la zona horaria del sistema, utiliza la opción set-timezone. Por ejemplo, cambiemos la zona horaria a America/Phoenix. Necesita privilegios sudo para esto.
sudo timedatectl set-timezone America/Phoenix
Ahora, verifique el cambio:
timedatectl
Debería ver la zona horaria actualizada a America/Phoenix.
También puede establecer manualmente la hora actual del sistema utilizando la opción set-time. El formato es "YYYY-MM-DD hh:mm:ss", pero puede omitir la fecha o la hora. Establezcamos la hora en 09:00:00 (para la fecha actual).
sudo timedatectl set-time 09:00:00
Verifique el cambio de hora:
timedatectl
Finalmente, la opción set-ntp habilita o deshabilita la sincronización NTP para el ajuste automático de la hora. Toma true o false como argumento. Desactivemos la sincronización NTP por un momento (la volveremos a habilitar más tarde).
sudo timedatectl set-ntp false
Verifique el estado del servicio NTP:
timedatectl
Debería ver NTP service: inactive.
2. Comprender y configurar el servicio chronyd:
El servicio chronyd es un demonio que mantiene el Reloj en Tiempo Real (RTC) del sistema preciso sincronizándolo con los servidores del Protocolo de Tiempo de Red (NTP). Es el cliente NTP predeterminado en Red Hat Enterprise Linux.
El archivo de configuración para chronyd es /etc/chrony.conf. Por defecto, utiliza servidores NTP públicos. En un escenario del mundo real, podría configurarlo para usar servidores NTP internos.
Veamos el archivo chrony.conf predeterminado.
cat /etc/chrony.conf
Verá líneas que comienzan con server o pool, que definen las fuentes NTP. La opción iburst es recomendada ya que toma cuatro mediciones rápidamente para una sincronización inicial más precisa.
El stratum de una fuente de tiempo NTP indica su calidad. Un stratum 0 es un reloj de referencia, stratum 1 está conectado directamente a un reloj de referencia, y stratum 2 se sincroniza desde un servidor de stratum 1.
Dado que systemctl no está disponible en este entorno de contenedor, no podemos reiniciar directamente chronyd para aplicar los cambios de configuración. Sin embargo, podemos simular el cambio de configuración modificando el archivo.
Rehabilitaremos la sincronización NTP usando timedatectl.
sudo timedatectl set-ntp true
Verifique el estado del servicio NTP nuevamente:
timedatectl
Debería ver NTP service: active.
El comando chronyc actúa como cliente del servicio chronyd. Puede usarlo para monitorear el estado de sincronización. El comando chronyc sources muestra las fuentes de tiempo actuales y su estado de sincronización.
chronyc sources -v
La salida mostrará detalles sobre las fuentes NTP. El asterisco * en el campo S (Estado de la fuente) indica la fuente con la que chronyd está actualmente sincronizado.
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 100.100.61.88 1 5 377 16 +1824us[+2180us] +/- 85ms
...output omitted...
Esta salida confirma que su sistema está sincronizando activamente su hora con un servidor NTP.