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 :