Un servicio horario inexacto impacta a Kerberos, la replicación de Active Directory, los registros de eventos auditables y, en entornos de nube híbrida, la validez de tokens OAuth. Por ello, diseñar la tolerancia a fallos del PDC Emulator y comprender AnnounceFlags es clave para cualquier administrador de Windows Server.
Por qué la hora exacta importa en Active Directory
Los equipos unidos a dominio emplean Kerberos para autenticarse. El protocolo rechaza tickets cuya marca de tiempo difiera más de cinco minutos del KDC. Si el reloj central se desvía o el servidor que lo proporciona se detiene, los usuarios no solo pueden perder acceso a recursos, sino que las escrituras de replicación y los servicios basados en certificados expirarán antes de tiempo, provocando errores difíciles de diagnosticar.
Arquitectura del servicio de tiempo de Windows (W32Time)
PDC Emulator como raíz de confianza
En cada dominio existe un PDC Emulator que actúa como time‑source de confianza. Los controladores de dominio hijo se sincronizan con él mediante el modo NT5DS, que incorpora la jerarquía de confianza de bosque. Por defecto, los equipos cliente siguen la ruta ‑> Controlador de dominio local ‑> PDC Emulator.
Diferencias entre NT5DS y NTP
- NT5DS: solo funciona dentro del bosque de Active Directory y basa la elección de origen en el nivel jerárquico (sitio, dominio, bosque).
- NTP: protocolo abierto que usa stratum y permite sincronizar con GPS, radiofrecuencia o servidores públicos. Proporciona baja deriva pero no conoce la topología de dominio.
Problema: el PDC Emulator como punto único de fallo (SPOF)
Cuando todos los DC están en NT5DS y solo el PDC tiene configurados AnnounceFlags = 0xA
y /reliable:yes
, la lógica de selección da prioridad absoluta a ese rol. Si el PDC —o la VM que lo aloja— se apaga, los DC secundarios no poseen una referencia exacta y podrían de‑estabilizarse en minutos.
Diseño de tolerancia a fallos con W32Time + NTP
Paso | Qué hacer | Por qué funciona |
---|---|---|
1 | Configurar el PDC Emulator con dos o más peers externos:w32tm /config /syncfromflags:manual /manualpeerlist:"0.es.pool.ntp.org,0x8 1.es.pool.ntp.org,0x8" /reliable:yes /update w32tm /resync | El PDC deja de depender del reloj local y minimiza la deriva. |
2 | Marcarlo como fuente confiable (/reliable:yes o bien AnnounceFlags = 0xA ). | Los clientes confían en él cuando esté disponible. |
3 | Configurar al menos dos DC adicionales con los mismos peers externos sin el modificador /reliable:yes . | En caso de caída, otro DC ya posee hora exacta y los clientes conmutan automáticamente. |
4 | Supervisar conw32tm /query /status | Verifica la latencia, fase y cuál es el peer actualmente seleccionado. |
Implementación con directivas de grupo (GPO)
Para asegurar que cualquier futuro DC herede la configuración, crea una GPO vinculado a Domain Controllers que defina:
- Computer Configuration → Policies → Administrative Templates → System → Windows Time Service → Time Providers
- Enable Windows NTP Server: Enabled
- Configure Windows NTP Client:
- NtpServer =
0.es.pool.ntp.org,0x8 1.es.pool.ntp.org,0x8
- Type =
NTP
- CrossSiteSyncFlags =
2
- SpecialPollInterval =
3600
(segundos) - AnnounceFlags =
10
para el PDC;5
para los demás DC.
- NtpServer =
Efecto de AnnounceFlags con Type = NTP
Valor | Significado | Cuándo usarlo |
---|---|---|
0xA (10) | El servidor se anuncia como reliable time source y proclama que su origen es externo y preciso. | Úsalo en el PDC y en servidores NTP perimetrales con GPS o radio. |
0x5 (5) | Indica fiabilidad moderada. El cliente lo prefiere sobre fuentes sin bandera pero lo descarta si se degrada la calidad. | Ideal para DC secundarios o laboratorios donde la precisión sea importante pero no crítica. |
Clave: Si se marca un servidor con 0xA sin asegurarse de que su upstream sea correcto, se distribuirá hora errónea con autoridad elevada. Antes de elevar la bandera, comprueba la varianza vía w32tm /stripchart /computer:peer /samples:6 /dataonly
.
Validación y monitoreo continuo
El servicio W32Time escribe eventos que permiten anticipar problemas:
- Evento 35 – Drift demasiado grande; el cliente se reajusta.
- Evento 47 – Falló la sincronización; usará la última hora conocida.
- Evento 137 – El reloj se adelantó/atrasó más de Threshold.
Integra estas ID en tu solución de SIEM o en un Custom DashBoard de Azure Monitor. Para métricas en tiempo real, el comando w32tm /monitor /domain:contoso.com
lista fase y retraso de todos los DC en menos de un segundo.
Alertas prácticas
PS C:> Get-WinEvent -FilterHashtable @{LogName='System';ID=47,137;StartTime=(Get-Date).AddMinutes(-30)} |
Where-Object Message -like 'Time-service' |
Send-MailMessage -To 'teams-alerts@contoso.com' -Subject 'Alerta W32Time'
Preguntas frecuentes (FAQ)
¿Puedo usar servidor NTP dedicado en vez de exponer DC a Internet? Sí; coloca dos nodos en DMZ alimentados por GPS y configura el PDC y los demás DC para apuntar a sus IP privadas. ¿Cuándo debo cambiar el valor SpecialPollInterval? Para entornos de baja latencia utiliza 900–1800 s. En redes satelitales sube hasta 7200 s para evitar picos de tráfico. ¿Influye el parámetro MinPollInterval en la conmutación? Sí; un valor muy alto retrasa la detección de un peer caído. Mantén 6
(64 s) como punto de partida.
Resumen de buenas prácticas
- Configura siempre al menos dos peers externos por servidor NTP para balancear carga y asegurar continuidad.
- Aplica
/reliable:yes
+AnnounceFlags = 0xA
solo en el PDC Emulator (o NTP perimetral) una vez confirmado que la deriva es <1 s. - Deja a los DC secundarios en
AnnounceFlags = 0x5
para que puedan asumir el rol si el PDC cae, pero con menor peso. - Orquesta la configuración mediante GPO o scripts de DSC; evita cambios manuales que se pierdan tras un reinicio.
- Monitoriza los eventos 35 / 47 / 137 y establece alertas proactivas en tu sistema de supervisión.
- Prueba periódicamente la conmutación manual deteniendo el servicio
w32time
en el PDC y observando la elevación de un DC secundario.
Conclusión
Un servicio horario resiliente no requiere hardware costoso; basta con planificar la redundancia, comprender cómo influye AnnounceFlags y automatizar la distribución de la configuración. Con ello, Active Directory mantendrá integridad, Kerberos operará sin rechazos y los servicios híbridos funcionarán sin sorpresas de expiraciones prematuras.