September 04, 2010

NTP, el gran misterio.

Buenas amigos, hoy escribiendo desde Panamá City, con una magnifica vista de esta bella ciudad.
Mucha gente simplemente lo ignora, pero cuán importante es la sincronización de tiempo en nuestro ambiente? Muchísimo. Recordemos que con un desfase mayor o menor a los 5 minutos Kerberos no te emitirá tiquetes, Office Communicator es bastante sensible con respecto al tiempo, también he visto problemas con Exchange, GPOs, NtFrs/DFS y otros. Entonces como configurar esto?
Tomemos en cuenta lo siguiente, para la sincronización de tiempo debemos establecer una cierto tipo de organización, pensemos en una cascada o jerarquía en la cual nuestro PDC-Emulator será el nivel más alto, la autoridad de NTP, luego en el siguiente nivel o estrato están los demás controladores y estos serán consultados por todos los clientes o maquinas miembros del dominio. PDC-Emulator { DCs { clientes. En el caso de tener dominios hijos pues estos consultaran al dominio padre.
Ok, primero configuremos el PDC, en este link http://www.ntp.org/ podemos obtener una lista de NTPs que nos puede ser útil, yo le aconsejaría buscar el más cercano a la localización de los servidores y al menos un par más de respaldo.
Veamos la configuración actual de nuestro PDC ejecutando el siguiente comando: w32tm /dumpreg /subkey:parameters o bien naveguemos en el Registro de Windows a HKLM\System\CurrentControlSer\Services\W32Time\Parameters. Acá para simplificarnos nos concentraremos en los valores del Type (acá se establece el tipo/modo de servidor a consultar/utilizar) y el NtpServer (dirección de el o los servidores).
Entonces vamos a indicarle a nuestro servidor que su fuente de tiempo es un servidor tipo NTP, para los demás controladores, vamos a asegurarnos su fuente de NTP sea tipo NT5DS.
Entonces primero digámosle a nuestro PDC la dirección o FQDN de nuestros servidores primarios, recordemos que NTP utiliza el puerto 123 en UDP.
w32tm /config /manualpeerlist: ”gnomon.cc.columbia.edu,0x8 navobs1.gatech.edu,0x8 ntp2.usno.navy.mil,0x8 tick.mit.edu,0x8 time.nist.gov,0x8 ” /update
Ahora básicamente indicaremos al equipo que utilice la lista anterior y que se actualice.
w32tm /config /syncfromflags:MANUAL /update
Si el resultado es satisfactorio podremos observar un evento número 37 en la sección del Sistema en el Visor de Eventos, algo similar a esto:

Event Type: Information
Event Source: W32Time
Event Category: None
Event ID: 37
Date: 9/4/2010
Time: 7:57:18 AM
User: N/A
Computer: hostName
Description:
The time provider NtpClient is currently receiving valid time data from ntpServerFQDN (ntp.d
ntpClient->ntpServer:123).

Pensemos que en nuestro dominio raíz tenemos 3 controladores, entonces la configuración de estos se vería más o menos así:

w32tm /dumpreg /subkey:parameters /computer:domainControllerA(PDC-Emulator)
Value Name Value Type Value Data
-------------------------------------------------
ServiceMain REG_SZ SvchostEntry_W32Time
ServiceDll REG_EXPAND_SZ C:\WINNT\system32\w32time.dll
NtpServer REG_SZ gnomon.cc.columbia.edu,0x8 navobs1.gatech.edu,0x8 ntp2.usno.navy.mil,0x8 tick.mit.edu,0x8 time.nist.gov,0x8
Type REG_SZ NTP

w32tm /dumpreg /subkey:parameters /:domainControllerB
Value Name Value Type Value Data
-------------------------------------------------
ServiceMain REG_SZ SvchostEntry_W32Time
ServiceDll REG_EXPAND_SZ C:\WINNT\system32\w32time.dll
NtpServer REG_SZ
Type REG_SZ NT5DS

w32tm /dumpreg /subkey:parameters /:domainControllerC
Value Name Value Type Value Data
-------------------------------------------------
ServiceMain REG_SZ SvchostEntry_W32Time
ServiceDll REG_EXPAND_SZ C:\WINNT\system32\w32time.dll
NtpServer REG_SZ
Type REG_SZ NT5DS

Ahora bien como averiguo el estado del tiempo entre mis controladores de dominio, pues para esto tan solo necesito emitir un w32tm /monitor

w32tm /monitor /domain:daemonroot.com
domainControllerA *** PDC *** [192.168.1.22]:
ICMP: 0ms delay.
NTP: +0.0000000s offset from domainControllerA
RefID: navobs1.gatech.edu [130.207.244.240]
*Nótese que en el primer controlador enlistado es mi PDC, acá puedo también ver contra que servidor está funcionando él.

domainControllerB [192.168.1.23]:
ICMP: 0ms delay.
NTP: -0.0115700s offset from domainControllerA
RefID: domainControllerA [192.168.1.22]

domainControllerC [192.168.1.24]:
ICMP: 99ms delay.
NTP: +0.0156915s offset from domainControllerA
RefID: domainControllerA [192.168.1.22]
*En el caso de los controladores adicionales lo que me interesa es saber cuánto es la diferencia de tiempo entre el PDC y ellos, que como vemos en este caso no es mayor a una centésima de Segundo, nada mal eh?

Los equipos miembros del dominio por defecto utilizaran a los controladores de dominio para sincronizar su tiempo (Type = NT5DS). Si aún tenemos problemas con algún equipo el comando w32tm /config /computer:hostName /update nos podría ser muy útil o bien un w32tm /config /syncfromflags:DOMHIER /update no más para asegurarnos que el equipo está configurado apropiadamente ya que como sabemos hay clientes muy singulares que gustan cambiar parámetros de configuración pues “ellos saben de esto”.
Bueno estimados lectores espero esto les sea útil de alguna manera, realmente no es una guía autoritativa ni nada similar, este es un interesante tema del que podríamos hablar mucho más pero ya es TIEMPO de que me marche, hasta la próxima!

6 comments:

  1. Interensante como siempre !!!

    Solo me queda una duda... Como funciona cuando tenemos contralores de dominio que estan en una zona horaria diferente al PDCEmulator???

    Saludos,

    Jimcesse

    ReplyDelete
    Replies
    1. Jimmito recuerda que internamente todo es UTC/GMT.

      Delete
  2. como sincronizo mis linux con mi domain controller

    ReplyDelete
    Replies
    1. Amigo por ahi debe existir un ntp.conf que maneja esto :)

      Delete
  3. Hola,

    genial el articulo, enhorabuena.

    He aplicado estos cambios en mi entorno, yo también tengo tres DC. En el PDC he puesto dos servidores externos. Cuando ejecuto el w32tm /dumpreg /subkey:parameters en el PDC todo ok, pero cuendo me voy a los otros controladores y lo ejecuto me aparece el registro Type como NT5DS correctamente pero el parametro NTPServer me aparece Value Type REG_SZ y como Value Data me aparece el time.windows.com,0x9... es esto correcto?

    Aun así probando el /monitor me sale correctamente.

    Gracias! Saludos,,

    ReplyDelete
    Replies
    1. Te recomiendo actualizar esto, de preferencia por medio de una politica.

      Delete