Sincronización de tiempo y configuración NTP en Windows Server

Descripción general

Este artículo explica el funcionamiento de la sincronización de tiempo en un entorno de dominio de Windows Server.
Se abordan el diseño basado en el PDC Emulator, la configuración del servicio w32time, la aplicación centralizada mediante GPO y las consideraciones para entornos virtualizados.


Referencia de variables

Variable Ejemplo Descripción
<<PDC_HOST>> DC01.contoso.local PDC Emulator (referencia de tiempo del dominio)
<<SECONDARY_DC>> DC02.contoso.local Controlador de dominio secundario
<<NTP_SERVER>> ntp.nict.jp Servidor NTP externo
<<CLIENT_HOST>> SRV01.contoso.local Servidor miembro o cliente
<<DOMAIN_NAME>> contoso.local Nombre del dominio de Active Directory

Paso 1: Estructura básica de sincronización en el dominio

En Active Directory, la sincronización del tiempo sigue una jerarquía:

Nivel Fuente de sincronización Descripción
PDC Emulator Servidor NTP externo Fuente de tiempo principal y confiable del dominio
Otros DC PDC Emulator Mantienen la jerarquía de tiempo del dominio
Servidores miembros / Clientes DC más cercano Se sincronizan automáticamente para mantener la coherencia de Kerberos

En entornos workgroup, cada servidor debe configurarse manualmente con una fuente NTP.


Paso 2: Configuración del PDC Emulator con NTP externo

El PDC Emulator se configura como la única fuente de tiempo confiable del dominio.

# Configurar servidores NTP externos (se pueden definir varios)
w32tm /config /manualpeerlist:"ntp.nict.jp time.google.com" /syncfromflags:manual /reliable:yes /update

# Anunciar como fuente de tiempo confiable
reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config /v AnnounceFlags /t REG_DWORD /d 5 /f

# Reiniciar el servicio
net stop w32time && net start w32time

Verificación:

w32tm /query /configuration
w32tm /query /status

Paso 3: Configuración de otros DC y servidores miembros

Los demás controladores de dominio y servidores obtienen la hora automáticamente del PDC, aunque también puede configurarse manualmente.

# Configuración según la jerarquía del dominio
w32tm /config /syncfromflags:domhier /update
net stop w32time && net start w32time

Forzar sincronización y comprobar el estado:

w32tm /resync /force
w32tm /query /status

Paso 4: Política unificada de sincronización mediante GPO (PowerShell)

Las configuraciones de tiempo pueden aplicarse globalmente mediante Política de Grupo (GPO).
Se gestionan completamente con PowerShell, sin usar interfaces gráficas.


1. Cargar el módulo de GPO y revisar políticas existentes

Import-Module GroupPolicy

# Listar políticas
Get-GPO -All | Select-Object DisplayName, Id, GpoStatus

# Comprobar la existencia de la Default Domain Policy
Get-GPO -Name "Default Domain Policy" | Select-Object DisplayName, ModificationTime

2. Comprobar configuraciones actuales de tiempo

# Consultar valores existentes (si no existen, no hay configuración)
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

Si aparece el error "no encontrado", significa simplemente que el valor aún no está definido.


3. Activar y configurar el cliente NTP

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

# Modo de sincronización (NT5DS=jerarquía del dominio / NTP=externo)
Set-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient" `
  -ValueName Type -Type String -Value "NT5DS"

# Servidor NTP externo (solo para el PDC)
Set-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient" `
  -ValueName NtpServer -Type String -Value "<<NTP_SERVER>>,0x8"

# Intervalo de sondeo (en segundos)
Set-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLM\SOFTWARE\Policies\Microsoft\W32Time\TimeProviders\NtpClient" `
  -ValueName SpecialPollInterval -Type DWord -Value 3600

4. Verificar el enlace y ámbito de la GPO

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

5. Aplicar y validar la GPO

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

6. Comprobar valores reflejados en el registro

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

Ejemplo de salida:

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

Consideraciones en entornos virtualizados

En entornos virtualizados (Hyper-V, VMware, etc.) pueden generarse conflictos si tanto el host como la VM tienen sincronización activa.
Casos comunes:

  • Sincronización activa en host y VM
  • PDC ejecutándose en VM con fuente NTP distinta
  • Snapshots o migraciones que provocan retrocesos de tiempo

Recomendaciones:

  • Desactivar sincronización del host en el PDC Emulator
  • Permitir sincronización del host en otras VM
  • Unificar la sincronización entre DC mediante w32time

Pruebas y resolución de problemas

# Prueba de sincronización NTP
w32tm /stripchart /computer:"<<NTP_SERVER>>" /dataonly /samples:5

# Estado del servicio
Get-Service w32time

# Últimos 10 eventos relacionados con W32Time
Get-WinEvent -LogName System | Where-Object {$_.ProviderName -eq "Microsoft-Windows-Time-Service"} |
  Select-Object TimeCreated, Id, LevelDisplayName, Message -First 10

Resumen

  • El PDC Emulator es la única fuente de tiempo confiable del dominio.
  • Solo el PDC usa servidores NTP externos; los demás siguen la jerarquía domhier.
  • En entornos virtualizados, desactive la sincronización del host en el PDC para evitar conflictos.