Synchronisation de l’heure et configuration NTP sur Windows Server

Vue d’ensemble

Cet article explique le fonctionnement de la synchronisation de l’heure dans un environnement de domaine Windows Server.
Nous couvrons l’architecture centrée sur le PDC Emulator comme référence, la configuration du service w32time, l’uniformisation via les GPO, ainsi que les points d’attention en environnements virtualisés.


Référence des variables

Variable Exemple Description
<<PDC_HOST>> DC01.contoso.local PDC Emulator (référence temporelle du domaine)
<<SECONDARY_DC>> DC02.contoso.local Autres contrôleurs de domaine
<<NTP_SERVER>> ntp.nict.jp Serveur NTP externe (nom ou IP)
<<CLIENT_HOST>> SRV01.contoso.local Serveur membre ou client
<<DOMAIN_NAME>> contoso.local Nom de domaine Active Directory

Étape 1 : Architecture de synchronisation dans le domaine

Active Directory s’appuie sur une hiérarchie de temps :

Niveau Source de synchronisation Description
PDC Emulator Serveur NTP externe Source de temps centrale et de confiance du domaine
Autres DC PDC Emulator Maintiennent la hiérarchie temporelle du domaine
Serveurs membres / Clients DC le plus proche Synchronisation automatique pour la cohérence Kerberos

En workgroup, chaque hôte doit définir manuellement sa source NTP.


Étape 2 : Configuration NTP externe du PDC Emulator

Le PDC Emulator doit être configuré comme unique source de temps de confiance.

# Définir des serveurs NTP externes (plusieurs possibles)
w32tm /config /manualpeerlist:"ntp.nict.jp time.google.com" /syncfromflags:manual /reliable:yes /update

# Annoncer comme source de temps de confiance
reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config /v AnnounceFlags /t REG_DWORD /d 5 /f

# Redémarrer le service
net stop w32time && net start w32time

Vérification :

w32tm /query /configuration
w32tm /query /status

Étape 3 : Paramétrage des autres DC et des membres

Les autres DC et membres se synchronisent automatiquement avec le PDC, mais on peut aussi l’imposer manuellement.

# Suivre la hiérarchie du domaine
w32tm /config /syncfromflags:domhier /update
net stop w32time && net start w32time

Forcer la sync et contrôler l’état :

w32tm /resync /force
w32tm /query /status

Étape 4 : Politique unifiée via GPO (PowerShell)

Les paramètres de temps peuvent être appliqués au niveau du domaine via les GPO.
Ici, tout est géré en PowerShell (sans interface graphique).


1. Charger le module GPO et auditer les stratégies

Import-Module GroupPolicy

# Lister les GPO
Get-GPO -All | Select-Object DisplayName, Id, GpoStatus

# Vérifier l’existence de la Default Domain Policy
Get-GPO -Name "Default Domain Policy" | Select-Object DisplayName, ModificationTime

2. Consulter les paramètres temporels actuels

# Valeurs existantes (si introuvables, non encore définies dans la GPO)
Get-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient" `
  -ValueName Type

Get-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient" `
  -ValueName NtpServer

Un message « introuvable » signifie simplement que la valeur n’est pas encore définie.


3. Activer et configurer le client NTP

# Activer le client NTP
Set-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient" `
  -ValueName Enabled -Type DWord -Value 1

# Mode de synchronisation (NT5DS=hiérarchie du domaine / NTP=externe)
Set-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient" `
  -ValueName Type -Type String -Value "NT5DS"

# Source NTP externe (uniquement pour le PDC)
Set-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient" `
  -ValueName NtpServer -Type String -Value "<<NTP_SERVER>>,0x8"

# Intervalle d’interrogation (secondes)
Set-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient" `
  -ValueName SpecialPollInterval -Type DWord -Value 3600

4. Vérifier le lien et le périmètre de la GPO

Get-GPOReport -Name "Default Domain Policy" -ReportType Html -Path "$env:TEMP\DefaultDomainPolicy.html"

5. Appliquer et valider la GPO

gpupdate /force
gpresult /r
Get-GPResultantSetOfPolicy -ReportType Html -Path "$env:TEMP\gpresult.html"

6. Contrôler les valeurs réellement appliquées dans le Registre

reg query "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient"

Exemple de sortie :

Enabled       REG_DWORD  0x1
Type          REG_SZ     NT5DS
NtpServer     REG_SZ     ntp.nict.jp,0x8
SpecialPollInterval REG_DWORD 0xe10

Points d’attention en environnement virtualisé

Dans Hyper-V/VMware, des conflits peuvent apparaître si l’hôte et la VM synchronisent tous deux l’heure.
Cas typiques :

  • Synchronisation active côté hôte et VM
  • PDC virtualisé avec une source NTP différente
  • Snapshots ou migrations provoquant des décalages/retours en arrière

Recommandations :

  • Désactiver la synchronisation hôte sur le PDC Emulator
  • Autoriser la sync hôte pour les autres VM si nécessaire
  • Entre DC, standardiser uniquement via w32time

Tests et dépannage

# Test NTP (latence/dérive)
w32tm /stripchart /computer:"<<NTP_SERVER>>" /dataonly /samples:5

# État du service
Get-Service w32time

# 10 derniers événements du service temps
Get-WinEvent -LogName System | Where-Object {$_.ProviderName -eq "Microsoft-Windows-Time-Service"} |
  Select-Object TimeCreated, Id, LevelDisplayName, Message -First 10

Résumé

  • Le PDC Emulator est l’unique source de temps de confiance du domaine.
  • Seul le PDC utilise des serveurs NTP externes ; les autres hôtes suivent la hiérarchie domhier.
  • En environnement virtualisé, désactivez la sync hôte sur le PDC pour éviter les conflits.