Que la hora no te arruine el dia: NTP con Chrony en Linux (CentOS y Ubuntu)

Servidor NTP con Chrony en Linux

Apunte rapido para levantar un servidor NTP usando Chrony en Linux, tanto en
familia RHEL/CentOS como en Debian/Ubuntu.

La idea es dejar una maquina sincronizando hora y, de paso, que pueda servir
tiempo a otros equipos de la red. Parece una pavada hasta que un certificado,
un log o un cluster te recuerda que la hora importa. Y ahi arranca la novela.

Probado con

  • RHEL/CentOS/Rocky/Alma con dnf
  • Debian/Ubuntu con apt
  • Chrony como servicio NTP

Variables de ejemplo

export RED_NTP_CLIENTES=192.168.1.0/24
export SERVIDOR_NTP_INTERNO=192.168.1.23

RHEL y CentOS

Instalar Chrony

Primero instalas el paquete y dejas el servicio habilitado y levantado. Que el
servidor NTP no dependa de que alguien se acuerde despues, porque ya sabemos
como termina eso.

sudo dnf install chrony
sudo systemctl enable --now chronyd

Configurar servidores NTP

Edita el archivo principal de Chrony:

sudo nano /etc/chrony.conf

Agrega o ajusta los pools NTP que vas a usar como referencia. iburst ayuda a
sincronizar mas rapido al inicio, que viene barbaro cuando estas probando y no
queres mirar la terminal como si fuera una olla que no hierve.

pool 0.ar.pool.ntp.org iburst
pool 1.south-america.pool.ntp.org iburst
pool 0.south-america.pool.ntp.org iburst

Para otras zonas o pools, podes revisar el NTP Pool Project.

Permitir clientes de la red

Para que otros equipos puedan consultar este servidor, habilita el rango de red
que corresponda. La linea suele venir comentada por defecto.

allow 192.168.1.0/24

Si no habilitas allow, Chrony puede sincronizar la hora local, pero no va a
funcionar como servidor para tus clientes. Clasico detalle chiquito que te hace
mirar la terminal con cara rara.

Abrir firewall

NTP usa UDP 123. Si el firewall esta activo, abri ese servicio para que los
clientes puedan consultar. Si no, Chrony puede estar perfecto, pero la red le
cierra la puerta en la cara.

sudo firewall-cmd --permanent --add-service=ntp
sudo firewall-cmd --reload

Activar logs

Si queres guardar informacion de mediciones, estadisticas y tracking, podes
activar logs en la configuracion:

logdir /var/log/chrony
log measurements statistics tracking

Guarda los cambios y sali del editor.

Activar sincronizacion automatica

sudo timedatectl set-ntp true

Reiniciar el servicio

Despues de tocar la configuracion, reinicia Chrony para aplicar los cambios.

sudo systemctl restart chronyd

Debian y Ubuntu

En Debian y Ubuntu la idea es la misma, pero cambia el gestor de paquetes y la
ruta del archivo de configuracion. Tambien cambia el nombre del servicio:
normalmente es chrony, no chronyd.

Instalar Chrony

En versiones nuevas de Ubuntu puede venir instalado por defecto. Igual, este
comando sirve para asegurarte de que el paquete este presente.

sudo apt install chrony
sudo systemctl enable --now chrony

Editar configuracion

sudo nano /etc/chrony/chrony.conf

A partir de aca podes usar la misma logica: definir servidores NTP, permitir el
rango de clientes con allow, activar logs si te sirven y reiniciar el
servicio. Mismo mate, distinta taza.

Ejemplo de configuracion:

pool 0.ar.pool.ntp.org iburst
pool 1.south-america.pool.ntp.org iburst
pool 0.south-america.pool.ntp.org iburst
allow 192.168.1.0/24

Abrir firewall

Si usas UFW, habilita UDP 123:

sudo ufw allow 123/udp

Reiniciar el servicio

sudo systemctl restart chrony

Troubleshooting

Ver servidores de tiempo

Chequea si Chrony esta viendo los servidores configurados:

sudo chronyc sources -v
sudo chronyc sourcestats

Ver estado del reloj local

chronyc tracking
timedatectl

Ver clientes conectados

sudo chronyc clients

Probar contra un servidor especifico en RHEL y derivados

Para forzar una consulta contra un servidor especifico, primero detené Chrony y
despues ejecuta la prueba. Ideal para aislar si el problema es tu server, la red
o el universo conspirando antes del cafe.

sudo systemctl stop chronyd
sudo chronyd -q 'server 192.168.1.23'
sudo chronyd -q 'server 2.ar.pool.ntp.org'

Probar contra un servidor especifico en Debian y Ubuntu

sudo systemctl stop chrony
sudo chronyd -q 'server 192.168.1.23'
sudo chronyd -q 'server 2.ar.pool.ntp.org'

Probar desde clientes con ntpdate

En equipos mas viejos o que todavia usan herramientas anteriores a Chrony,
podes probar contra el servidor NTP con ntpdate.

sudo ntpdate <ip-servidor-ntp>

ntpdate sirve para una prueba puntual, pero en instalaciones modernas conviene
usar Chrony o el servicio de sincronizacion que venga definido para la distro.

Referencias

Bitacora de supervivencia

Si este apunte te dio una mano y te salvo de genegar un rato, podes encontrar mas material para infra, laboratorio y herramientas de todos los dias en ignaciobustamante.ar.

Join the ConversationLeave a reply

Your email address will not be published. Required fields are marked *

Comment*

Name*

Website