Це можливо - принаймні, у звичайному випадку, коли мережа в стилі NAT налаштована для гостя. Оскільки VMWare забезпечує NAT-ing, він повинен бути в змозі сказати нам, для яких адрес він зараз NAT. Щось подібне vmrun list
повинно виводити цю інформацію. Що це не є вадою ...
Але, у будь-якому випадку, ось як це можна дізнатися в будь-якому випадку. По-перше, запустіть ifconfig
на вашому Mac (можливо, ipconfig
зробили б те саме і в Windows, але я його не перевіряв). Тут буде перераховано всі мережеві інтерфейси на машині - як фізичні, так і віртуальні. Шукайте vmnet-них. На моєму Mac це створює:
% 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
Отже, IP мого гостя знаходиться в одній із цих двох приватних мереж VM: або 192.168.82.0/24, або 192.168.123.0/24. У вашого господаря може бути лише один, вам пощастило, або більше двох - нам потрібно перевірити їх усіх. Ось дуже простий tcsh-скрипт, введений безпосередньо в командному рядку, що зробив це для мене. Він намагається пінг-адреси кожної адреси у всіх приватних мережах класу C, якими керує vmnet, і закінчується, коли ping проходить успішно. -W 500
Опція говорить пінг чекати тільки півсекунди відповіді (може, ймовірно, використовувати навіть менше), і -c 1
каже йому , щоб послати рівно один пакет:
% 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
Наведений вище сценарій деякий час працював з переліком усіх невдалих спроб дістатися до неіснуючих адрес:
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
...
Поки це остаточно не вдалося і закінчили:
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
Вуаля, мені вдалося ввійти до свого гостя:
% ssh 192.168.123.130
Password:
Тепер у мене працював лише один гість - тому перша IP-адреса, яка відповіла на ping, була правильною. Якщо ви запускаєте декілька гостей одночасно, можливо, вам потрібно буде використовувати одну і ту ж чи подібну команду ping, щоб скласти список усіх таких дійсних приватних IP-адрес, а потім спробувати їх усіх, поки ви не потрапите в потрібний гість ...
(І, можливо, .130 - це гарна здогадка для адрес на основі NAT. Але я не можу сказати точно.)