Windows Server 2003 & 2008 – Windows Time Service

Ciao a tutti!
Vi siete mai chiesti perché è così importante sapere con una certa precisione che ora sia?
La risposta ovvia è per rispettare la pausa pranzo.
Ma nel mondo dell'informatica, sappiamo bene tutti che non esiste un minuto di riposo, certo non siamo persone che misurano il millisecondo, ma anzi sono i singoli secondi che non abbiamo a disposizione.
Anche un dominio Windows non scende nel dettaglio della sincronia oraria al millisecondo ma, come noi, si accontenta di mantenere l'ora quasi allineata tra tutti i computer dell'infrastruttura.

Infatti il servizio di sincronizzazione oraria fornito con windows nasce per poter garantire almeno il funzionamento di Kerberos v5.

Support boundary to configure the Windows Time service for high accuracy environments
http://support.microsoft.com/kb/939322

Quindi per qualsiasi altra applicazione che richiede una precisione oraria maggiore vi rimandiamo ad altre soluzioni NTP esistenti sul mercato.

Poi... che Windows Time funzioni egregiamente è tutt'altra cosa, raramente troverete disallineate due macchine e quando succede vi consiglio di far controllare l'hardware della scheda madre.

Come mai? Seguitemi...

Alla partenza del servizio Windows Time avviene in genere una query ad un server reputato autoritativo per sapere l'ora esatta.
Il servizio può essere configurato per puntare ad un servizio NTP (Type = NTP) o, come di default in un dominio Windows, ad un server autoritativo all'interno del dominio (Type = NT5DS) che corrisponde al server con cui è stato stabilito il secure channel del dominio al momento della presentazione sulla rete.
Quindi, ad esempio, quando accendete il vostro PC la mattina in ufficio questi cercherà un DC con cui autenticarsi e stabilire il secure channel ed a lui verrà chiesta l'ora.
Questo DC a sua volta si sincronizzerà con un ulteriore DC con cui sta mantenendo il secure channel del dominio, fino ad arrivare al DC con ruolo PDCe che va configurato come NTP e fatto puntare ad un servizio esterno affidabile per l'ora.

How to synchronize the time with the Windows Time service in Windows XP
http://support.microsoft.com/kb/307897

Ma a questo punto non può bastare il caro e vecchio

net time \\server /set

lanciato periodicamente (Scheduled Task) ogni manciata di secondi?

Io dico di no, perché va bene avere l'ora sincronizzata, ma se a causa di un difetto hardware il clock interno della scheda madre fosse più veloce del normale cosa succederebbe?
Che periodicamente avremmo una forzatura dell'ora che non sta seguendo il corso naturale del tempo.
E se una applicazione sta raccogliendo dati ogni secondo si otterrà che regolarmente avrebbe orari duplicati e non è di certo facile riuscire a recuperare l'esatta sequenza temporale.

Ed ecco come il servizio Ora di Windows ci aiuta.

Basic Operation of the Windows Time Service
http://support.microsoft.com/kb/224799

In pratica se l'ora di riferimento è nel futuro rispetto a quella locale allora viene settata identica, se invece è nel passato allora c'è un meccanismo che rallenta la velocità dell'orologo locale in modo da mantenere sempre una sequenza temporale naturale ma tendendo ad allineare l'ora con le altre macchine.

Positivo, no?

Il servizio Ora di Windows è anche parecchio personalizzabile, sempre rimanendo negli scopi con cui è stato disegnato, e ci lascia perfezionare tanti dei suoi ingranaggi.
Ecco le due principali letture e documentazioni sul servizio:

Windows Time Service Technical Reference
http://technet.microsoft.com/en-us/library/cc773061(WS.10).aspx

Windows Time Service Technical Reference
http://msdn.microsoft.com/en-us/library/bb608215.aspx

Mi permetto di darvi un suggerimento, va bene fidarsi dell'infrastruttura ma se un admin per sbaglio... anzi, diamo la colpa alle macchine, se il nostro device ntp con sincronia astrale dovesse per sbaglio fornire una data errata?
Valutate se forse è il caso di indicare al servizio Ora di Windows di accettare coma validi dei campioni ricevuti che non siano troppo distanti dall'ora locale, esattamente al contrario di come indicato su:

How to configure the Windows Time service against a large time offset
http://support.microsoft.com/kb/884776

Io preferirei dare più carico all'help desk per le workstation piuttosto che, banalmente, fare un salto di 100 anni nel futuro e poi correggere a mano l'ora del dominio... anche perché chi lo spiega ad active directory che c'è stato un problema con l'orologio?

Advancing time on production computers and the effect on Active Directory and FRS
http://support.microsoft.com/kb/289668

Alla prossima!

Domenico Costa
Senior Support Engineer
Microsoft Enterprise Platform Support