# 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
“`bash
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.
“`bash
sudo dnf install chrony
sudo systemctl enable –now chronyd
“`
### Configurar servidores NTP
Edita el archivo principal de Chrony:
“`bash
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.
“`conf
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](https://www.pool.ntp.org/zone/ar).
### 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.
“`conf
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.
“`bash
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:
“`conf
logdir /var/log/chrony
log measurements statistics tracking
“`
Guarda los cambios y sali del editor.
### Activar sincronizacion automatica
“`bash
sudo timedatectl set-ntp true
“`
### Reiniciar el servicio
Despues de tocar la configuracion, reinicia Chrony para aplicar los cambios.
“`bash
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.
“`bash
sudo apt install chrony
sudo systemctl enable –now chrony
“`
### Editar configuracion
“`bash
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:
“`conf
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:
“`bash
sudo ufw allow 123/udp
“`
### Reiniciar el servicio
“`bash
sudo systemctl restart chrony
“`
## Troubleshooting
### Ver servidores de tiempo
Chequea si Chrony esta viendo los servidores configurados:
“`bash
sudo chronyc sources -v
sudo chronyc sourcestats
“`
### Ver estado del reloj local
“`bash
chronyc tracking
timedatectl
“`
### Ver clientes conectados
“`bash
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.
“`bash
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
“`bash
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`.
“`bash
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](https://chrony-project.org/documentation.html)
– [chrony.conf manual](https://chrony-project.org/doc/4.0/chrony.conf.html)
– [Ubuntu Server – Serve NTP with Chrony](https://ubuntu.com/server/docs/how-to/networking/serve-ntp-with-chrony)
– [Red Hat Enterprise Linux – Configuring time synchronization](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/configuring-time-synchronization_configuring-basic-system-settings)
– [NTP Pool Project Argentina](https://www.pool.ntp.org/zone/ar)
– [timedatectl manual](https://www.freedesktop.org/software/systemd/man/latest/timedatectl.html)
## 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](https://ignaciobustamante.ar).
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.