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
- Chrony documentation
- chrony.conf manual
- Ubuntu Server - Serve NTP with Chrony
- Red Hat Enterprise Linux - Configuring time synchronization
- NTP Pool Project Argentina
- timedatectl manual
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.