Zeitsynchronisation für Windows

Vorwort
Sie möchten die Zeit auf einem oder mehreren Ihrer Server Synchronisieren.
Dies können Sie entweder indem Sie sich eine spezielle Zeitsynchronisationsfunkuhr kaufen, diese an Ihr Gerät
anschließend und mit dem mitgelieferten Programm die Zeit synchronisieren, oder Sie verlassen sich auf bereits
existierende Zeitserver im Internet auf welche sich diese Beschreibung bezieht.

Der "Windows-Zeitgeber" - Dienst heißt in der englischsprachigen Original - Dokumentation "W32Time Service".
Er ist auf jedem Windows 2000/XP/2003 System vorhanden und wird automatisch beim Systemstart geladen..
Sie können den Dienst in der Command Line mit "w32tm /register" registrieren, mit "net start w32tm" starten und
mit "net stop w32tm" stoppen.
Der W32Time Dienst spricht über das "Simple Network Time Protocol" (SNTP, RFC 1769), eine vereinfachte Form
des "Network Time Protocol" (NTP, RFC 1305), welche mit NTP voll kompatibel ist.

Sie finden anbei die Lösungen per Konfiguration je für Windows 2000 und WindowsXP/2003.
Anschließend können Sie sich noch die direkten Registry Einträge auswählen die Sie benötigen sofern
Sie zB. ein Scribt schreiben möchten oder nähere Informationen benötigen.

Lösung
Zeit wird ab Windows 2000 mit dem Dienst "w32time" synchronisiert.
Sie können Zeitsynhronisation auf 2 Wege einleiten wenn Sie sich auf den Dienst des Windows Zeitgebers (w32tm)
behelfen. Auf älteren Geräten oder per Batch geht das mit dem net time Befehl, dazu unten mehr.

1. Indem Sie die den Windows Zeitgeber w32tm verwenden.
2. Indem Sie den Befehl "net time \\servername /set /yes" verwenden.
2. Indem Sie ein Tool verwenden.

------------------------------------1. Konfiguration der Zeitsynchronisation---------------------------
--------------------------------------------unter Windows 2000-----------------------------------------


Um einen Zeitserver in das ein Windows 2000 System einzutragen gehen Sie wie folgt vor:
1. Starten sie die Eingabeaufforderung: Start->Ausführen->cmd
3. Geben Sie "net stop w32tm" ein um die Zeitdienste zu stoppen.
4. Geben Sie "net time /setsntp:Timeservername-oder-IP" ein (Bsp: net time /setsntp:ptbtime1.ptb.de)
Es kursieren einige Anleitungen im Internet bei welchem angegeben wird, dass Sie mehrere Zeitserver in einer
Liste getrennt (dabei wird nicht einmal auf das Trennzeichen eingegangen) verwenden werden können.
Dies ist völlig falsch. Es gibt lt. den offiziellen Microsoft Unterlagen nur einen gültigen und aktiven
Zeitserver. Siehe MS Artikel
5. Geben Sie "net start w32tm" ein um die Zeitdienste wieder zu starten.

Der Befehl "w32tm -once" führt die Synchronisation durch, wenn eine Internet-Verbindung besteht.

!!Vergessen Sie nicht dass der NTP Port TCP:123 bzw. UDP:123 sofern Sie eine Firewall besitzen freigeschaltet sein muss.


Um die automatische Synchronisation in regelmäßigen Abständen anzugeben folgenden Befehl verwenden:
" w32tm -period <Intervallcode> (Bsp: w32tm -period 0)

Die gültigen ntervallcodeslauten:

0 = einmal pro Tag
65535 = einmal alle 2 Tage
65534 = einmal alle 3 Tage
65533 = ainmal jede Woche (7Tage)
65532 = einmal alle 45 Minuten bis drei positive Syncs erreicht werden dann alle 8h weiterführend.
65531 = einmal alle 45 Minuten bis ein positiver Sync erreicht wird, dann einmal am Tag
Wenn Ihnen diese Einstellungen nicht passen so geben Sie die Anzahl der Syncs/Pro Tag an, für jede Option die Sie treffen
die nicht wie die obigen vordefinierten Frequenzen lauten gilt diese Regel (Bsp. 4 für 4x/Tag).

Die Einstellungen die getroffen werden werden in folgende Registry Pfade geschrieben:
HKEY LOCAL MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters


------------------------------------2. Konfiguration der Zeitsynchronisation---------------------------
---------------------------------------unter Windows Server 2003 / XP---------------------------------


Unter Windows Server 2003 oder XP geht der Syntax des w32tm Befehles etwas anders.
Ist aber deshalb nicht weniger oder mehr kompliziert. Hier heißt es:


1. Starten sie die Eingabeaufforderung: Start->Ausführen->cmd
3. Geben Sie "net stop w32tm" ein um die Zeitdienste zu stoppen.
4. Geben Sie "net time /setsntp:Timeservername-oder-IP" ein (Bsp: net time /setsntp:ptbtime1.ptb.de)
5. Geben Sie "net start w32tm" ein um die Zeitdienste wieder zu starten.

