Qualche settimana, scorrendo la Community VMware, mi sono imbattuto in un thread curioso che mi ha fatto scoprire l’esistenza di una funzione “primordiale” anche nelle ultime versioni di ESXi: è possibile usare il protocollo VNC per collegarsi alla console di una VM, come descritto nel vecchio (notare che fa ancora riferimento al VMware GSX Server!) articolo di KB1246 (Using a VNC Client to Connect to Virtual Machines).
Nota: come scritto nello stesso articolo, VMware non supporta l’uso di questo server VNC. Il modo corretto per accedere alla console delle VM è usare il vSphere Client (oppure il Web Client), oltre che ovviamente ad usare protocolli di accesso remoto a livello di guest OS.
Del resto, personalmente, non ne vedo l’utilità, ma mosso da pura curiosità ne ho verificato il funzionamento.
La configurazione è a livello di ogni singola VM, ma il servizio viene fornito a livello di host, quindi se volete abilitare VNC per diverse VM, dovrete usare porte diverse per ciascuna VM.
Per configurare ogni VM editate il file VMX oppure usate il vSphere Client per modificare le Virtual Machine Properties ed aggiungere le seguenti righe:
- RemoteDisplay.vnc.enabled = TRUE
Impostando questo parametro a TRUE si abilita il server VNC. Da notare che funziona solo quando la macchina virtuale è accesa. A VM spenta il server VNC non risponde. - RemoteDisplay.vnc.port = TCP_Port
Permette di specificare una porta per il server VNC (5900 è quella di default). Volendo abilitare questa funzione su più VM, per ognuna bisognerà sperificare una porta diversa(meglio se tra 5900 e 5999). - RemoteDisplay.vnc.password = password
Permette di utilizzare l’autenticazione con password di VNC 3.3 (massimo 8 caratteri).
In questo esempio viene utilizzata la porta TCP 5901 e “password” (senza le virgolette):
A questo punto, su ESXi 5, c’è un’ulteriore complicazione… bisogna aggiungere una nuova regola nel personal firewall. Per farlo basta seguire il post di William Lam (How to Create Custom Firewall Rules in ESXi 5.0).
Il primo passo è creare un file di configurazione per la porta VNC, tipo questo:
~ # cat /etc/vmware/firewall/vnc.xml
VNC
inbound
tcp
dst
5901
outbound
tcp
dst
0
65535
true
false
A questo punto si può aggiornare il set di regole del firewall e verificare l’effettiva attivazione coi i seguenti comandi (da eseguire in ESXi shell, o via RCLI):
~ # esxcli network firewall refresh ~ # esxcli network firewall ruleset list | grep VNC VNC true
Alla fine basta scaricare un VNC client (ad esempio il TightVNC Viewer) e collegarsi al server ESXi alla porta specificata (nell’esempio 5901) usando la sintassi IP:Porta.