Wer Domänencontroller als virtuelle Maschinen betreibt, sollte besonderes Augenmerk auf die korrekte Zeitsynchronisation legen. Diese ist kritisch für Active Directory, weil bereits eine Abweichung von fünf Minuten ausreicht, damit Kerberos-Tickets ihre Gültigkeit verlieren.
In virtuellen Umgebungen steht die Systemzeit unter einigen Einschränkungen. Da eine virtuelle Maschine nicht exklusiv auf ihren Prozessor zugreift, sondern vom Hypervisor immer nur einzelne CPU-Zyklen erhält, gerät die Systemzeit leicht aus dem Takt. Wer dies nicht im Griff hat, gerät leicht in eine Situation, in der die Zeiten der virtuellen Maschinen auseinanderlaufen.
In einer AD-Domäne ist immer der Domänencontroller mit der PDC-Emulator-Rolle der Zeitgeber – es sei denn, man konfiguriert dies anders, wovon in den meisten Umgebungen aber strikt abzuraten ist. Die allgemeine Empfehlung lautet, dass der PDC-Emulator – und nur dieser! – seine Zeit mit einer externen Quelle synchronisieren sollte. Dafür eignet sich ein externer NTP-Server, den man folgendermaßen festlegt:
NET TIME /setsntp:<SNTP-Server-Address>
(für Windows vor 2008)
W32TM /config /syncfromflags:manual /manualpeerlist: <SNTP-Server-Address>
(ab Windows Server 2008)
Noch besser ist allerdings dieses Verfahren, das in einer Domäne wahrscheinlich die höchste Flexibilität bietet:
[Zeitserver – w32time – ueber Gruppenrichtlinien konfigurieren]
http://www.gruppenrichtlinien.de/artikel/zeitsynchronisation-der-domaene-w32time-zeitserver-per-gpo/
Hierfür ist es am günstigsten, dass der PDC-Emulator selbst nicht als virtuelle Maschine läuft, sondern als physischer Server. Anderenfalls kann es passieren, dass er selbst zwischen den Synchronisierungen aus der Zeit läuft – was zwar korrigierbar wäre, aber unnötige Fehler hervorrufen kann.
Für die Mitglieder der Domäne heißt dies, dass sie ihre Zeit von der Domäne beziehen sollen. Standardmäßig tun sie dies – doch gerade in VM-Umgebungen neigen viele Admins dazu, die Zeitsynchronisation der VM-Gäste mit dem VM-Host zu aktivieren. Das ist insbesondere dann problematisch, wenn der VM-Host nicht mit der Zeit des PDC-Emulators synchron läuft.
Die Zeitsynchronisation von virtuellen DCs mit dem VM-Host kann aber auch dann zu Problemen führen, wenn bei den virtuellen DCs eine externe NTP-Zeitquelle eingetragen ist. In diesem Fall kommen sich nämlich beide Zeitgeber in die Quere, und im Effekt laufen die virtuellen DCs dann oft mit der falschen Zeit. Abhilfe in so einem Fall: Host-Zeitsynchronisation in der VM abschalten, manuelle NTP-Liste bei allen DCs bis auf den PDC-Emulator entfernen, virtuellen DC neu starten.
Update 27. Juli 2010: Achtung: Wer mit Hyper-V den SC VMM 2008 R2 (Virtual Machine Manager) einsetzt, sollte kontrollieren, ob die Zeitsynchronisation tatsächlich abgeschaltet ist. Es scheint im VMM mit dieser Einstellung Probleme zu geben. Ich bin dieser Sache auf der Spur. Einstweilen sollte man die Zeitsynchronisation über den Hyper-V-Manager abschalten.
Update dazu: Inoffiziell hat Microsoft zu verstehen gegeben, dass dieses Problem bekannt ist und in VMM 2008 R2 auch nicht korrigiert wird. Diese Einstellung muss man also tatsächlich über den Hyper-V-Manager setzen, nicht über den VMM. Erst VMM 2012 handhabt das korrekt.Update 25. April 2012: Vorsicht auch mit VMware – auch VMware selbst empfiehlt ausdrücklich, in einer AD-Umgebung die Zeit über die Domäne zu synchronisieren und die Host-Zeitsynchronisation abzuschalten. Dabei gibt es allerdings eine Falle: Das Abschalten der Zeitsynchronisation bezieht sich nur auf den laufenden Abgleich, verhindert aber nicht vollständig die Übertragung der Host-Zeit in die VM. In bestimmten Einzelfällen werden die VMware Tools immer die Host-Zeit in die VM weiterreichen, wie aus folgendem Artikel hervorgeht (danke für den Hinweis an Helge Klein):
[VMware KB: Timekeeping best practices for Windows, including NTP]
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1318
http://faq-o-matic.net/?p=2304