Dépannage Windows Time
Le hub W32Time / Active Directory de référence — décoder le statut, réparer l'émulateur PDC, échapper au piège VM
1. Pourquoi le temps Windows diffère d'un démon Linux
Trois différences piègent les admins venus de chrony/ntpd :
- W32Time n'est pas un démon NTP par défaut. Sur un membre de domaine il tourne en fournisseur
NT5DS, suivant la hiérarchie de domaine, pas une liste de serveurs que vous avez choisie. Il parle le protocole NTP mais sa politique, c'est Active Directory. - Le temps a un rôle de sécurité. Kerberos rejette l'authentification dès que les horloges du client et du serveur diffèrent de plus de l'écart autorisé — 5 minutes par défaut (
MaxClockSkew). Une horloge qui dérive ne fausse pas que les journaux ; elle bloque les utilisateurs. - Il existe une source de vérité désignée. L'émulateur PDC du domaine racine de forêt est l'horloge autoritaire de toute la forêt. Tout le reste y remonte.
2. Décoder w32tm /query /status champ par champ
> w32tm /query /status
Leap Indicator: 0(no warning)
Stratum: 4 (secondary reference - syncd by (S)NTP)
Precision: -23 (119.209ns per tick)
Root Delay: 0.0312500s
Root Dispersion: 7.7902343s
ReferenceId: 0xC0A80001 (source IP: 192.168.0.1)
Last Successful Sync Time: 19/06/2026 09:14:02
Source: dc01.corp.example.com
Poll Interval: 10 (1024s)
| Champ | Ce qu'il vous dit |
|---|---|
Leap Indicator | État d'avertissement de seconde intercalaire. 0(no warning) est normal ; 3(not synchronized) signifie horloge non synchronisée — signal d'alarme. |
Stratum | Distance à l'horloge de référence. Un membre est typiquement en stratum 3–5. Un stratum 0 dans la sortie W32Time signifie non spécifié/non synchronisé — la machine n'a pas de source. |
Precision | Résolution de l'horloge en puissance de deux secondes. Informatif ; pas un signe de panne en soi. |
Root Delay / Root Dispersion | Délai aller-retour vers, et borne d'erreur accumulée depuis, la référence racine. Une Root Dispersion grande et croissante signale une source qui se dégrade ou s'est perdue. |
ReferenceId | La source verrouillée, en IP ou code 4 caractères. LOCL / 0x4C4F434C (« Local CMOS Clock ») signifie qu'elle a abandonné et tourne en roue libre. |
Last Successful Sync Time | Le champ le plus utile. S'il a des heures ou des jours, la machine n'est pas synchronisée actuellement, quoi que dise la config. |
Source | Avec qui elle se synchronise. Devrait être un DC (sur un membre) ou votre NTP externe (sur l'émulateur PDC). Free-running System Clock ou Local CMOS Clock = non synchronisé. |
Poll Interval | Secondes entre sondages (en puissance de deux). En NT5DS c'est géré ; une petite valeur bloquée peut indiquer des re-sync répétées. |
3. Décoder /query /configuration — Type et flags
w32tm /query /status donne l'état en direct ; /query /configuration donne la politique voulue. Le champ décisif est Type :
| Type | Signification |
|---|---|
NT5DS | Suivre la hiérarchie de domaine Active Directory. Correct pour chaque membre et chaque DC sauf l'émulateur PDC racine de forêt. |
NTP | Utiliser la liste de pairs manuelle NtpServer. Correct pour l'émulateur PDC racine de forêt, et pour les machines autonomes (hors domaine). |
NoSync | Le service tourne mais ne se synchronise jamais. Presque toujours faux, sauf intention. |
AllSync | Utiliser tous les fournisseurs (NTP et hiérarchie de domaine). Rare ; généralement signe de confusion. |
L'entrée NtpServer porte des flags par pair, ajoutés en ,0x…. Ils se combinent bit à bit :
| Flag | Nom | Effet |
|---|---|---|
0x01 | SpecialInterval | Sonder au SpecialPollInterval fixe au lieu de l'intervalle adaptatif. |
0x02 | UseAsFallbackOnly | N'utiliser ce pair que si les autres échouent. |
0x04 | SymmetricActive | Utiliser le mode NTP symétrique actif (pair, pas client). |
0x08 | Client | Utiliser le mode client NTP — la valeur normale pour un serveur amont. |
Une ligne typique d'émulateur PDC : time.nist.gov,0x9 — soit 0x08 (client) + 0x01 (intervalle spécial) : mode client, sondage fixe.
4. La hiérarchie de temps Active Directory & l'émulateur PDC
C'est le modèle qui explique 80 % des tickets « l'heure du domaine est fausse ». Le temps descend une chaîne fixe :
┌─────────────────────────────────────────────┐
│ Source UTC externe (GNSS / NTP / NTS) │
└───────────────────┬───────────────────────────┘
│ Type=NTP, /reliable:yes
▼
┌─────────────────────────────────────────────┐
│ Émulateur PDC — domaine RACINE DE FORÊT │ ← l'unique horloge autoritaire
└───────────────────┬───────────────────────────┘
│ hiérarchie de domaine (NT5DS)
▼
┌─────────────────────────────────────────────┐
│ Émulateur PDC — chaque domaine enfant │
└───────────────────┬───────────────────────────┘
│ NT5DS
▼
┌─────────────────────────────────────────────┐
│ Autres contrôleurs de domaine │
└───────────────────┬───────────────────────────┘
│ NT5DS
▼
┌─────────────────────────────────────────────┐
│ Serveurs membres & postes de travail │
└─────────────────────────────────────────────┘
5. Diagnostic par symptôme (arbre de décision)
| Symptôme | Cause la plus probable | Où aller |
|---|---|---|
| « No time data was available » au resync | Source injoignable, ou membre ne joint pas de DC | §9 stripchart + pare-feu / port 123 |
| Un membre dérive, les autres vont bien | Membre à tort en type NTP ou pointant à l'externe | §3 — remettre en NT5DS (§8) |
| Tout le domaine faux du même offset | Source de l'émulateur PDC racine fausse ou injoignable | §4 + §8 réparation PDC |
Source en Local CMOS Clock, stratum 0 | Aucune source exploitable — non synchronisé | diagnostic stratum 16 / no-sync |
| Le temps saute, récupère, resaute (VM) | Sync hôte de l'hyperviseur en conflit avec W32Time | §5 note VM ci-dessous |
6. La précision réellement atteignable
Posez des attentes honnêtes avant de promettre un SLA. Bornes supportées par Microsoft :
| Cible | Condition |
|---|---|
| ~1 seconde | La tolérance de travail approximative d'un domaine par défaut — une attente pratique, pas un SLA garanti. D'origine, le temps du domaine est borné par l'écart Kerberos de 5 minutes, pas par un contrat strict d'une seconde. |
| 50 ms | Une cible haute précision documentée (Windows Server 2016+) avec des conditions réseau raisonnables et le service de temps Windows correctement configuré. |
| 1 ms | Windows Server 2016 ou ultérieur uniquement, et seulement avec un chemin court à faible latence vers la source, un stratum faible, peu de sauts réseau et le réglage registre haute précision appliqué. |
7. Décodeur des Event IDs W32Time
Depuis le journal Système, source Time-Service (W32Time). Ceux à retenir :
| Event | Signification typique |
|---|---|
12 | Time Provider NtpClient : la machine est configurée pour utiliser la hiérarchie de domaine. Sur un émulateur PDC racine de forêt, c'est l'invite à configurer plutôt une source externe fiable. Informatif/avertissement, pas une panne sur un membre normal. |
29 | NtpClient sans source de temps fiable et n'a pu joindre un pair configuré manuellement. Fréquent après une liste de pairs manuelle erronée. |
36 | Trop de temps écoulé depuis la dernière sync réussie ; l'horloge n'est plus fiable. |
47 | Pas de réponse valide d'un pair configuré manuellement — il ne répond pas de façon exploitable sur l'UDP 123. |
50 | Écart de temps trop grand pour être corrigé, ou perte de sync — W32Time a cessé de corriger. |
129 | NtpClient n'a pu joindre un pair de domaine / erreur de découverte de la hiérarchie — la chaîne NT5DS est rompue. |
134 | NtpClient n'a pu joindre un pair configuré manuellement à cause d'un échec de résolution DNS — très fréquent et facile à manquer : le nom du pair ne se résout pas. |
8. Recettes de réparation (spécifiques AD)
Pour la syntaxe complète de chaque commande, voir la référence des commandes w32tm. Voici les procédures spécifiques AD :
Remettre un membre pointé à tort vers un NTP externe → en NT5DS
> w32tm /config /syncfromflags:domhier /update
> net stop w32time && net start w32time
> w32tm /resync /force
Configurer l'émulateur PDC racine de forêt (la seule source externe)
> w32tm /config /manualpeerlist:"time.cloudflare.com,0x8 ntp.rdem-systems.com,0x8" ^
/syncfromflags:manual /reliable:yes /update
> net stop w32time && net start w32time
> w32tm /resync /force
Réinitialisation complète si la configuration est corrompue
:: Désenregistrer puis réenregistrer le service, puis reconfigurer
> net stop w32time
> w32tm /unregister
> w32tm /register
> net start w32time
> w32tm /resync /force
9. Vérifier la réparation
Mesurez l'offset vers la source voulue directement — ne vous fiez pas à la seule config :
:: Comparer l'horloge de cette machine à sa source, 5 échantillons
> w32tm /stripchart /computer:dc01.corp.example.com /samples:5 /dataonly
Un résultat sain montre des offsets petits et stables (dizaines de millisecondes sur un LAN). Confirmez ensuite que le serveur dont vous dépendez répond lui-même correctement avec le vérificateur de serveur NTP, et relancez w32tm /query /status pour voir un Last Successful Sync Time frais.
Pages de diagnostic liées :
Après la réparation — sites liés :
- Mesurer gigue, offset, latence → ntp-tester.eu
- Produire des preuves d'audit NIS 2 / ISO 27001 → online-ntp-validator.com
- Architecture de référence entreprise → ntp.rdem-systems.com