È un dato di fatto: VMware cambia l’orario delle macchine virtuali anche se tu gli dici di non farlo.
Scrivo questo post sperando che tu non debba impazzire e perdere tutto il tempo che ho perso io per risolvere questo problema (apparentemente) stupido.
Tutto è cominciato quando una macchina virtuale Windows si è rifiutata di fare login su un sistema Active Directory.
Dopo aver fatto diverse analisi ho scoperto che il problema era dovuto agli orologi del client e del server che non erano sincronizzati.
Infatti il protocollo Kerberos usato in Active Directory per aumentare la sicurezza del login non consente di autenticarsi se gli orologi sono "sballati".
Le best practice prevedono che il server Windows di dominio sia sincronizzato con una sorgente oraria esterna e tutte le macchine del dominio prendano l’orario dal quel server.
Anche se si osservano queste best practice,
in ambiente VMware puoi avere delle soprese.
VMware può cambiare l’orario dei guest anche se gli hai detto di non farlo.
Nei VMware tools c’è una checkbox che dice esplicitamente se VMware si debba occupare dell’orario della macchina virtuale guest. Ebbene, ti segnalo che se anche togli il check ci sono comunque diverse circostanze in cui VMware lo fa lo stesso:
-
quando sospendi una macchina virtuale e poi la riattivi;
-
quando migri una macchina usano il vMotion;
-
quando rispristini uno snapshot;
-
quando fari lo shrink dei dischi;
-
quando fai il reboot di una virtual machine.
L’unica soluzione è obbligare ogni singola macchina virtuale a fare per conto proprio senza che sia l’host a interferire.
E questo si può fare facilmente con alcuni comandi che vanno inseriti nel file .VMX, dove sta la configurazione delle macchine virtuali impostando a "0" alcuni parametri.
Se i parametri non sono presenti nel file, basta aggiungerli a mano:
tools.syncTime = "0"
time.synchronize.continue = "0"
time.synchronize.restore = "0"
time.synchronize.resume.disk = "0"
time.synchronize.shrink = "0"
time.synchronize.tools.startup = "0"
time.synchronize.tools.enable = "0"
time.synchronize.resume.host = "0"
Queste impostazioni valgono per host ESXi e ESX, se invece lavori con GSX, VMware Fusion, VMware Player e VMware Workstation devi mettere "FALSE" al posto di "0".
Per evitare di modificare tutta la configurazione di nuove macchine in futuro, il consiglio è di inserire queste modifiche in un template.
Che VMware abbia questo problema, non lo scopro io, ma
lo ammette l'azienda stessa. E tu, lo sapevi?
Buona dritta, Dareggi 😉
Altrimenti abiliti il servizio ntp sugli hosts esxi e li fai puntare a dei time server esterni tipo time.ien.it it.pool.ntp.org
Mai avuto un problema. Ma accetto suggerimenti e/o critiche. 😉