Bis hier ist es noch ident. Ab jetzt werden andere Befehlssätze verwendet.
Damit der Windows Zeitgeber die Informationen übernimmt können Sie wie in Punkt 5 den Dienst neu starten
oder jetzt aber auch alternativ den Befehl "w32tm /config /update" eingeben.

6. Synchronisieren Sie Ihre Zeit mit dem Befehl: "w32tm /resync"

Intervall Einstellen: Direkt in der Registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient

Hier den Eintrag "SpecialPollInterval" mit dem gewünschten Intervall füttern. Dazu müssen Sie den Intervall in
Sekunden eintragen. zB. "900" damit alle 15 Minuten synchronisiert wird.

!!Vergessen Sie nicht dass der NTP Port TCP:123 bzw. UDP:123 sofern Sie eine Firewall besitzen freigeschaltet sein muss.

------------------------------------2. Konfiguration der Zeitsynchronisation---------------------------
--------------------------------------------------unter Windows NT4.0-------------------------------------

In Windows NT 4.0 gibt es noch keinen Windows Zeitgeber Dienst. Deshalb funktioniert die Syncronisation hier nur
mit dem Kommandozeilenbefehl "net time \\servername /set /yes" wobei hier das "/yes" die bestätigung mit "J" nach
eingabe des Befehls erledigt.

Ein Windows NT 4.0 Server kann jedoch Standardmäßig nicht als Zeitserver fungieren.
Dies lässt sich jedoch leicht mit folgendem Registry Eintrag lösen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters
Eintrag: TimeSource
Datentyp: REG_DWORD
Inhalt: 1

Ein Client in der NT - Domain kann dann über folgenden Kommandozeilenaufruf mit dem Server synchronisiert werden:

NET TIME /DOMAIN:xxx /SET /YES oder
NET TIME \\SERVERNAME /SET /YES
wobei xxx der Name der Domäne ist. Das funktioniert auch, wenn der Domain Controller z.B. ein Windows 2000 Server ist, der im Abwärtskompatibilitätsmode eingerichtet wurde (also kein reiner 2000 - Betrieb sondern Gemischter Modus oder bei 2003 Server
auch der interim Modus).
"/YES" steht dafür, dass die Abfrage die mit "J" bestätigt werden müsste umgangen wird.

Beachten Sie dabei, dass die Clients bzw. der Benutzer der angemeldet ist und diesen Befehl ausführt das Recht besitzen
muss die Systemzeit zu ändern. Unter 2000/XP erledigen Sie das mit den Gruppenrichtlinien (siehe Zusätzliche Informaitonen
ganz unten). Bei einem Windows NT4 Client rufen Sie am Client "poledit".
Alternativ können Sie natürlich auch alle Benutzer auf den Clients als lokale Administratoren oder Hauptbenutzer angeben.

!!Vergessen Sie nicht dass der NTP Port TCP:123 bzw. UDP:123 sofern Sie eine Firewall besitzen freigeschaltet sein muss.

------------------------------------3. Verfügbare Zeitserver-------------------------------------
----------------------------------------aus Deutschland-------------------------------------------

Zeitserver in Deutschland:
ptbtime1.ptb.de, IP: 192.53.103.103
ptbtime2.ptb.de, IP: 192.53.103.104

!!Vorsicht bei diesen beiden Zeitservern in Innsbruck/Österreich:
time1.uibk.ac.at, IP: 138.232.1.4
time2.uibk.ac.at, IP: 138.232.1.5
Diese 2 Zeitserver sind öfters in Verwendung. Jedoch bei allen Tests haben diese Zeitserver kläglich versagt.
Verwenden Sie die Zeitserver aus good old Germany wenn Sie keine Probleme haben möchten.

-----------------------------------4. Sie verwenden eine Zeitsyncsoftware-----------------
---------------------------------------------------------------------------------------------------------

Ich empfehle Ihnen die Freeware Dimension 4 von Thinking Man Software.
Sie funktioniert auf 9X/NT/XP/2003 und ist sehr einfach gehalten. Dort geben Sie einfach den Zeitserver ein den Sie haben möchten
oder verwenden einen der bereits eingetragen ist. Dann wählen Sie aus ob das Tool beim Systemstart mithochgefahren werden soll
oder nicht und fertig.


------------------------------------5. Zusätzliche Informationen----------------------------------
-----------------------------------------------------------------------------------------------------------


Wenn Sie in einem Netzwerk arbeiten, so können Sie die Clients darauf Konfigurieren als Zeitserver Ihren Domänencontroller
zu werdenden. Standardmäßig steht in jedem Domänenmitglied in der Registry unter:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
im Eintrag "Type" (REG_SZ) der Wert "NT5DS". Dies sollte laut offizieller Dokumentation sicherstellen, dass die Zeit vom
nächsten Domänencontroller syncronisiert wird. Wenn Sie sichergehen wollen, dass der Abgleich richtig funktioniert, so
tragen Sie im Eintrag "Type" (REG_SZ) den Wert "NTP" ein und geben im weiteren EIntrag "NTPServer" (REG_SZ) Ihren
NTP Server an, zB. "server01".

