EN FR Accueil

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)
ChampCe 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.
StratumDistance à 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.
PrecisionRésolution de l'horloge en puissance de deux secondes. Informatif ; pas un signe de panne en soi.
Root Delay / Root DispersionDé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.
ReferenceIdLa 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 TimeLe 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.
SourceAvec 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 IntervalSecondes 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 :

TypeSignification
NT5DSSuivre la hiérarchie de domaine Active Directory. Correct pour chaque membre et chaque DC sauf l'émulateur PDC racine de forêt.
NTPUtiliser la liste de pairs manuelle NtpServer. Correct pour l'émulateur PDC racine de forêt, et pour les machines autonomes (hors domaine).
NoSyncLe service tourne mais ne se synchronise jamais. Presque toujours faux, sauf intention.
AllSyncUtiliser 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 :

FlagNomEffet
0x01SpecialIntervalSonder au SpecialPollInterval fixe au lieu de l'intervalle adaptatif.
0x02UseAsFallbackOnlyN'utiliser ce pair que si les autres échouent.
0x04SymmetricActiveUtiliser le mode NTP symétrique actif (pair, pas client).
0x08ClientUtiliser 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ômeCause la plus probableOù aller
« No time data was available » au resyncSource injoignable, ou membre ne joint pas de DC§9 stripchart + pare-feu / port 123
Un membre dérive, les autres vont bienMembre à tort en type NTP ou pointant à l'externe§3 — remettre en NT5DS (§8)
Tout le domaine faux du même offsetSource de l'émulateur PDC racine fausse ou injoignable§4 + §8 réparation PDC
Source en Local CMOS Clock, stratum 0Aucune 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 :

CibleCondition
~1 secondeLa 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 msUne cible haute précision documentée (Windows Server 2016+) avec des conditions réseau raisonnables et le service de temps Windows correctement configuré.
1 msWindows 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 :

EventSignification typique
12Time 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.
29NtpClient 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.
36Trop de temps écoulé depuis la dernière sync réussie ; l'horloge n'est plus fiable.
47Pas 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.
129NtpClient n'a pu joindre un pair de domaine / erreur de découverte de la hiérarchie — la chaîne NT5DS est rompue.
134NtpClient 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.

Après la réparation — sites liés :

Questions fréquentes

Pourquoi mon horloge Windows ne se synchronise-t-elle pas ?

Sur une machine jointe au domaine, la cause est presque toujours la hiérarchie de temps Active Directory, pas un mauvais serveur NTP. Les membres se synchronisent depuis un contrôleur de domaine, les DC depuis l'émulateur PDC, et l'émulateur PDC de la racine de forêt depuis une source externe. Si un maillon de cette chaîne est rompu — un PDC mal configuré, un DC ayant perdu le contact, ou un membre pointé à tort vers un serveur NTP externe — l'horloge dérive. Lancez 'w32tm /query /status' et 'w32tm /query /configuration' pour voir quel maillon a lâché. Sur une machine autonome, vérifiez que le service de temps Windows tourne et que l'UDP 123 sortant est ouvert.

Qu'affiche w32tm /query /status ?

Il affiche l'état de sync en direct : Leap Indicator, Stratum (1-15 valides, 0 signifie non spécifié/non synchronisé dans la sortie W32Time), Précision, Root Delay, Root Dispersion, ReferenceId (la source sur laquelle l'horloge est verrouillée), Last Successful Sync Time, Source et Poll Interval. Un membre sain montre une Source pointant vers un contrôleur de domaine et un Last Successful Sync Time récent. Un Last Successful Sync Time ancien, ou une Source 'Local CMOS Clock' / 'Free-running System Clock', signifie que la machine n'est pas réellement synchronisée.

Comment définir la source de temps de l'émulateur PDC ?

Seul l'émulateur PDC du domaine racine de forêt doit pointer vers une source externe. Configurez-le avec 'w32tm /config /manualpeerlist:"ntp1 ntp2 ntp3" /syncfromflags:manual /reliable:yes /update', puis redémarrez le service de temps Windows. /reliable:yes le marque comme source de temps fiable pour le domaine. Tous les autres DC et tous les membres doivent rester sur le type NT5DS (hiérarchie de domaine) par défaut, pas sur une liste de pairs manuelle.

Pourquoi w32tm /resync indique no time data was available ?

« The computer did not resync because no time data was available » signifie que le fournisseur de temps n'a pas obtenu d'échantillon exploitable. Trois causes habituelles : (1) la source configurée est injoignable — UDP 123 bloqué par un pare-feu, ou échec DNS de résolution du pair ; (2) la machine est en NT5DS mais ne joint aucun contrôleur de domaine ; (3) la source a répondu mais a été rejetée hors tolérance. Testez la source avec 'w32tm /stripchart /computer:<source> /samples:5 /dataonly', vérifiez le port 123 et examinez le journal Système pour les erreurs W32Time.

Windows Time peut-il atteindre 1 milliseconde de précision ?

Sur Windows Server 2016 et ultérieur, Microsoft supporte 1 ms de précision, mais seulement sous conditions strictes : un chemin court et à faible latence vers la source, un stratum faible, peu de sauts réseau et le réglage registre haute précision appliqué. Par défaut, le temps du domaine est borné par l'écart Kerberos de 5 minutes plutôt que par un SLA strict ; 50 ms et 1 ms sont des cibles haute précision documentées sur Windows Server 2016+ qui demandent une ingénierie délibérée. Les systèmes antérieurs à 2016 n'ont aucune garantie sous la seconde.