Sincronizar la hora de Active Directory con NTP mediante GPO

En un dominio de Active Directory, la hora no es un detalle: es un requisito. La autenticación Kerberos solo funciona si el reloj del equipo y el del controlador de dominio no se desvían más de cinco minutos, y cuando eso falla los usuarios ven errores de acceso denegado, no se aplican las directivas de grupo y la replicación entre controladores deja de ser fiable. La buena noticia es que el dominio ya está diseñado para sincronizarse solo, y tú únicamente tienes que decidir de dónde toma la hora el controlador que está en lo más alto de la jerarquía: el emulador de PDC. En esta guía verás cómo funciona la jerarquía de hora de Windows, cómo configurar un origen NTP externo con la línea de comandos y con una directiva de grupo, cómo verificarlo y qué problemas aparecen con más frecuencia.
Cómo se sincroniza la hora en un dominio
El servicio Hora de Windows (W32Time) organiza la sincronización en forma de jerarquía:
- Los equipos y servidores miembros sincronizan su hora con el controlador de dominio que los autentica.
- Los controladores de dominio sincronizan con el controlador que tiene el rol de emulador de PDC de su dominio (o con otro controlador más cercano a él en la jerarquía).
- El emulador de PDC de un dominio secundario sincroniza con el del dominio padre, hasta llegar al emulador de PDC del dominio raíz del bosque, que es la fuente autoritativa de todo el bosque.
- Este último controlador es el único que debe configurarse para tomar la hora de una fuente externa fiable (servidores NTP de Internet, un reloj de referencia de la organización o el servidor de hora de la red).
Si no configuras nada, el controlador raíz se fía de su propio reloj interno (hardware), que se desvía con el tiempo: todo el dominio estará sincronizado entre sí, pero desfasado respecto a la hora real. Esa deriva puede importar para la auditoría, los certificados, los registros y las integraciones con otros sistemas.
Paso 1: localiza el emulador de PDC
# Emulador de PDC del dominio actual
Get-ADDomain | Select-Object DNSRoot, PDCEmulator
# Dominio raíz del bosque (el que debe tener la fuente externa)
Get-ADForest | Select-Object RootDomain
(Get-ADDomain -Identity (Get-ADForest).RootDomain).PDCEmulator
# Todos los roles de operaciones maestras
netdom query fsmo
Anota el nombre del servidor: es el equipo que vas a configurar. Si necesitas repasar cómo usar estos cmdlets, tienes ejemplos en los 10 comandos de PowerShell imprescindibles.
Paso 2: comprueba cómo está ahora
w32tm /query /status
w32tm /query /source
w32tm /query /configuration
El campo Origen te dice de dónde toma la hora el equipo. Si en el emulador de PDC aparece Local CMOS Clock o Free-running System Clock, está usando su reloj interno y conviene configurar un origen externo. En un equipo miembro lo normal es que el origen sea el nombre de un controlador de dominio.
Paso 3: configura el origen NTP en el emulador de PDC con la línea de comandos
La forma más rápida, ejecutada en el emulador de PDC con un símbolo del sistema como administrador, es:
w32tm /config /manualpeerlist:"0.pool.ntp.org,0x8 1.pool.ntp.org,0x8 2.pool.ntp.org,0x8" /syncfromflags:manual /reliable:yes /update
net stop w32time
net start w32time
w32tm /resync /rediscover
Qué hace cada parte:
/manualpeerlist: lista de servidores NTP, separados por espacios. El sufijo,0x8indica que se use el modo cliente normal para cada uno. Usa varios servidores para tener redundancia, y sustituyepool.ntp.orgpor los que prefieras o por los de tu organización./syncfromflags:manual: sincroniza solo con los servidores de la lista manual./reliable:yes: marca este controlador como origen de hora fiable, de modo que los demás lo anuncien y lo usen como referencia./update: avisa al servicio de que se ha cambiado la configuración.
Para que funcione, el emulador de PDC debe poder salir a esos servidores por UDP 123: comprueba el cortafuegos.
Paso 4: hazlo con una directiva de grupo (recomendado)
Configurarlo con una GPO tiene ventajas: queda documentado, se aplica de forma coherente y sobrevive si el rol de emulador de PDC se mueve a otro controlador. El truco es que la directiva solo debe aplicarse al controlador que tenga ese rol, y para eso se usa un filtro WMI.
- En la Consola de administración de directivas de grupo, crea un filtro WMI (en la sección Filtros WMI) con esta consulta, que solo devuelve verdadero en el emulador de PDC:
Select * from Win32_ComputerSystem where DomainRole = 5
- Crea una GPO nueva, llamada por ejemplo Hora – Emulador de PDC, enlázala a la unidad organizativa Domain Controllers y asígnale ese filtro WMI.
- Edita la GPO y ve a Configuración del equipo → Directivas → Plantillas administrativas → Sistema → Servicio de hora de Windows → Proveedores de hora.
- Activa Configurar cliente NTP de Windows y establece, entre otras opciones: NtpServer con tu lista de servidores (por ejemplo,
0.pool.ntp.org,0x9 1.pool.ntp.org,0x9) y Type igual aNTP. - Activa Habilitar cliente NTP de Windows y Habilitar servidor NTP de Windows (este último permite que otros equipos consulten a este controlador).
- Aplica la directiva en el controlador con
gpupdate /forcey reinicia el servicio connet stop w32time && net start w32time.
Con los valores por defecto de la directiva, el cliente NTP consulta cada hora y gestiona los reintentos de resolución; para un entorno normal no necesitas tocar el resto de parámetros. El sufijo 0x9 combina el modo cliente (0x8) con el intervalo de consulta especial (0x1). Si prefieres que el controlador no use servidores externos y se sincronice con un servidor de hora interno o un reloj de referencia, indícalo en la lista.
Paso 5: verifica que funciona
w32tm /query /status # origen y desfase actual
w32tm /query /source # debe mostrar los servidores NTP configurados
w32tm /monitor # estado de todos los controladores del dominio
w32tm /stripchart /computer:0.pool.ntp.org /samples:5 /dataonly # compara tu reloj con el servidor
En el emulador de PDC, el origen debe ser uno de los servidores de la lista. En los demás controladores de dominio, el origen debe ser el emulador de PDC o un controlador cercano a él. Y en los equipos miembros, un controlador de dominio. El comando w32tm /monitor muestra de un vistazo la diferencia horaria de cada controlador respecto al que lo ejecuta.
Paso 6: equipos que no toman la hora del dominio
Por defecto, los equipos del dominio usan la jerarquía automática (el tipo NT5DS). Si alguien configuró en un equipo un servidor NTP manual, o lo cambió una herramienta, ese equipo no seguirá al dominio. Para devolverlo a la jerarquía:
w32tm /config /syncfromflags:domhier /update
net stop w32time && net start w32time
w32tm /resync /rediscover
Para comprobar toda una flota, puedes consultar el origen de cada equipo con PowerShell remoto y detectar desviaciones; combina Invoke-Command con un bucle sobre tu lista, como explicamos en la guía de bucles en PowerShell.
Máquinas virtuales: el error más frecuente
Si el emulador de PDC es una máquina virtual, hay un conflicto clásico: el hipervisor también intenta sincronizar su reloj con el anfitrión (los servicios de integración de Hyper-V o las VMware Tools), y se «pelea» con W32Time. Lo recomendable es desactivar la sincronización de hora con el anfitrión en la máquina virtual del emulador de PDC (en Hyper-V, el servicio de integración Sincronización de hora; en VMware, la opción de sincronización de las VMware Tools) y dejar que sea W32Time quien tome la hora de la fuente NTP. Asegúrate además de que el anfitrión tiene su propia hora correcta. En los demás controladores virtuales, la práctica más segura es la misma, para que todo siga la jerarquía de dominio.
Problemas frecuentes
- El origen sigue siendo «Local CMOS Clock»: la configuración no se ha aplicado. Comprueba que la GPO se aplica al controlador correcto (con
gpresult /r), que el filtro WMI devuelve verdadero y que has reiniciado el servicio. - «El equipo no se resincronizó porque no había datos de hora disponibles»: el servidor NTP no responde. Verifica la salida por UDP 123 y que el nombre del servidor se resuelve.
- La hora es correcta pero con la zona horaria equivocada: el servicio sincroniza en UTC y cada equipo aplica su zona horaria; revísala con
tzutil /gy ajústala contzutil /s "Romance Standard Time"(hora de Europa central). - El rol de emulador de PDC se ha movido: si moviste el rol a otro controlador, la configuración manual hecha con
w32tmse queda en el antiguo. Por eso es preferible la GPO con el filtro WMI, que sigue al rol. - Errores de Kerberos (acceso denegado, equipo no encontrado): compara las horas con
w32tm /monitor. Una diferencia mayor de cinco minutos es suficiente para que falle la autenticación. - El dominio se desfasa en conjunto: si todo el dominio está desfasado pero sincronizado entre sí, el emulador de PDC del dominio raíz no está tomando la hora de una fuente externa.
Buenas prácticas
- Configura al menos tres o cuatro fuentes NTP distintas en el controlador raíz, para evitar depender de un solo servidor.
- Documenta qué controlador es el emulador de PDC y vigila el servicio W32Time con una tarea programada que te avise si el desfase supera un umbral. En la guía de tareas programadas con PowerShell tienes un ejemplo de cómo hacerlo.
- Consulta el registro de eventos del sistema (origen Time-Service) en el Visor de eventos: ahí quedan anotados los cambios de origen de hora y los errores de sincronización.
- Cuando restaures o muevas controladores, revisa la hora antes de ponerlos en producción, para evitar problemas de replicación. Si quieres repasar cómo organizar los objetos del directorio, consulta la guía de usuarios y grupos en Active Directory.
Preguntas frecuentes
¿Hay que configurar NTP en todos los controladores de dominio?
No. Solo en el emulador de PDC del dominio raíz del bosque. Los demás siguen la jerarquía por sí solos; configurar un origen externo en todos puede producir desvíos y es innecesario.
¿Qué diferencia de hora tolera Kerberos?
Por defecto, cinco minutos. Es un valor configurable por directiva, pero no conviene ampliarlo: la solución correcta es mantener los relojes sincronizados.
¿Puedo usar mi router o un servidor interno como origen?
Sí, si es un servidor NTP fiable. Indícalo en la lista de servidores. Lo importante es que esa fuente a su vez tenga una hora correcta.
Conclusión
Para sincronizar la hora de Active Directory, localiza el emulador de PDC del dominio raíz, configura en él servidores NTP externos (con w32tm o, mejor, con una GPO filtrada con WMI para ese rol) y verifica el resultado con w32tm /query /status y /monitor. Desactiva la sincronización con el anfitrión si es una máquina virtual y deja que el resto del dominio siga la jerarquía automática.