La sincronización precisa de la hora es crucial para Kerberos, los registros de eventos y prácticamente cualquier aplicación distribuida. Este tutorial explica cómo Windows maneja el protocolo NTP por defecto y muestra la forma recomendada de configurarlo en entornos empresariales y en la nube, paso a paso y con ejemplos prácticos.
Servidor NTP predeterminado en Windows
En todas las ediciones modernas de Windows el servicio Windows Time (W32Time) se instala y arranca de manera automática. El comportamiento varía según el equipo pertenezca o no a un dominio:
- Equipos en grupo de trabajo (workgroup): adoptan la directiva “
NtpClient
→time.windows.com,0x9
”. Es decir, consultan el hosttime.windows.com
mediante NTP/UDP 123 cada 7 días (2Stratum 15). - Equipos unidos a un dominio AD: ignoran interiores las fuentes públicas y utilizan el controlador de dominio que detecten como más cercano. No generan tráfico NTP externo.
En escenarios híbridos o de laboratorio este comportamiento puede crear confusión; basta ejecutar w32tm /query /source
para comprobar la fuente real en cada caso.
Jerarquía de sincronización en Active Directory
Active Directory implementa su propia jerarquía, sustentada en el rol PDC Emulator (Flexible Single Master Operation, FSMO):
- El PDC Emulator obtiene la hora de fuentes externas o, en la nube, de un servicio de hora interno (p. ej.
169.254.169.123
en AWS). - Los demás controladores de dominio se sincronizan con el PDC Emulator.
- Los equipos miembro consultan al DC que les ha autenticado (sitio AD local).
Este diseño minimiza el uso de enlaces WAN y reduce el riesgo de bucles NTP o discrepancias entre subredes.
Verificación y comandos útiles
Comando | Propósito | Salida significativa |
---|---|---|
w32tm /query /status | Diagnóstico en vivo | Leap Indicator , Stratum , Last Successful Sync Time |
w32tm /query /source | Fuente actual | time.windows.com , 169.254.169.123 , nombre DNS o dirección IP |
w32tm /query /configuration | Parámetros efectivos | Bloque [TimeProviders] con NtpClient y lista de servidores |
Tip: en máquinas EC2 de Amazon, la plantilla estándar inserta 169.254.169.123
como origen predeterminado. Mientras el PDC Emulator use la misma fuente, la coherencia interna está garantizada.
Buenas prácticas para entornos de producción
Recomendación | Motivo |
---|---|
Definir al menos 2–4 fuentes externas en el PDC Emulator:w32tm /config /manualpeerlist:"0.pool.ntp.org,0x8 1.pool.ntp.org,0x8" /syncfromflags:manual /update | Resiliencia y consenso estadístico (algoritmo Falseticker) |
Forzar resincronización inmediata:w32tm /resync /rediscover | Aplica la configuración sin reiniciar servicios |
Restringir el puerto UDP 123 en el perímetro; permitir solo DC ⇄ fuentes externas y DC ⇄ equipos internos | Reduce superficie de ataque contra spoofing NTP y DDoS de reflexión |
Ajustar SpecialPollInterval (p. ej. 900 s) y límites MaxPosPhaseCorrection / MaxNegPhaseCorrection | Evita saltos bruscos que desordenan registros o rompen Kerberos |
Activar registro detallado:w32tm /debug /enable /file:C:\Logs\w32time.log /size:10000000 /entries:0‑300 | Facilita auditoría, alertas y RCA (Root Cause Analysis) |
Monitorizar el stratum con SCOM, Zabbix o Prometheus | Un aumento inesperado indica pérdida de la fuente primaria |
Documentar la cadena de confianza: ubicación de servidores, métodos de respaldo GPS o PTP, ventanas de mantenimiento | Evita errores durante migraciones o desastres |
Procedimiento completo paso a paso
Preparar el PDC Emulator
- Localiza el PDC Emulator:
netdom query fsmo
. - Crea una lista de servidores NTP confiables (ideal: dos de la NTP Pool, uno de tu ISP y uno PPS/GPS local).
- Ejecuta la configuración manual mostrada antes.
- Verifica con
w32tm /query /status
que el Stratum se reduzca (normalmente a 2 o 3). - Crea una política de grupo para asegurarte de que nadie sobrescriba la lista.
Asegurar los demás controladores de dominio
W32TM /config /syncfromflags:domhier /update
W32TM /resync
Con domhier
se indica que estos DC confíen sólo en la jerarquía nativa de AD, descartando cualquier configuración residual.
Aplicar la configuración a estaciones y servidores miembro
Cuando el PDC Emulator y los demás DC estén alineados, las estaciones heredarán la hora correcta en el siguiente ciclo de autenticación o al ejecutar gpupdate /force
. Para acelerar el proceso se puede lanzar:
W32TM /resync /computers:NombreEquipo
Verificar desde un host Linux externo
$ chronyc sources -v
$ ntpdate -q nombre.del.pdc
Estos comandos permiten comprobar el desfase (offset) y la fiabilidad (reach) sin depender de herramientas Microsoft.
Integración con servicios en la nube
Los hipervisores modernos ofrecen un canal de sincronía interno, pero conviene entender sus matices:
- AWS Time Sync Service: dirección
169.254.169.123
; Stratum 4 distribuido por cada zona de disponibilidad. - Azure Time:
time.windows.com
resolviendo hacia una IP anycast dentro de Azure. Se recomienda fija y con,0x8
. - Google Cloud Time Service: mecanismo híbrido NTP y PTP, accesible sin costo en la red 10.128.0.0/9.
Siempre que el PDC Emulator apunte a la fuente que ofrezca la nube, todo el bosque AD aprovechará la ventaja de la baja latencia sin exponer puertos al exterior.
Impacto de una hora incorrecta
No es raro subestimar el problema hasta que se rompen procesos críticos. Algunos síntomas habituales:
- Mensajes “Clock Skew” en autenticación Kerberos (TGS expired).
- Errores al unirse al dominio: “Target principal name is incorrect”.
- Logs desordenados que complican correlación de eventos de seguridad.
- Fallos SAML/OAuth por tokens marcados como fuera de ventana.
- Incoherencias en clústeres SQL Always On o Hyper‑V Replica.
La hora es una “dependencia invisible”; invertir tiempo en un diseño sólido evita horas de depuración posterior.
Automatización con PowerShell
Para quienes gestionan cientos de dominios es preferible industrializar el proceso:
$NtpServers = "0.europe.pool.ntp.org,0x8","1.europe.pool.ntp.org,0x8"
Invoke-Command -ComputerName (Get-ADDomainController -Filter *).HostName `
-ScriptBlock {
param($Peers)
w32tm /config /manualpeerlist:"$($Peers -join ' ')" /syncfromflags:manual /update
w32tm /resync
} -ArgumentList $NtpServers
Al centralizar el cambio se eliminan errores humanos y se garantiza homogeneidad.
Puntos clave para recordar
- El único equipo que debería hablar con servidores NTP externos es el PDC Emulator.
- No mezcles
Hyper‑V IC TimeSync
con NTP; deshabilita uno de los dos para evitar bucles. - Revisa periódicamente que el drift frente a fuentes de estrato 1 sea inferior a ±2 ms en LAN y ±50 ms en WAN.
- Documenta excepciones: cabinas de almacenamiento, cortafuegos o appliances que requieran sus propias fuentes.
Con una jerarquía clara, validaciones automatizadas y un puñado de buenas prácticas, tu dominio permanecerá dentro de los márgenes de tolerancia que exigen Kerberos y los sistemas distribuidos modernos.