Ich bin erst kürzlich in diese Falle getappt, denn bei zeitkritischen VMs, wie beispielsweise Domain Controller, welche auf VMware vSphere betrieben werden, muss man eine kleine Besonderheit beachten. Da eine falsche Uhrzeit durchaus weitreichende Folgen haben kann, gibt es daher hier mal einen kleinen Artikel zu dem Thema. Folgendes Problem ist aufgetreten. Ein NTP Server auf Linux Basis (welcher auch als NTP Server für die Domain Controller zuständig war) hat zunächst ohne direkt erkenntliche Ursache die falsche Uhrzeit und weißt eine große Abweichung zu den konfigurierten NTP Servern im Internet auf:
In dem Screenshot ist zu erkennen, dass die lokale Systemzeit der VM um über 13 Sekunden von der Zeit der NTP Server im Internet abweicht. Die erste Vermutung war, dass die lokale Systemzeit mit der Zeit des ESXi Servers abgeglichen wurde, jedoch war diese Option in den Einstellungen der VM deaktiviert:
Tatsächlich wies der ESX Server aber die entsprechende Zeitdifferenz auf. Zusätzlich ist aufgefallen, dass die VM kürzlich per vMotion auf den ESX Host mit der entsprechenden Zeitdifferenz verschoben wurde. Die Nachforschungen haben dann den folgenden VMware KB Artikel zu Tage gefördert:
Hier ist dann folgendes zu lesen:
Es ist also folgendes passiert: Die VM wurde mit vMotion auf einen ESX Server mit abweichender Uhrzeit verschoben. Direkt nach dem vMotion Vorgang wird die Systemzeit der VM durch die VMware Tools mit der Uhrzeit des ESXi Servers synchronisiert, somit hat auch die VM die falsche Uhrzeit. Wenn die VM nun also als Zeitquelle für das Netzwerk dient, beispielsweise weil es sich um einen Domain Controller oder um einen Linux NTP Server handelt, wird nun die falsche Uhrzeit an die NTP Clients verteilt. Ein weiterer Fallstrick ist hier die Funktionsweise des NTP Protokolls selbst: Im ersten Screenshot ist zu erkennen, dass die Systemzeit der eine Abweichung zu den konfigurierten NTP Servern im Internet aufweist. Die Systemzeit wird aber im Falle einer größeren Abweichung nicht einfach wieder via NTP korrigiert, sondern langsam angeglichen, dies soll “Zeitsprünge” vermeiden. Konkret korrigiert NTP die Zeit bei einer Abweichung alle 60 Sekunden um 50ms. Es dauert also eine ganze Weile bis eine Differenz von 13 Sekunden ausgeglichen ist.
Die Auswirkungen einer falschen Uhrzeit im Netzwerk können sehr weitreichend sein (man glaubt kaum, was da alles so passieren kann, ich möchte nicht weiter drüber sprechen). Die Lösung aus dem VMware KB Artikel sollte also für alle zeitkritischen VMs umgesetzt werden, insbesondere für Domain Controller, Linux NTP Server, VoIP Telefonanlagen, OTP / 2FA Server.
In vSphere 7 kann diese Option übrigens direkt in den Einstellungen der VM abgeschaltet werden, während die VM läuft (VM auf ESXi 6.7 oder früher müssen runtergefahren werden, um die Zeitsynchronisation abzuschalten):
Auch ein Hinweis wurde hinzugefügt, welche die Beschreibung aus dem VMware KB Artikel enthält:
Vielleicht hilt es ja dem ein oder anderem.