EN FR Accueil

Dépannage Stratum 16

Corriger l'état NTP « non synchronisé » sur chrony, ntpd et w32tm

1. Ce que stratum 16 signifie vraiment

Dans le protocole NTP, le champ stratum est un entier 8 bits identifiant la distance à l'horloge atomique de référence. Les valeurs 1–15 sont des strates opérationnelles valides. Stratum 16 est une valeur sentinelle signifiant « non synchronisé » — le démon n'a pas de source temporelle de confiance. C'est à la fois :

La distinction importe pour le diagnostic. Stratum 16 au démarrage avec un countdown iburst visible est normal. Stratum 16 après 30 minutes d'uptime est une panne.

2. Diagnostic en 3 étapes sur chrony et ntpd

Lancez ces trois commandes dans l'ordre. Chacune pointe vers la cause suivante la plus probable.

chrony

$ chronyc tracking          # état global de sync
$ chronyc sources -v        # joignabilité et sélection par source
$ chronyc sourcestats -v    # stabilité offset/jitter par source

ntpd / ntpsec

$ ntpq -p                   # table par source
$ ntpq -c rv                # lire variables : stratum, offset, jitter, dispersion
$ ntpq -c 'rv 0 stratum,offset,frequency,sys_jitter'

Lisez la sortie à la lumière des trois causes racines ci-dessous.

3. Cause n°1 — aucune source joignable

Signature dans chronyc sources : chaque source affiche ? ou ~ dans la colonne sélection, et reach est 0. Signature dans ntpq -p : tous les peers affichent .INIT. comme refid.

Cause racine. Les paquets n'atteignent pas le serveur ou les réponses ne reviennent pas. Par ordre de probabilité : (a) UDP 123 bloqué en sortie ou entrée par un pare-feu, (b) échec de résolution DNS pour les hostnames de serveur, (c) serveur en panne ou publiquement injoignable depuis votre IP.

Séquence de correction :

# 1. Tester la joignabilité UDP 123
$ nc -u -vz ntp.rdem-systems.com 123
# ou, si nc ne supporte pas UDP
$ ntpdate -q ntp.rdem-systems.com

# 2. Vérifier l'état du pare-feu
$ sudo iptables -L -n | grep 123
$ sudo firewall-cmd --list-all | grep ntp
$ sudo ufw status | grep 123

# 3. Si bloqué, ouvrir
$ sudo ufw allow 123/udp           # ufw
$ sudo firewall-cmd --add-service=ntp --permanent && sudo firewall-cmd --reload

Plus en détail : le guide pare-feu couvre iptables, firewalld, ufw et Windows Firewall.

4. Cause n°2 — offset au-dessus du seuil panic

Signature : les sources sont joignables (reach > 0), mais le démon refuse de stepper l'horloge. Les logs mentionnent « panic sanity » (ntpd) ou « clock jump too large » (chrony).

Seuils par défaut :

DémonSeuilDirective
ntpd1000 stinker panic 0 (désactiver) ou démarrer avec -g
chronyConfigurable (pas de panic strict)makestep 1.0 3 dans chrony.conf
w32timeVariable (MaxPosPhaseCorrection / MaxNegPhaseCorrection)Registre sous HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config

Correction — chrony

# Step manuel ponctuel
$ sudo chronyc makestep

# Persister : autoriser step pour les 3 premières updates si offset > 1s
# dans /etc/chrony/chrony.conf
makestep 1.0 3

Correction — ntpd

# Step ponctuel au démarrage (au-delà du seuil panic)
$ sudo systemctl stop ntp
$ sudo ntpd -gq               # query unique avec -g autorisé
$ sudo systemctl start ntp
Ne désactivez pas le seuil panic en production de manière permanente. Un évènement panic légitime — erreur de calcul de seconde intercalaire, compromission de source, panne BIOS — doit arrêter la sync plutôt que réécrire silencieusement votre horloge de plusieurs heures.

5. Cause n°3 — toutes les sources rejetées par la sélection

Signature : sources joignables, offsets faibles, mais la colonne sélection affiche x (false ticker) ou - (outlyer) sur chaque peer. Le démon n'a pas de majorité pour s'accorder, donc reste en stratum 16.

Indique habituellement un nombre pair de sources qui se divisent 50/50, OU une source radicalement fausse qui tire la médiane. Correctifs :

6. Équivalent Windows w32tm

Sous Windows, stratum 16 se manifeste comme l'état unsynchronized de w32time ou TimeState::StateNoSync.

:: Requête du statut
> w32tm /query /status

:: Forcer resync depuis peer faisant autorité
> w32tm /resync /force

:: Reconfigurer la liste de peers manuels
> w32tm /config /manualpeerlist:"ntp.rdem-systems.com time.cloudflare.com" /syncfromflags:manual /update
> net stop w32time && net start w32time
> w32tm /resync /force

Si la resync échoue, vérifiez que le Windows Firewall autorise UDP 123 en sortie.

7. Pièges VM et hyperviseur

La virtualisation ajoute une deuxième autorité temporelle en concurrence avec NTP. Désactivez-la dans les invités qui font tourner chronyd/ntpd :

Après désactivation de la sync hôte-invité, redémarrez chronyd et attendez 1–3 intervalles de poll (64–256 s par défaut) pour que la sync se verrouille.

Vérification. Une fois le correctif appliqué, lancez le diagnostic en direct de ce validateur pour confirmer que stratum est passé à 1–5 et que l'offset est sous 100 ms. Puis mesurez le jitter pour vous assurer que l'horloge est stable, pas seulement synchronisée.

Pages de diagnostic liées :

Après correction — sites liés :