Dies ist möglich - zumindest in dem üblichen Fall, in dem ein NAT-Netzwerk für den Gast konfiguriert ist. Da VMWare das NAT-ing bereitstellt, sollte es uns mitteilen können, für welche Adressen es derzeit NAT-ing bereitstellt. So etwas vmrun list
sollte diese Information ausgeben. Dass es kein Fehler ist ...
Aber hier ist auf jeden Fall, wie man es herausfinden kann. Führen ifconfig
Sie das Programm zunächst auf Ihrem Mac aus (möglicherweise wird ipconfig
dies auch unter Windows ausgeführt, ich habe es jedoch nicht getestet). Dies listet alle Netzwerkschnittstellen auf dem Computer auf - sowohl physische als auch virtuelle. Suche nach den vmnet-ones. Auf meinem Mac erzeugt dies:
% ifconfig | grep -A2 ^vmnet
vmnet1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:50:56:c0:00:01
inet 192.168.82.1 netmask 0xffffff00 broadcast 192.168.82.255
vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:50:56:c0:00:08
inet 192.168.123.1 netmask 0xffffff00 broadcast 192.168.123.255
Die IP meines Gastes befindet sich also in einem dieser beiden privaten VM-Netzwerke: entweder 192.168.82.0/24 oder 192.168.123.0/24. Auf Ihrem Host gibt es möglicherweise nur einen, glücklichen Menschen oder mehr als zwei - wir müssen sie alle überprüfen. Hier ist ein sehr einfaches tcsh-Skript, das direkt über die Befehlszeile eingegeben wurde und das für mich funktioniert hat. Es wird versucht, jede Adresse in allen von vmnet verwalteten privaten Klasse-C-Netzwerken per Ping zu erreichen, und wird beendet, wenn ein Ping erfolgreich war. Die -W 500
Option weist ping an, nur eine halbe Sekunde auf eine Antwort zu warten (könnte wahrscheinlich noch weniger Zeit in Anspruch nehmen), und -c 1
weist es an, genau ein Paket zu senden:
% set i=2
% while ( $i < 255 )
while? ping -W 500 -c 1 192.168.82.$i && break
while? ping -W 500 -c 1 192.168.123.$i && break
while? @ i++
while? end
Das obige kleine Skript lief einige Zeit und listete alle erfolglosen Versuche auf, die nicht existierenden Adressen zu erreichen:
PING 192.168.82.2 (192.168.82.2): 56 data bytes
--- 192.168.82.2 ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
PING 192.168.123.2 (192.168.123.2): 56 data bytes
...
Bis es endlich gelang und zu Ende ging:
64 bytes from 192.168.123.130: icmp_seq=0 ttl=64 time=0.307 ms
--- 192.168.123.130 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
Voilà, ich konnte in meinen Gast hineinschauen:
% ssh 192.168.123.130
Password:
Jetzt hatte ich nur einen Gast am Laufen - die erste IP-Adresse, die auf einen Ping antwortete, war also die richtige. Wenn Sie mehrere Gäste gleichzeitig ausführen, müssen Sie möglicherweise denselben oder einen ähnlichen Ping-Befehl verwenden, um eine Liste aller dieser gültigen privaten IP-Adressen zu erstellen, und versuchen Sie es dann mit allen, bis Sie den richtigen Gast gefunden haben ...
(Und vielleicht ist .130 sowieso eine gute Vermutung für NAT-basierte Adressen. Aber ich kann nicht sicher sagen.)