Cómo instalar un servicio de actualización automática de hora del sistema en equipos Linux CentOS Stream 9 (válido para CentOS 8), usando Chrony. Mostramos cómo montar un servidor de actualización de hora y los clientes.

Verificar que tenemos la zona horaria correcta

En primer lugar nos aseguraremos de que tenemos la zona horaria correcta en el equipo Linux CentOS 9, para ello ejecutaremos el comando:

timedatectl

Que debe mostrarnos en «Time zone» la zona horaria correcta, en nuestro caso «Europe/Madrid».

En caso de ser incorrecta seguiremos las instrucciones de este artículo para cambiarla:

Instalar Chrony en equipo Linux CentOS Stream 9 para sincronizar hora con servidores externos NTP ROA

Tanto si queremos establecer un equipo de nuestra red como servidor de tiempo NTP, como si va a ser el cliente que se conecte al servidor de tiempo, tendremos que instalar Chrony, que es sustituto de Ntpd. Para ello accederemos a la consola (shell de comandos), y ejecutaremos el siguiente comando:

dnf install chrony -y

Instalar Chrony en equipo Linux CentOS Stream 9 para sincronizar hora con servidores externos NTP ROA

Iniciaremos el servicio/demonio de chrony con el comando:

systemctl start chronyd

Lo habilitaremos para que se inicie cuando se arranque el equipo con el comando:

systemctl enable chronyd

Y comprobaremos que se ha iniciado correctamente ejecutando el comando:

systemctl status chronyd

Nos devolverá algo así:

Instalar Chrony en equipo Linux CentOS Stream 9 para sincronizar hora con servidores externos NTP ROA

Editaremos el fichero de configuración de Chrony para establecer los servidores NTP externos a los que se conectará el equipo para sincronizar la hora, para ello ejecutaremos el comando:

nano /etc/chrony.conf

(podremos usar cualquier editor como nano, vi, etc.)

En nuestro caso estableceremos como servidores externos de hora: hora.roa.es y hora.rediris.es. Para ello comentaremos la línea:

pool 2.centos.pool.ntp.org iburst

Dejándola con:

#pool 2.centos.pool.ntp.org iburst

Y agregaremos las siguientes líneas:

server hora.roa.es
server hora.rediris.es

Instalar Chrony en equipo Linux CentOS Stream 9 para sincronizar hora con servidores externos NTP ROA

Guardaremos los cambios pulsando Control + O y cerraremos con Control + X.

Estableceremos la sincronización de NTP con el comando:

timedatectl set-ntp true

Y reiniciaremos el servicio chronyd para que se apliquen los cambios:

systemctl restart chronyd

Ahora podremos comprobar que se está sincronizando la hora de nuestro equipo con el servidor de hora establecido, para ello ejecutamos el comando:

chronyc sources

Nos devolverá algo así:

Instalar Chrony en equipo Linux CentOS Stream 9 para sincronizar hora con servidores externos NTP ROA

Configuración para establecer un equipo Linux como servidor de hora para el resto de equipo de la red

Si queremos que sólo un equipo se sincronice con servidores de hora externos a nuestra red y el resto de equipos de nuestra red se sincronicen con este, lo haremos «servidor de hora». Esto es lo más recomendable para que sólo un equipo sea el que esté expuesto a este tipo de servicio que requiere de conexión a Internet. El resto de equipo de la red LAN sincronizarán la hora automáticamente a través de este equipo y no necesitarán salir a Internet.

Para establecer un equipo Linux como servidor de hora NTP para el resto, únicamente tendremos que instalar chronyc, configurarlo para que use servidores externos, como hemos explicado anteriormente y abrir el puerto NTP en el cortafuegos del equipo, con el comando:

Para aplicar los cambios en el cortafuegos sin tener que reiniciar el equipo, ejecutaremos el comando:

Configuración para establecer un equipo Linux como servidor de hora para el resto de equipo de la red

Y como medida de seguridad, si queremos limitar el rango de IP que podrán conectarse a nuestro servidor NTP interno, podremos indicarlo en el fichero de configuración:

nano /etc/chrony.conf

En la sección «Allow NTP client access from local network», indicando las IP o el rango de IP que permitiremos. Por ejemplo, para permitir clientes de la red 192.168.0.0, introduciremos la línea:

allow 192.168.0.0/24

Configuración para establecer un equipo Linux como servidor de hora para el resto de equipo de la red

Si hacemos algún cambio en el fichero de configuración, para que se aplique, tendremos que reiniciar el servicio con:

systemctl restart chronyd

Configurar cliente Linux para sincronización de hora automática con servidor Linux interno

Una vez configurado el servidor interno NTP, como hemos indicado anteriormente, para el cliente tendremos que revisar la zona horaria e instalar Chrony, igual que hicimos para el servidor.

La única diferencia es que indicaremos como servidor NTP de hora la IP del servidor anterior y no una externa. Para ello editaremos el fichero /etc/chrony.conf:

nano /etc/chrony.conf

Configurar cliente Linux para sincronización de hora automática con servidor Linux interno

Donde cambiaremos «192.168.1.100» por la IP del servidor Linux con Chrony.

Realizaremos la sincronización NTP con:

timedatectl set-ntp true

Y reiniciaremos el servicio para aplicar los cambios:

systemctl restart chronyd

Verificaremos que conecta con el servidor NTP interno de nuestra red, con el comando:

chronyc sources

Configurar cliente Linux para sincronización de hora automática con servidor Linux interno

De esta forma el equipo servidor NTP se actualizará a través de Internet y el resto de equipos de nuestra red interna se actualizarán a través del servidor. Así evitamos tener que abrir puertos al exterior para todos los equipos, limitando la superfice de exposición.