Maîtrisez la synchronisation horaire de Windows Server : comportement par défaut, hiérarchie Active Directory, bonnes pratiques en production, commandes prêtes à l’emploi et cas particulier d’AWS EC2 utilisant Amazon Time Sync Service (169.254.169.123).
Vue d’ensemble de la question
- Quelle est la source NTP utilisée par défaut par Windows Server selon le rôle (autonome, membre d’un domaine, contrôleur de domaine) ?
- Dans un domaine Active Directory, qui fait autorité pour l’heure et comment le vérifier de façon fiable ?
- Quelles bonnes pratiques appliquer en production pour éviter les dérives et les pannes Kerberos ?
- Pourquoi des instances Amazon EC2 affichent-elles
169.254.169.123
comme source, et est‑ce normal même en domaine ?
Réponse et solution
Comportement par défaut (règle d’or)
Windows Server s’appuie sur le service Windows Time (W32Time
) et adopte un comportement différent selon le rattachement au domaine.
Rôle / Contexte | Type de synchro | Source attendue | Notes importantes |
---|---|---|---|
Machine autonome (non jointe à AD) | NTP | Serveur(s) Internet, par défaut souvent time.windows.com | Paramétrable via W32Time / GPO locale |
Membre d’un domaine AD (poste ou serveur) | NT5DS (hiérarchie AD) | Contrôleur de domaine (DC) le plus approprié | Ne contacte pas time.windows.com ; suit la hiérarchie du domaine |
Contrôleur de domaine (hors PDC Emulator) | NT5DS | DC parent selon la hiérarchie | Ne parle pas à l’extérieur |
PDC Emulator du domaine racine de la forêt | NTP | Pairs NTP externes fiables (publics, appliances, Amazon TSS…) | Seul point de sortie recommandé vers l’Internet NTP |
Point clé : la valeur de registre NtpServer
peut afficher time.windows.com
même sur un membre de domaine, mais elle est ignorée tant que le paramètre Type
vaut NT5DS
. Autres valeurs possibles : NTP
(forces manuels), ou AllSync
(permet la cohabitation hiérarchie + pairs manuels).
Vérifier la source et l’état de la synchronisation
Les commandes ci‑dessous sont à exécuter en PowerShell ou Invite de commandes (élevée de préférence) :
w32tm /query /status
REM Affiche le stratum, la dernière synchro, l’offset estimé…
w32tm /query /source
REM Montre la source actuellement utilisée (ex. DC, 169.254.169.123, pool…)
w32tm /query /peers
REM Liste les pairs configurés et leur état (uniquement si Type = NTP/AllSync)
w32tm /query /configuration
REM Montre Type (NT5DS, NTP, AllSync), NtpServer, peering flags, intervals…
w32tm /monitor
REM Depuis un membre, surveille l’état des DC (domaine/forêt)
w32tm /stripchart /computer:\<peer> /samples:5 /dataonly
REM Mesure latence et décalage observés face à une source donnée </code></pre>
<p>Journaux utiles : <em>Observateur d’événements</em> → <em>Applications and Services Logs</em> → <em>Microsoft</em> → <em>Windows</em> → <em>Time‑Service</em> → <em>Operational</em> (événements de resynchronisation, changement de source, erreurs UDP 123, etc.).</p>
<h3>Bonnes pratiques « production » pour Active Directory</h3>
<ol>
<li><strong>Désigner une seule source externe</strong> : le <strong>PDC Emulator</strong> du domaine racine. Aucun autre hôte n’accède directement à l’Internet NTP.</li>
<li>Configurer pour le PDCe <strong>au moins trois ou quatre pairs NTP</strong> fiables, idéalement dispersés (stratum 1/2, opérateurs/ASN différents). Éviter les points uniques de défaillance.</li>
<li><strong>Tous les autres DC et membres</strong> doivent rester en <strong>NT5DS</strong> (hiérarchie AD). Ne mélangez pas des sources externes disparates sur les membres.</li>
<li>Ouvrir <strong>UDP/123</strong> en sortie depuis le PDCe vers ses pairs, et en interne entre membres ↔ DC. Sur AWS, ajuster les <em>Security Groups</em> et NACL en conséquence.</li>
<li><strong>Virtualisation</strong> : éviter la double synchronisation (hyperviseur + NTP). Pour un DC virtuel, privilégier NTP et <strong>désactiver la synchro temps</strong> côté hyperviseur pour ce DC.</li>
<li><strong>Surveillance</strong> : intégrer un contrôle régulier (<code>w32tm /monitor</code>, collecte d’événements Time‑Service), seuils d’alerte sur l’offset > quelques centaines de millisecondes.</li>
<li><strong>Sécurité Kerberos</strong> : la dérive admissible est limitée ; au‑delà de quelques minutes, l’authentification échoue. Une horloge stable est un prérequis de sécurité.</li>
</ol>
<h3>Commandes de configuration (référence rapide)</h3>
<h4>Sur le PDC Emulator (forêt racine)</h4>
<p>Configurer des pairs externes et l’annoncer comme source fiable pour le domaine.</p>
<pre><code>w32tm /config /manualpeerlist:"0.pool.ntp.org,0x9 1.pool.ntp.org,0x9 2.pool.ntp.org,0x9 3.pool.ntp.org,0x9" ^
/syncfromflags:manual /reliable:yes /update
net stop w32time && net start w32time
w32tm /resync /rediscover
</code></pre>
<ul>
<li><code>,0x9</code> = mode client + <em>SpecialPoll</em> (interrogation périodique selon l’intervalle spécial).</li>
<li><code>/reliable:yes</code> définit les drapeaux d’annonce ; ce DC se déclare <em>serveur de temps fiable</em> pour le domaine.</li>
</ul>
<h4>Sur les autres DC et tous les membres du domaine</h4>
<p>Forcer la hiérarchie Active Directory :</p>
<pre><code>w32tm /config /syncfromflags:domhier /update
w32tm /resync /rediscover
</code></pre>
<h4>Par stratégie de groupe (recommandé)</h4>
<p>Éviter les réglages manuels disséminés ; centraliser via GPO :</p>
<ul>
<li>Ordinateur → Modèles d’administration → <strong>Windows Time Service</strong>.</li>
<li><em>Time Providers</em> → <strong>Enable Windows NTP Client</strong> = Enabled (partout).</li>
<li>Sur le <strong>PDCe</strong> : <em>Configure Windows NTP Client</em> = Enabled,<br>
<strong>Type = NTP</strong>, <strong>NtpServer</strong> = vos pairs (avec <code>,0x9</code>), <em>SpecialPollInterval</em> (ex. <code>900</code> s), <em>MaxPosPhaseCorrection</em>/<em>MaxNegPhaseCorrection</em> ajustés.</li>
<li>Sur les <strong>autres machines</strong> : <em>Configure Windows NTP Client</em> = Enabled, <strong>Type = NT5DS</strong>.</li>
<li>Sur le <strong>PDCe</strong> : <em>Windows NTP Server</em> = Enabled (il servira l’heure aux membres).</li>
</ul>
<h3>Cas particulier : Amazon EC2 et 169.254.169.123</h3>
<p>La source <code>169.254.169.123</code> correspond à <strong>Amazon Time Sync Service</strong> (TSS). Sur EC2, les AMI Windows récentes y sont souvent préconfigurées ; voir <code>w32tm /query /source</code> : vous observerez <code>169.254.169.123,0x9</code>. C’est parfaitement <strong>normal</strong> pour des hôtes autonomes.</p>
<p>En domaine Active Directory, deux approches cohérentes existent :</p>
<ol>
<li><strong>Approche recommandée</strong> : seul le <strong>PDC Emulator</strong> pointe vers Amazon TSS (et/ou des pairs publics). <em>Toutes les autres</em> machines restent en <strong>NT5DS</strong> et s’alignent via la hiérarchie AD.
<pre><code>:: Sur le PDCe : Amazon TSS + redondance publique si souhaité
w32tm /config /manualpeerlist:"169.254.169.123,0x9 0.pool.ntp.org,0x9 1.pool.ntp.org,0x9" ^
/syncfromflags:manual /reliable:yes /update
net stop w32time && net start w32time
Approche homogène EC2 : autoriser toutes les machines (y compris les membres) à utiliser Amazon TSS. Cela fonctionne, mais court‑circuite la hiérarchie AD, disperse les points d’autorité et complique l’audit. À réserver aux architectures qui l’exigent explicitement et dûment documentées.
Si vous observez Type: AllSync
et Source: 169.254.169.123,0x9
sur des DC et des membres, c’est que la configuration autorise à la fois la hiérarchie et des pairs manuels ; pour revenir au schéma AD standard, exécutez sur tous sauf le PDCe :
w32tm /config /syncfromflags:domhier /update
w32tm /resync /rediscover
Interpréter rapidement une sortie type
Stratum: 4
Source: 169.254.169.123,0x9
NtpServer: time.windows.com,0x8
Poll Interval: 1024s
- Stratum : plus le chiffre est bas, plus la source est proche du temps de référence. Un PDCe aligné sur des stratum 1/2 donne un stratum généralement faible aux membres.
- Source : pair effectif (ex. Amazon TSS, DC, pool…).
- NtpServer : peut afficher un serveur par défaut (
time.windows.com
) mais il est ignoré siType = NT5DS
. - Poll Interval : période d’interrogation dynamique (polling), ajustée par l’algorithme.
Checklist opératoire (résumé exécutable)
- Identifier le PDC Emulator :
netdom query fsmo
- Configurer le PDCe avec des pairs NTP externes (
/manualpeerlist
) et l’annoncer comme fiable (/reliable:yes
). - Forcer NT5DS sur tous les autres DC/membres :
w32tm /config /syncfromflags:domhier /update
. - Vérifier sur un échantillon :
w32tm /query /source
,w32tm /query /status
,w32tm /monitor
. - Sur EC2 : choisir entre l’option recommandée (seul PDCe → Amazon TSS) ou l’option homogène (tous → Amazon TSS, documentée).
- Tracer les événements Time‑Service et ouvrir UDP/123 au bon périmètre. Désactiver la synchro hyperviseur sur les DC virtuels.
Annexes utiles pour aller plus loin
Paramètres essentiels et registres clés
Chemin / Paramètre | Rôle | Valeur / Effet | Remarques |
---|---|---|---|
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type | Mode de synchro | NT5DS , NTP ou AllSync | NT5DS = hiérarchie AD ; NTP = liste manuelle ; AllSync = mix possible |
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer | Pairs NTP | Ex. 0.pool.ntp.org,0x9 1.pool.ntp.org,0x9 | Ignoré si Type = NT5DS |
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags | Annonce fiabilité | Valeurs définissant si l’hôte se déclare source fiable | Réglé automatiquement par /reliable:yes sur le PDCe |
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval | Intervalle spécial | Ex. 900 (secondes) | Actif quand les flags incluent SpecialPoll |
Flags utiles pour NtpServer
Chaque pair peut être suffixé d’un flag hexadécimal ; les plus courants :
Flag | Signification | Quand l’utiliser |
---|---|---|
0x8 | Mode Client | Usage standard vers des serveurs publics/appliances |
0x1 | SpecialPoll (utilise l’intervalle spécial) | Périodicité contrôlée par SpecialPollInterval |
0x9 | 0x8 + 0x1 = Client + SpecialPoll | Recommandé dans la plupart des guides opérationnels |
0x2 | UseAsFallbackOnly | Pair de secours ; n’entre en jeu que si les autres échouent |
0x4 | SymmetricActive | Cas avancés (peering symétrique) ; rarement utilisé en AD |
Procédures rapides et scripts d’audit
Identifier le PDCe en PowerShell (si les RSAT sont disponibles) :
Get-ADDomain | Select-Object PDCEmulator
Échantillonner l’état de plusieurs hôtes :
foreach ($c in @("srv-dc1","srv-app1","srv-sql1")) {
Write-Host "=== $c ==="
w32tm /monitor /computers:$c
}
Cas de topologies multi‑sites
- Le PDCe du domaine racine reste la seule porte de sortie vers l’externe.
- Les PDCe des domaines enfants suivent la hiérarchie (
NT5DS
) vers la racine. - Assurez un routing interne sans filtrage sur UDP/123 entre sites, ou prévoyez des relais NTP internes explicitement approuvés.
Dépannage : symptômes fréquents et correctifs
Symptôme | Cause probable | Actions correctives |
---|---|---|
Un membre de domaine affiche time.windows.com comme source | Type = NTP ou AllSync forcé par GPO locale | Rétablir NT5DS : w32tm /config /syncfromflags:domhier /update , puis w32tm /resync /rediscover |
Échecs Kerberos, horloges décalées de plusieurs minutes | PDCe mal configuré, double synchronisation sur DC virtuel | Corriger le PDCe, désactiver la synchro hyperviseur, vérifier AnnounceFlags et l’accessibilité UDP/123 |
Event récurrent de perte de source NTP | Firewall/NACL bloquant, pair NTP indisponible, DNS du pool capricieux | Autoriser UDP/123, ajouter d’autres pairs hétérogènes, tester via w32tm /stripchart |
Sortie Type: AllSync partout, y compris DC | GPO appliquée globalement avec AllSync ou Manual actif | Limiter la GPO « NTP manuel » au PDCe uniquement ; le reste en NT5DS |
Grand saut d’horloge au redémarrage | Serveur très en retard, MaxPos/NegPhaseCorrection trop strict | Relâcher temporairement ces seuils le temps de recaler, ou effectuer une resynchro forcée avec précaution hors production |
Bonnes pratiques de précision
- Choisir des pairs externes géographiquement proches du PDCe (latence faible = offset réduit).
- Éviter le mix de sources de qualité très différentes (appliance locale + pool lointain + TSS) ; privilégier la cohérence.
- Sur AWS, Amazon TSS (
169.254.169.123
) est une excellente source pour le PDCe si votre SI est majoritairement hébergé dans la même région.
FAQ opérationnelle
Les membres du domaine peuvent-ils tous utiliser directement Amazon TSS ?
Techniquement oui, mais cela contourne la hiérarchie AD et disperse le contrôle. Réservez cette option aux contextes où la conformité l’exige, avec une documentation claire et des contrôles adaptés.
Faut-il préférer des noms pool.ntp.org ou des adresses fixes ?
Les noms de pool apportent de la diversité et de la résilience ; des adresses fixes d’appliances internes apportent la maîtrise. Pour un PDCe, combiner plusieurs serveurs de qualité est souvent le meilleur compromis.
Que faire si un DC virtuel « raccroche » sa montre à l’hyperviseur malgré tout ?
Vérifiez et désactivez l’intégration de synchronisation temps côté hyperviseur (Hyper‑V, VMware, etc.) pour les DC. Laissez NTP faire son travail.
Exemples consolidés
Configurer un PDCe avec quatre pairs publics
w32tm /config /manualpeerlist:"0.fr.pool.ntp.org,0x9 1.fr.pool.ntp.org,0x9 2.europe.pool.ntp.org,0x9 ntpX.mon-fai.net,0x9" ^
/syncfromflags:manual /reliable:yes /update
net stop w32time && net start w32time
w32tm /resync /rediscover
w32tm /query /status
w32tm /query /peers
Revenir à la hiérarchie AD sur un membre
w32tm /config /syncfromflags:domhier /update
w32tm /resync /rediscover
w32tm /query /source
Audit express de plusieurs DC
w32tm /monitor /domain:mon-domaine.local
REM Identifie le DC de référence et l’offset observé par rapport à chacun
Conclusion pragmatique
Dans un environnement Active Directory, laissez la hiérarchie de domaine distribuer l’heure. Le PDC Emulator du domaine racine doit être votre seul point de contact avec des sources externes (Amazon TSS, appliances NTP, pools publics). Sur AWS,
169.254.169.123
est un excellent pair pour le PDCe ; alignez le reste en NT5DS et vérifiez régulièrement avecw32tm
.
Référence synthétique à garder sous la main
- Vérification rapide :
w32tm /query /source
,w32tm /query /status
,w32tm /monitor
. - PDCe :
/manualpeerlist
+/reliable:yes
+/syncfromflags:manual
. - Autres hôtes :
/syncfromflags:domhier
exclusivement. - EC2 :
169.254.169.123
normal ; décidez si seul le PDCe l’utilise (recommandé) ou si vous homogénéisez toute la flotte (à documenter). - Firewall : UDP/123 ouvert là où il faut, pas plus.
- Virtualisation : pas de double synchro pour les DC.