Sincronización horaria mediante NTP
- DESCRIPCIÓN
Este artículo describe qué es la sincronización horaria y cómo configurarla.
- INTENCIÓN
Mantener la hora del sistema sincronizada es fundamental cuando se comparten tareas y recursos con otros miembros del equipo a través de la red.
- ESFUERZO
Hasta 60 minutos para leer este artículo y realizar una configuración básica de sincronización horaria en el equipo.
- REQUISITOS
Se requieren conocimientos básicos de administración de sistemas Linux. Las tareas específicas requieren privilegios de
root.Conexión de red operativa a la red interna o a Internet para alcanzar el servidor de hora de origen.
1 Introducción #
Mantener una hora del sistema precisa y sincronizada en el equipo es vital para el trabajo en equipo. Las aplicaciones de planificación y calendario dependen de ello para registrar correctamente el tiempo y notificar a los usuarios las citas a tiempo. En el caso de las aplicaciones agrupadas en clúster, los equipos host individuales a menudo requieren que la hora del sistema esté sincronizada para poder comunicarse entre sí.
El reloj de hardware integrado no es un origen horario fiable. Una corrección manual de la hora del sistema puede provocar un mal funcionamiento de aplicaciones críticas debido a saltos de tiempo repentinos. Por lo tanto, la hora del sistema debe sincronizarse con un origen horario externo confiable a través de la red.
1.1 ¿Qué es NTP? #
El protocolo de hora de red (Network Time Protocol, NTP) está diseñado para sincronizar la hora del sistema a través de la red. Su objetivo es mantener la hora absoluta y utilizarla para sincronizar la hora del sistema de todos los equipos de una red.
1.2 ¿Cómo funciona NTP? #
Cuando el servicio NTP está configurado correctamente, consulta y ajusta continuamente la hora del sistema con servidores horarios fiables. Normalmente, los equipos domésticos y otros dispositivos conectados a Internet están configurados para consultar un servidor horario público en Internet.
Por el contrario, los equipos de escritorio y los servidores que residen dentro de una subred corporativa están configurados para consultar un servidor horario dedicado dentro de la red local. El propio servidor de hora sincroniza su hora con un servidor de hora público.
1.2.1 Implementación #
chrony es la implementación por defecto de NTP en SLE Micro. chrony incluye dos partes:
chronydes un serviciosystemdque se puede iniciar durante el arranque.chronyces un programa de interfaz de línea de comandos para monitorizar el rendimiento dechronydy cambiar parámetros operativos específicos durante el tiempo de ejecución.
1.3 Ventajas #
El uso de NTP para mantener la hora exacta presenta las siguientes ventajas:
Los usuarios pueden confiar en sus relojes cuando siguen un horario planificado.
Las aplicaciones pueden activar con precisión las acciones programadas del escritorio o del sistema.
Los nodos de clúster pueden mantener sus datos sincronizados y actualizados.
El uso de un servidor de hora interno ayuda a mantener la hora del sistema sincronizada en redes con acceso restringido a Internet.
2 Configuración del NTP ajustando /etc/chrony.conf #
Cuando se inicia chronyd, lee su configuración en el archivo /etc/chrony.conf. En las siguientes secciones se muestran parámetros importantes que pueden afectar al comportamiento de chronyd.
2.1 Especificación de orígenes horarios #
Para mantener sincronizado el reloj del equipo, debe indicarle a chronyd qué orígenes horarios desea utilizar. Para ello, use las directivas server, pool y peer. Puede utilizarlas varias veces.
La directiva server indica a chronyd que use un host específico como servidor de hora por su nombre o dirección IP.
server 0.europe.pool.ntp.org offline1 server 1.europe.pool.ntp.org offline prefer2 server 192.168.2.254
La opción | |
La opción |
La directiva pool permite especificar un nombre de red que se resuelve en varias direcciones IP que pueden cambiar con el tiempo.
pool pool.ntp.org iburst1 maxsources 32
La opción | |
La opción |
La directiva peer especifica un host par NTP en lugar de un servidor de hora. La sincronización horaria del sistema entre pares utiliza una arquitectura simétrica en lugar del modo cliente/servidor invocado por las opciones server y pool. Puede utilizar peer varias veces para especificar más de un par.
peer 192.168.1.116 peer ntp.example.com
2.2 Ejecución de chronyd como servidor NTP #
Por defecto, chronyd funciona como cliente para servidores NTP especificados. Para que funcione también como servidor NTP, añada la directiva allow al archivo /etc/chrony.conf. Abre el puerto del servidor NTP (123 por defecto) y responde a las peticiones del cliente.
Puede especificar una única IP de un cliente NTP o una subred para incluir varios clientes. Puede utilizar la directiva allow varias veces:
allow 1.2.3.4 allow 3.4.5.0/24
Si no especifica una dirección IP o una subred, la directiva allow independiente permite el acceso desde todas las direcciones IPv4 e IPv6.
Para limitar el acceso de la directiva allow anterior, utilice la directiva deny:
allow 1.2.3.4 deny 1.2.3.0/24 allow 1.2.0.0/16
En el ejemplo anterior, el efecto es el mismo independientemente del orden de las tres directivas. Se permite el acceso a la subred 1.2.0.0/16, excepto a la subred 1.2.3.0/24, a la que se deniega. Sin embargo, se permite el acceso al host 1.2.3.4.
2.3 Configuración de un reloj de referencia local #
chronyd se basa en otros programas (como gpsd) para acceder a los datos de tiempo a través de un controlador específico. Utilice la directiva refclock de /etc/chrony.conf para especificar un reloj de hardware de referencia que se utilizará como origen horario. Tiene dos parámetros obligatorios: un nombre de controlador y un parámetro específico del controlador. Los dos parámetros van seguidos de cero o más opciones refclock. chronyd incluye los siguientes controladores:
- PPS
Controlador para la API de pulso por segundo del kernel. Por ejemplo:
refclock PPS /dev/pps0 lock NMEA refid GPS
- SHM
Controlador de memoria compartida de NTP. Por ejemplo:
refclock SHM 0 poll 3 refid GPS1 refclock SHM 1:perm=0644 refid GPS2
- SOCK
Controlador de zócalo de dominio de Unix. Por ejemplo:
refclock SOCK /var/run/chrony.ttyS0.sock
- PHC
Controlador de reloj de hardware de PTP. Por ejemplo:
refclock PHC /dev/ptp0 poll 0 dpoll -2 offset -37 refclock PHC /dev/ptp1:nocrossts poll 3 pps
Para obtener más información sobre las opciones de los controladores individuales, consulte man 8
chrony.conf.
2.4 Activación de orígenes horarios sin conexión #
Aunque chronyd se inicia normalmente en un sistema que arranca sin una conexión de red, no puede acceder a los servidores de hora especificados en /etc/chrony.conf. Para evitar que chronyd intente consultar servidores de hora inaccesibles, utilice la opción offline situada junto a la directiva de origen horario, por ejemplo:
server ntp.example.org offline
chronyd no intenta sondear el servidor hasta que se habilita mediante el siguiente comando:
# chronyc online ntp.example.org
Si la opción auto_offline está definida en lugar de la opción offline, chronyd supone que el servidor de hora se ha desconectado cuando se le han enviado dos peticiones sin recibir respuesta. Esta opción evita que haya que ejecutar el comando offline de chronyc al desconectar el enlace de red.
3 Gestión de chronyd en tiempo de ejecución #
3.1 ¿Qué es chronyc? #
chronyc es la parte del cliente de la implementación de NTP de chrony. Puede utilizar el comando chronyc para cambiar el comportamiento del servicio chronyd en tiempo de ejecución. También genera informes de estado sobre el funcionamiento de chronyd.
Los cambios realizados mediante chronyc no son permanentes. Se pierden después del siguiente reinicio de chronyd. Para conseguir cambios permanentes, modifique /etc/chrony.conf como se describe en la Sección 2, “Configuración del NTP ajustando /etc/chrony.conf”.
3.2 ¿Cómo funciona chronyc? #
Puede ejecutar chronyc en modo interactivo o no interactivo. Para ejecutar chronyc de forma interactiva, escriba chronyc en la línea de comandos y pulse Intro. Muestra un indicador y espera la entrada del comando. Por ejemplo, para comprobar cuántos orígenes NTP están conectados o desconectados, ejecute el comando activity:
#chronycchronyc> activity 200 OK 4 sources online 2 sources offline 1 sources doing burst (return to online) 1 sources doing burst (return to offline) 0 sources with unknown address
Para salir del indicador de chronyc, introduzca quit o exit.
Si no necesita utilizar el indicador interactivo, introduzca el comando directamente, por ejemplo:
#chronycactivity
4 El servicio chronyd systemd #
La parte principal de chrony es el servicio chronyd systemd que se ejecuta en segundo plano y sincroniza la hora del sistema con los servidores horarios seleccionados. Puede utilizar los siguientes comandos de systemd para utilizar el servicio chronyd:
-
systemctl status chronyd.service Imprime información ampliada sobre el estado actual del servicio
chronyd.-
systemctl is-enabled chronyd.service Comprueba si el inicio automático del servicio
chronydal arrancar el sistema está habilitado.-
systemctl enabled chronyd.service Habilita el inicio automático del servicio
chronydal arrancar el sistema.-
systemctl disable chronyd.service Inhabilita el inicio automático del servicio
chronydal arrancar el sistema.-
systemctl is-active chronyd.service Comprueba si el servicio
chronydse ha iniciado y se está ejecutando.-
systemctl start chronyd.service Inicia el servicio
chronyd.-
systemctl stop chronyd.service Detiene el servicio
chronyd.-
systemctl restart chronyd.service Reinicia el servicio
chronydy vuelve a cargar/etc/chronyd.conf.
5 Solución de problemas #
En caso de errores, compruebe lo siguiente.
Verifique que el equipo esté conectado a una red y que la red esté configurada correctamente:
>sudosystemctl status network.service ● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-08-07 20:09:44 CEST; 4 days ago [...]Verifique que los servidores horarios que ha introducido como origen horario existan y sean accesibles a través de la red. Por ejemplo:
>ping pool.ntp.org PING pool.ntp.org (85.199.214.101) 56(84) bytes of data. 64 bytes from 85.199.214.101 (85.199.214.101): icmp_seq=1 ttl=37 time=29.9 ms [...]Si el servicio
firewalldestá activo en su equipo, verifique que el servicio NTP está permitido.Verifique que el servicio
chronydse está ejecutando:>sudosystemctl status chronyd.service ● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2021-08-07 20:09:44 CEST; 4 days ago [...]Si la hora del sistema en un invitado virtualizado difiere de la hora exacta, asegúrese de que la hora del sistema del servidor host de la máquina virtual esté sincronizada con un servidor horario válido y de que el invitado esté sincronizado con el mismo origen horario que el host.
Si el servicio NTP no se inicia correctamente durante el arranque del sistema, puede deberse a que haya conmutadores de red configurados para utilizar el protocolo
Spanning Tree Protocolpero que los puertos no estén configurados comoEdge Portssino comoPortfast. En este caso, el establecimiento de la conectividad de red puede tardar hasta un minuto.Si el servicio NTP no se inicia durante el arranque del sistema cuando se utiliza NetworkManager, edite el archivo
/etc/sysconfig/network/configy cambie el valor deNM_ONLINE_TIMEOUTa 30. Si el problema persiste, aumente el valor de tiempo límite en 15 y vuelva a intentarlo.Si no es posible acceder a los orígenes NTP, identifíquelos con el siguiente comando:
>chronyc sources -v [...] MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* time.mydomain.com 3 10 377 81 -5354us[-8257us] +/- 191ms ^? ntp1.example.com 0 10 0 - +0ns[ +0ns] +/- 0ns ^? 77.177.77.177 0 10 0 - +0ns[ +0ns] +/- 0ns ^? ntp3.example.com 0 10 0 - +0ns[ +0ns] +/- 0ns ^? ntp4.example.net 0 10 0 - +0ns[ +0ns] +/- 0ns ^? 2a02:3d8:1::1:1 0 6 0 - +0ns[ +0ns] +/- 0ns ^? ntp2.example.org 0 10 0 - +0ns[ +0ns] +/- 0nsEn este caso, el único servidor que realmente está sirviendo tiempo es
time.mydomain.com. Por lo general, es necesario solucionar los problemas de conexión de red a los orígenes de tiempo NTP remotos que fallan.
6 Información adicional #
La protección del equipo con
firewalldse describe en https://documentation.suse.com/sles/html/SLES-all/cha-security-firewall.html#sec-security-firewall-firewalld.Los comandos para operar los servicios
systemdse muestran en https://susedoc.github.io/doc-modular/main/html/reference-systemctl-enable-disable-services/.Para obtener una referencia completa, consulte las páginas de manual relacionadas:
Para obtener una lista completa de las directivas de configuración, ejecute
man 1 chrony.conf.Para obtener una lista completa de comandos de
chronyc, ejecuteman 1 chronyc.Para obtener una lista completa de las opciones de la línea de comandos de
chronyd, ejecuteman 8 chronyd.
7 Información legal #
Copyright © 2006 –2025 SUSE LLC y colaboradores. Reservados todos los derechos.
Está permitido copiar, distribuir y modificar este documento según los términos de la licencia de documentación gratuita GNU, versión 1.2 o (según su criterio) versión 1.3. Este aviso de copyright y licencia deberán permanecer inalterados. En la sección titulada “GNU Free Documentation License” (Licencia de documentación gratuita GNU) se incluye una copia de la versión 1.2 de la licencia.
Para obtener información sobre las marcas comerciales de SUSE, consulte https://www.suse.com/company/legal/. Todas las marcas comerciales de otros fabricantes son propiedad de sus respectivas empresas. Los símbolos de marcas comerciales (®, ™, etc.) indican marcas comerciales de SUSE y sus filiales. Los asteriscos (*) indican marcas comerciales de otros fabricantes.
Toda la información recogida en esta publicación se ha compilado prestando toda la atención posible al más mínimo detalle. Sin embargo, esto no garantiza una precisión total. Ni SUSE LLC, ni sus filiales, ni los autores o traductores serán responsables de los posibles errores o las consecuencias que de ellos pudieran derivarse.