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:
chronyd
es un serviciosystemd
que se puede iniciar durante el arranque.chronyc
es un programa de interfaz de línea de comandos para monitorizar el rendimiento dechronyd
y 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
:
#
chronyc
chronyc> 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:
#
chronyc
activity
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
chronyd
al arrancar el sistema está habilitado.-
systemctl enabled chronyd.service
Habilita el inicio automático del servicio
chronyd
al arrancar el sistema.-
systemctl disable chronyd.service
Inhabilita el inicio automático del servicio
chronyd
al arrancar el sistema.-
systemctl is-active chronyd.service
Comprueba si el servicio
chronyd
se 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
chronyd
y 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:
>
sudo
systemctl 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
firewalld
está activo en su equipo, verifique que el servicio NTP está permitido.Verifique que el servicio
chronyd
se está ejecutando:>
sudo
systemctl 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 Protocol
pero que los puertos no estén configurados comoEdge Ports
sino 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/config
y cambie el valor deNM_ONLINE_TIMEOUT
a 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
firewalld
se describe en https://documentation.suse.com/sles/html/SLES-all/cha-security-firewall.html#sec-security-firewall-firewalld.Los comandos para operar los servicios
systemd
se 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 –2024 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.