|
Vorbemerkung: Außer durch das unten beschriebene Problem kann der Grund für eine nicht funktionierende Zeitsynchronisation auch eine Firewall oder ein Port Filter sein, der den für NTP verwendeten Port (normalerweise UDP Port 123) blockiert.
Einige Versionen des w32time-Service, die mit Windows XP oder Windows
Server 2003 ausgeliefert werden, können sich in der Standardkonfiguration
nicht auf einen NTP-Server synchronisieren. Je nach Konfiguration des
Servertyps (z.B. als Domain Controller oder Standalone-Server), antwortet ein NTP-Server
eventuell nicht auf Anfragen von w32time. Der Grund dafür ist der Typ
der Anfragepakete, die von w32time an den NTP-Server gesendet werden.
Mit den w32time-Versionen von Windows 2000 tritt das Problem nicht auf,
auch die weiter unten beschriebenen Befehle mit w32tm lassen sich unter
Windows 2000 nicht anwenden, da sich die Funktionalität von w32tm ab
Windows XP grundsätzlich geändert hat.
NTP verwendet mehrere Arten von Paketen zum Datenaustausch.
Normalerweise senden (S)NTP-Clients Anfragen vom Typ "client", die vom
NTP-Server mit Paketen vom Typ "server" beantwortet werden. Im oben
beschriebenen Fall jedoch sendet der w32time-Service Anfragepakete vom
Typ "symmetric active" an den NTP-Server. Diese Art von Paketen ist vom
NTP-Standard für den Peering-Betrieb vorgesehen.
"Peering" bedeutet, daß mehrere ausgesuchte Rechner (Peers) sich über
eine gemeinsame "richtige" Zeit verständigen und jeder Peer sich auf
diese Zeit einstellt. Diese gemeinsame Zeit wird dann den Clients als
Referenzzeit zur Verfügung gestellt. Die "symmetric active"-Anfrage
bedeutet, daß der Absender des Paketes die Zeit des NTP-Servers ändern
möchte. Natürlich sollte ein NTP-Server solche Anfragen von normalen
Clients nicht auswerten.
Aus diesem Grund verwerfen viele NTP-Server solche Pakete einfach, es
sei denn, der Absender ist explizit als Peer konfiguriert, der sich auch
authentisieren kann. Neuere Versionen der Referenz-Implementierung von
NTP enthalten einen Workaround für w32time, so daß der Server zwar eine
Antwort sendet, der w32time-Client jedoch nicht als Peer akzeptiert wird.
Mit Hilfe von einigen Befehlen in einem Kommandozeilenfenster kann man
den Typ der von w32time gesendeten Anfragepakete umstellen. Die
geänderten Einstellungen werden in der Registry dauerhaft gespeichert:
w32tm /config /manualpeerlist:,0x8 /syncfromflags:MANUAL
Statt muss die IP-Adresse oder der Hostname des NTP-Servers
angegeben werden.
Mit dem Flag "0x8" zwingt man w32time, statt "symmetric active"-Paketen
normale "client"-Anfragen an den NTP-Server zu senden, die dann
natürlich auch normal beantwortet werden.
Um die Änderungen wirksam werden zu lassen, kann man entweder den
folgenden Befehl verwenden:
w32tm /config /update
oder den Dienst w32time neu starten:
net stop w32time
net start w32time
Mit dem Befehl
net time /querysntp
kann die aktuelle Einstellung überprüft werden. Als Ausgabe sieht man
dann z.B.:
The current SNTP value is: ,0x8
Beim Start Dienstes wird eine sofortige Anfrage an den NTP-Server
gesendet. Außerdem kann mit Hilfe des Befehls
w32tm /resync
eine sofortige NTP-Abfrage ausgelöst werden. |