Der W32Time Service bekommt Änderungen an diesen Einstellungen nicht mit, das heißt er arbeitet zunächst mal mit den alten Einstellungen weiter. Man muß den Dienst entweder einmal anhalten und neu starten, oder unter Windows XP / 2003 alternativ
mit dem Kommandozeilenbefehl "w32tm /config /update" den Dienst darauf aufmerksam machen, daß sich etwas geändert hat.

In einem Netzwerk empfiehlt es sich, den Domain Controller die Zeit von einer externen Quelle abrufen zu lassen, und alle übrigen
Rechner vom Domain Controller aus zu versorgen. Wenn der Domain Controller also als Zeitquelle dient, sollte er den Registry-
Eintrag "ReliableTimeSource" auf 1 stehen haben (DWORD!).

Richtig sauber wäre es, wenn Sie gleich den Intervall der Syncronisation mitangeben. Unter Windows 2000 können Sie das
per Kommandozeile mit dem Befehl "w32tm -period WERT", wobei der WERT hier wie folgt aussieht:
0 = einmal pro Tag
65535 = einmal alle 2 Tage
65534 = einmal alle 3 Tage
65533 = ainmal jede Woche (7Tage)
65532 = einmal alle 45 Minuten bis drei positive Syncs erreicht werden dann alle 8h weiterführend.
65531 = einmal alle 45 Minuten bis ein positiver Sync erreicht wird, dann einmal am Tag
Wenn Ihnen diese Einstellungen nicht passen so geben Sie die Anzahl der Syncs/Pro Tag an, für jede Option die Sie treffen
die nicht wie die obigen vordefinierten Frequenzen lauten gilt diese Regel (Bsp. 4 für 4x/Tag).
Alternativ gibt es noch den Wert "SpecialSkew" der alle 45 Minuten abgleicht, bis er dreimal eine zuverlässige Synchronisation
festgestellt hat, und danach alle 8 Stunden abgleicht.

In Windows Server 2003 oder Windows XP geben Sie die Intervalle direkt in der Registry an.
Dies geschieht unter:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
im Eintrag "SpecialPollInterval" (DWORD) welcher mit einem Dezimalwert der die Sekunen angibt gefüllt wird.
Zb. wäre hier ein Wert von 3600 der umgerechnet eine Stunde bezeichnet.

Batch Dateien
In Batchfiles können Sie den Befehl "net time \\servername /set /yes" verwenden um die Zeit eines Clients
mit einem speziellen Server zu synchronisieren. Dies funktioniert mit NT Geräten genauso wie mit 2000/XP/2003.
Dabei müssen Sie jedoch beachten, dass ein normaler Benutzer nicht das Recht hat, die Systemzeit stanardmäßig
zu verändern.

Da Sie höchstwahscheinlich diesen Befehl in ein Login-Script einbauen möchten müssen die Benutzer
zumindest über das Recht des Ändern der Systemzeit verfügen. Dies können Sie bewerkstelligen indem Sie in der
Gruppenrichtlinie "Domain-Policy" oder einer neuen Gruppenrichtlinie die Sie erstellen, unter dem Pfad
Computerkonfiguration->Windows Einstellungen->Sicherheitseinstellungen->Lokale Richtlinien->Zuweisen von Benutzerrechten
die Richtlinie "Ändern der Systemzeit" mit dem gwünschten Benutzer/Gruppe füllen.

Gruppenrichtlinien können Sie auf Clients mit dem Befehl "gpedit.msc" unter "Ausführen" abändern (Achtung, dies ist die
lokale Gruppenrichtlinie, sobald der Server Mitglied einer Domäne ist werden diese Einstellungen durch die Domänenrichtlinien
außer Kraft gesezt) ändern, oder schlauer im Server zB. das Snap-In "Active Directory Benutzer und Gruppen" öffnen,
auf die gwünschte Organisationseinheit oder auf den Domänenroot rechtsklicken und dort in den Eigenschaften in den
Register "Gruppenrichtlinien" wechseln. In Windows 2003 Server geht das auch angenehmer mit dem Tool
"Gruppenrichtlinienverwalltung" (GPMC) welches Sie unter http://www.microsoft.com/downloads herunterladen können.

Alternativ können Sie natürlich auch die Benutzer lokal als Administratoren oder Hauptbenutzer anlegen.


Zusätzliche Dokumentation:
Microsoft Artikel mit den neuesten Konfigurationsmöglichkeiten unter 2000/XP/2003

Microsoft Zeitserver Dokumentation (etwas mager) eher Informativ

Erstellt: März 2005
Von: Haßlinger Stefan