Howto: ESXi mit vSphere Client über Portforwarding verwalten

Welche Ports muss man sich eigentlich auf den lokalen Rechner tunneln, um einen Remote ESXi Host mit einem lokal installierten vSphere Client zu verwalten? Geht das eigentlich überhaupt? Ja, das geht, aber VMware hat dem Administrator hier freundlicherweise ein paar Stolpersteine in den Weg gelegt.

17. Mai 2012 12:35

Für die Remoteadministation eines ESXi Hosts benötigen Sie die Ports 902 und 443 (und 22 bei aktiviertem Tech Support Mode). Der direkte Zugriff aus dem Internet auf diese Ports sollte von einer Firewall blockiert werden.

Sicherheitscheck für Ihren ESXi Host

Ob das so ist, lässt sich sehr einfach herausfinden: geben Sie nacheinander in einem Terminal-Fenster (unter Windows heißt das Eingabeaufforderung) Folgendes ein:

telnet <esxihost ip> 902
telnet <esxihost ip> 443
telnet <esxihost ip> 22


Wenn die Verbindung in allen Fällen "hängt", ist alles so, wie es sein soll. Sehen Sie aber an einer Stelle irgendwelche sinnlosen Zeichen, ist der Port offen und es besteht ein Sicherheitsrisiko*.

Zugriff über SSH-Tunnel

Um einen via Firewall gesicherten ESXi Host remote mit dem vSphere Client zu verwalten, müssen Sie sich zunächst über SSH (z.B. mit PuTTY) auf Ihrer Firewall anmelden und sich die erforderlichen Ports über ein temporäres Portforwarding sicher auf das lokale System tunneln.

Eigentlich kann man nun über localhost + port auf die getunnelten Dienste zugreifen ... EIGENTLICH! Mit dem Webbrowser landen Sie über https://127.0.0.1/ bzw. https://localhost/ zwar auch tatsächlich auf Ihrem ESXi Server, aber mit dem Browser können Sie da garnichts tun.



Und der vSphere Client bricht mit der Meldung "Der vSphere-Client konnte keine Verbindung zu "hostname" herstellen. Ein Verbindungsfehler ist aufgetreten (Unable to connect to the remote server)" ab. Fehlt da noch ein Port?

vSphere Connection Error Workaround

Nein. Stattdessen ist es erforderlich, dem vSphere Client mit einem Trick eine andere Namensauflösung als "localhost" vorzugaukeln. Unter Windows findet sich unter "%windir%\system32\drivers\etc\hosts" eine Datei, mit der sich auf dem lokalen Computer Namensauflösungen realisieren lassen, für den angestrebten Zweck wie folgt:

#die zeile
127.0.0.1 localhost
# aendern zu
127.0.0.1 localhost esx1.vdomain.local


Unter Windows 7 gestaltet sich das Speichern dieser Datei etwas schwierig. Kopieren Sie die Datei in ein privates Verzeichnis, machen Sie die Änderungen und kopieren Sie die Datei zurück (überschreiben!). Achten Sie darauf, dass die Datei "hosts" keine Endung hat, also NICHT hosts.txt benannt sein darf!

Der verwendete Hostname "esx1.vdomain.local" ist natürlich nur ein Beispiel. Sie können freilich einen anderen Namen verwenden, solange am Ende ein ".local" (also keine gültige öffentliche TLD) steht.

Nun können Sie in der Eingabeaufforderung (DOS-Box) die Namensauflösung testen:

C:\> ping esx1.vdomain.local
Ping localhost [127.0.0.1] mit 32 Bytes Daten:
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
...


Wenn der Ping funktioniert, kann auch der vSphere Client verwendet werden.

*) Kann man die Firewall auf dem ESXi nicht einfach aktivieren oder nachinstallieren? Nein. Auf dem ESXi läuft als Betriebssystem ein Linux mit den gleichen Fähigkeiten wie busybox in der Version, die VMware in Ihrer Version des ESXi implementiert hat. Ein "iptables" sucht man da vergebens; ein ESXi Host kann sich somit nicht selbst vor Angriffen aus dem Internet schützen**.

**) Um einen ESXi Host sicher zu betreiben, ist ein vorgelagerter Router als Firewall unumgänglich. Einige Provider bieten eine zweite Netzwerkkarte für ein privates Netzwerk zwischen mehreren Rootservern an; damit lässt sich solch ein Setup realisieren.

 
π