Chrony és una implementació del protocol NTP (Network Time Protocol) dissenyada per sincronitzar el rellotge del sistema en entorns moderns. És la solució de sincronització horària per defecte a la majoria de distribucions Linux actuals (RHEL/Fedora des del 2014, Ubuntu des de la versió 22.04, Debian des de la versió 12).
ntpd.ntpd com a implementació NTP per defecte.| Característica | Chrony | ntpd | systemd-timesyncd |
|---|---|---|---|
| Precisió | Molt alta | Alta | Baixa/mitjana |
| Adaptació a xarxes inestables | Excel·lent | Bona | Limitada |
| Servidor NTP | Sí | Sí | No |
| Client NTP | Sí | Sí | Sí |
| Ús en portàtils/VM | Excel·lent | Regular | Acceptable |
| Consum de recursos | Baix | Mitjà | Molt baix |
| Suport NTPv4 | Sí | Sí | Parcial |
| Suport NTS (NTP Segur) | Sí (>= 4.0) | No | No |
| Hardware timestamping | Sí | Sí | No |
| Complexitat de configuració | Mitjana | Alta | Mínima |
| Component | Descripció |
|---|---|
chronyd |
Dimoni principal que s’executa en segon pla |
chronyc |
Client CLI per interactuar amb chronyd |
chrony.conf |
Fitxer de configuració principal |
sudo apt install chronysudo dnf install chronysudo pacman -S chrony# Iniciar i habilitar a l'arrencada
sudo systemctl enable --now chronyd
# Estat del servei
sudo systemctl status chronyd
# Reiniciar
sudo systemctl restart chronydA Ubuntu, el servei pot anomenar-se chrony en lloc de chronyd.
| Distribució | Ruta |
|---|---|
| Debian / Ubuntu | /etc/chrony/chrony.conf |
| Fedora / RHEL | /etc/chrony.conf |
| Arch Linux | /etc/chrony.conf |
# Servidors NTP
pool 2.debian.pool.ntp.org iburst
# Fitxer de deriva del rellotge
driftfile /var/lib/chrony/drift
# Permet correccions grans d'hora a l'inici (< 3 segons, màx 3 vegades)
makestep 1.0 3
# Activa el rellotge de temps real del hardware
rtcsync
# Fitxer de log
logdir /var/log/chrony# Servidor NTP individual
server ntp.example.com iburst
# Pool de servidors (recomanat; es connecta a múltiples)
pool pool.ntp.org iburst
# Peer (igual rang, sincronització mútua)
peer ntp2.example.com
# Rellotge de referència local (GPS, PPS, etc.)
refclock SHM 0 refid GPS precision 1e-1 offset 0.9999Opcions comunes per a server i pool:
| Opció | Descripció |
|---|---|
iburst |
Envia una ràfega de paquets a l’inici per sincronitzar ràpidament |
burst |
Envia ràfegues periòdiques (no recomanat en servidors públics) |
minpoll N |
Interval mínim de consulta (2^N segons, per defecte 6 = 64s) |
maxpoll N |
Interval màxim de consulta (2^N segons, per defecte 10 = 1024s) |
prefer |
Prefereix aquesta font sobre les altres |
noselect |
Monitora, però no usa per sincronitzar |
offline |
Marca la font com a fora de línia inicialment |
maxdelay N |
Rebutja mostres amb latència superior a N segons |
key ID |
Usa autenticació NTP simètrica amb la clau indicada |
# Permet a una xarxa consultar l'hora (mode client)
allow 192.168.1.0/24
# Permet a tothom
allow all
# Denega accés
deny 10.0.0.5
# Permet però no serveix com a servidor de temps
noserve 192.168.2.0/24
# Permet ordres des de localhost
cmdallow 127.0.0.1# Correcció automàtica al principi (recomanat)
# Si la diferència és < 1s, corregeix fins a 3 cops
makestep 1.0 3
# Fitxer de deriva (guarda la freqüència de correcció)
driftfile /var/lib/chrony/drift
# Sincronitza el rellotge hardware (RTC) amb el del sistema
rtcsync
# Temps màxim de desviació permès (en segons)
maxdistance 1.5
# Correccions suaus d'hora (slewing) en lloc de salts bruscos
# (per defecte activat)logdir /var/log/chrony
# Tipus de logs (es poden combinar)
log tracking measurements statistics
# Fitxer de seguiment (resum de l'estat actual)
# tracking: desviació, font seleccionada, deriva
# measurements: mostres de cada font NTP
# statistics: estadístiques de cada font# Permetre que clients de la xarxa local sincronitzin
allow 10.0.0.0/8
# Estratum local (si no hi ha accés a internet)
local stratum 10# Client NTS
server time.cloudflare.com iburst nts
# Servidor NTS (requereix certificat TLS)
ntsserverkey /etc/chrony/server.key
ntsservercert /etc/chrony/server.crt
ntsdumpdir /var/lib/chronychronycchronyc és la interfície de línia d’ordres per consultar
i controlar chronyd.
# Resum de l'estat de sincronització
chronyc tracking
# Llista de fonts NTP i la seva qualitat
chronyc sources
# Llista de fonts amb estadístiques detallades
chronyc sourcestats
# Informació sobre l'activitat del dimoni
chronyc activity
# Informació del servidor NTP (si actuem com a tal)
chronyc serverstatschronyc trackingReference ID : C0A80101 (192.168.1.1)
Stratum : 3
Ref time (UTC) : Mon Jun 08 10:00:00 2026
System time : 0.000012345 seconds fast of NTP time
Last offset : +0.000010234 seconds
RMS offset : 0.000015678 seconds
Frequency : 12.345 ppm fast
Residual freq : +0.001 ppm
Skew : 0.234 ppm
Root delay : 0.023456789 seconds
Root dispersion : 0.001234567 seconds
Update interval : 64.3 seconds
Leap status : Normalchronyc sourcesMS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp1.example.com 2 6 377 45 +123us[ +456us] +/- 5678us
^- ntp2.example.com 2 6 377 46 -234us[ -567us] +/- 6789us
^? ntp3.example.com 0 8 0 - +0ns[ +0ns] +/- 0nsLlegenda de la columna MS:
| Símbol | Significat |
|---|---|
* |
Font seleccionada actualment |
+ |
Font acceptable, no seleccionada |
- |
Font descartada per l’algorisme |
? |
Font no accessible |
x |
Font falsa (fals ticker) |
~ |
Font amb variació massa alta |
# Forçar sincronització immediata
chronyc makestep
# Afegir una font NTP en temps real
chronyc add server ntp.example.com iburst
# Eliminar una font
chronyc delete ntp.example.com
# Posar una font en mode offline/online
chronyc offline
chronyc online
# Recarregar la configuració
chronyc reload sources
# Forçar escriptura del fitxer de deriva
chronyc writertc
# Mode interactiu
chronycchronyc
chronyc> tracking
chronyc> sources -v
chronyc> sourcestats -v
chronyc> quitEl concepte d’estrat indica la distància a la font de temps primària:
| Estrat | Descripció |
|---|---|
| 0 | Rellotge de referència de maquinari (GPS, atòmic, ràdio) |
| 1 | Servidor directament connectat a un rellotge estrat 0 |
| 2 | Servidor sincronitzat amb un estrat 1 |
| 3 | Servidor sincronitzat amb un estrat 2 |
| … | … |
| 15 | Màxim permès (estrats >= 16 = no sincronitzat) |
| 16 | No sincronitzat / no disponible |
pool pool.ntp.org iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsyncpool pool.ntp.org iburst
allow 192.168.0.0/16
local stratum 10
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
log tracking measurements statisticspool pool.ntp.org iburst
allow 10.0.2.0/24
local stratum 10
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
# Samba necessita el socket NTP per signar paquets als clients del domini
ntpsigndsocket /var/lib/samba/ntp_signd# Permisos necessaris per al socket de Samba
sudo chown root:_chrony /var/lib/samba/ntp_signd
sudo chmod 750 /var/lib/samba/ntp_signd
sudo systemctl restart chronyserver 10.0.0.1 iburst prefer
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsyncpool pool.ntp.org iburst
# Correccions més agressives per compensar derives de la VM
makestep 0.1 -1
driftfile /var/lib/chrony/drift
maxdistance 16.0server time.cloudflare.com iburst nts
server nts.netnod.se iburst nts
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
ntsdumpdir /var/lib/chronyChrony pot sincronitzar directament amb dispositius de maquinari com GPS o PPS:
# GPS via shared memory (gpsd)
refclock SHM 0 refid GPS precision 1e-1 offset 0.9999 noselect
# PPS (Pulse Per Second) via kernel
refclock PPS /dev/pps0 refid PPS lock GPS
# GPS via socket (gpsd >= 3.x)
refclock SOCK /var/run/chrony.ttyS0.sock refid GPS# /etc/chrony/chrony.conf
server ntp.example.com key 1
# /etc/chrony/chrony.keys
1 SHA256 HEX:70C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9# Generar una clau aleatòria
chronyc keygen 1 SHA256 256# Estat de sincronització
chronyc tracking
# Fonts disponibles
chronyc sources -v
# El dimoni corre?
systemctl status chronyd
# Logs del sistema
journalctl -u chronyd -f
# Logs de Chrony
tail -f /var/log/chrony/tracking.logChrony no sincronitza:
# Verificar connectivitat amb el servidor NTP
chronyc sources
# Si apareix '?' a la columna M, no hi ha connectivitat
# Forçar sincronització immediata
sudo chronyc makestep
# Verificar si el firewall bloqueja el port UDP 123
sudo ss -ulnp | grep 123
sudo ufw allow 123/udp # si calDiferència d’hora massa gran:
# Chrony rebutja diferències > 1000s per defecte
# Solució temporal: sincronització manual
sudo systemctl stop chronyd
sudo ntpdate pool.ntp.org # o date --set="..."
sudo systemctl start chronydConflicte amb systemd-timesyncd:
# Desactivar systemd-timesyncd si s'usa Chrony
sudo systemctl disable --now systemd-timesyncd
sudo systemctl mask systemd-timesyncdVerificar que el port 123/UDP és accessible:
# Des del client
sudo chronyc -a 'burst 4/4'
# O amb netcat (si disponible)
nc -zuv servidor.ntp.local 123allow explícit en lloc de allow all en
producció.cmdallow a 127.0.0.1 (per
defecte)./var/lib/chrony/ amb permisos
restrictius.ratelimit per evitar
abús:# Limita consultes per evitar amplificació DDoS
ratelimit interval 3 burst 8 leak 2# Obrir port NTP (si actua com a servidor)
sudo ufw allow 123/udp
# Amb firewalld (Fedora/RHEL)
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload| Ruta | Descripció |
|---|---|
/etc/chrony/chrony.conf |
Configuració principal (Debian/Ubuntu) |
/etc/chrony.conf |
Configuració principal (Fedora/RHEL) |
/var/lib/chrony/drift |
Fitxer de deriva del rellotge |
/var/lib/chrony/ |
Dades persistents de Chrony |
/var/log/chrony/ |
Logs de Chrony |
/run/chrony/ |
Sockets i PID en temps d’execució |
/etc/chrony/chrony.keys |
Claus d’autenticació NTP |
man chronyd, man chronyc, man chrony.conf