VMware Fusion kullanarak bir sanal makinenin IP adresini nasıl bulabilirim?


19

Sanal makinede çalışan işletim sistemine girmeden VMware Fusion kullanarak bir sanal makinenin IP'sini belirleyebilir miyim? Bir menü seçeneği, komut satırı veya VMware Fusion Software kendisi ile sanal görüntü karşı verebilir başka türlü arıyorum.

Teşekkürler - Adron


Sanal makine NIC'in MAC adresini biliyorsanız, ana makinenizin ARP önbelleğini veya ters ARP'yi her zaman kullanmaya çalışabilirsiniz.
ta.speot.is

Vmware'in bu drop-dead'i diğer vms gibi açık ve kolay hale getirmemesi şaşırtıcı! Avahi yanıtı şerefe ve umutsuz, ama yine de nmap - Büyük başarısız VMware!
nealmcb

Yanıtlar:


1

Kısa Cevap: Hayır

Uzun Cevap: Hayır ama belki

IP adresi tamamen bir işletim sisteminin sorumluluğundadır. Bu nedenle, Hyper-V ve VMware'in ek konuk araçları gibi çerçeveye simbiyotik eklemeler olmadıkça , işletim sistemini tutan sanal çerçevenin TCP / IP yığını hakkında hiçbir fikri yoktur (aşağıdaki yorumlarda todda.speot.is sayesinde) . İlk olarak bir sanal makinede dosyalara göz atmak istemekten çok farklı değildir.

VM DHCP dayanıyorsa Teknik olarak, sen verebilir IP ne iyi bir fikir edinmek için sanal NIC MAC adresine dağıttığı son kira için DHCP sunucusu (olasılıkla LAN yönlendirici) arama muhtemelen olmak bir dahaki sefere başlar. Bu, kiralama geçmişine baktığınız zaman ve VM başlatıldığında aynı IP'nin başka bir cihaza dağıtılmadığı varsayılır.


1
Ahh. VMware'in işletim sistemine bunu sağlayacak bazı kancaları olmasını umuyordum. :( Şirket DHCP'sine erişimim yok, bu yüzden gerçek işletim sistemine erişimim olmadığından hiçbir fikrim yok.
Adron

Bir hipervizör takılabilir ve IP adresini alabilir, Hyper V bunu Konuk Eklemeleri ile yapar. Ve VMware bazı tatlar da söyleyecektir görünüyor kb.vmware.com/Platform/Publishing/images/1006098.JPG - ama WesleyDavid dediği gibi, gerçekten bu konuda endişe Hipervizör sorumluluğum değil.
ta.speot.is

46

Şaşırtıcı değil, bunun için yerleşik bir araç sağlar vmrun. /Applications/VMware Fusion.app/Contents/Library/vmrunDiğer Fusion sürümlerinde biraz hareket etmesine rağmen altında .

🍺 vmrun list
    Total running VMs: 1
    .docker/machine/machines/myvm.vmx

🍺  vmrun getGuestIPAddress ~/.docker/machine/machines/myvm.vmx
    172.16.213.128

7
Bu kabul edilen cevap olmalı. Mükemmel çalıştı.
Michael Potter

2
Güzel! vmrunMac'inin PATH'ında varsayılan olarak, bu yüzden vmrun getGuestIPAddress "$(vmrun list | grep vmx)"tırnak işaretlerini ekleyin!
Büyük Zengin

Görünüşe göre VMWare Tools'un VM'de çalışması gerekiyor. (Fusion V8.5)
Laryx Decidua

10

İşte herkese yardımcı olması için bir ipucu. avahi-daemonVM'ye yükleyin . Bu ana makine üzerinden bağlanmak için izin verir vmname.local, vmnamesanal makine adıdır. Benim durumumda, VM'nin adı baremetalve ana bilgisayarda çalıştırabilirim:

ssh baremetal.local

VM'nin IP'sini bilmenize gerek yok. :)


1
İyi fikir ama avahi-daemonmevcut olmayan işletim sistemlerini çalıştıran VM'ler ne olacak ? Örneğin Windows akla geliyor ... :-)
Laryx Decidua

4

En azından, ortak durumda, NAT tarzı ağın konuk için yapılandırıldığı mümkündür. VMWare NAT-ing sağladığı için, bize şu anda NAT-ing'in hangi adresler için olduğunu söyleyebilmelidir. vmrun listBu bilgilerin çıktısı gibi bir şey olmalıdır. Bu bir kusur değil ...

Ancak, her durumda, nasılsa nasıl öğrenebiliriz. İlk olarak, ifconfigMac'inizde çalıştırın (belki de ipconfigWindows'ta aynı şeyi yapar, ancak test etmedim). Bu, makinedeki tüm ağ arabirimlerini listeler - hem fiziksel hem de sanal. Vmnet'leri arayın. Mac bilgisayarımda bu şunlar üretiliyor:

% 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

Bu yüzden, misafirimin IP'si şu iki VM özel ağından birinde: 192.168.82.0/24 veya 192.168.123.0/24. Ev sahibinizde sadece bir, şanslı veya ikiden fazla olabilir - hepsini kontrol etmeliyiz. İşte benim için doğrudan komut satırına girilen çok basit bir tcsh-script. Her adres, vmnet tarafından yönetilen tüm C sınıfı özel ağlarda ping işlemi yapmaya çalışır ve ping başarılı olduğunda sona erer. Bu -W 500seçenek ping'e bir yanıt için yalnızca yarım saniye beklemesini söyler (muhtemelen daha da az kullanabilir) ve -c 1tam olarak bir paket göndermesini söyler:

% 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

Yukarıdaki küçük komut dosyası, var olmayan adreslere ulaşmak için yapılan tüm başarısız girişimleri listelemek için bir süre çalıştı:

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
...

Sonunda başarılı ve bitene kadar:

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à, misafirime ssh edebildim:

% ssh 192.168.123.130
Password:

Şimdi sadece tek bir misafirim vardı - bu yüzden bir ping'e cevap veren ilk IP adresi doğru olanıydı. Aynı anda birden fazla misafir çalıştırırsanız, bu tür geçerli özel IP adreslerinin bir listesini oluşturmak ve ardından doğru misafire girene kadar hepsini denemek için aynı veya benzer ping komutunu kullanmanız gerekebilir ...

(Ve belki de .130 yine de NAT tabanlı adresler için iyi bir tahmindir. Ama kesin olarak söyleyemem.)


1
Nmap ile up IP'leri daha hızlı bulabilirsiniz ;-)nmap -sP 192.168.123.*
Robert Reiz

4

Mikhail T.'nin dediği gibi, "VMWare NAT-ing'i sağladığı için, bize şu anda NAT-ing'in hangi adresler için olduğunu söyleyebilmelidir." Gerçekten de öyle:

VMware Fusion 6 kurulumumda vmnet-dhcpddaemon, kiralamalarını /var/db/vmware/vmnet-dhcpd-vmnetX.leases"X" 1 ve 8 olduğu dosyalara yazar . Ampirik olarak aramam gereken vmnet8 olduğunu belirledim. İşte kiralama dosyasından bir alıntı /var/db/vmware/vmnet-dhcpd-vmnet8.leases:

lease 192.168.177.129 {
    starts 1 2014/02/17 09:34:19;
    ends 1 2014/02/17 09:36:56;
    hardware ethernet 00:0c:29:2b:2b:10;
    client-hostname "ubuntu";
}

client-hostnameVM adıdır ve kelimeden sonra sayı leaseIP olduğunu. Bu girişleri ayrıştırabilir veya sadece en son girişlere bakabilirsiniz. Baktığınız kira sözleşmesinin hala geçerli olduğundan emin olun.


2

Benim çözümüm şuydu:

VMware araçlarını yükledikten sonra, CentOS'tan bir klasöre (herhangi bir klasör) erişebilmeniz için paylaşımı yapılandırın. Ardından, bu paylaşılan klasördeki bir dosyaya geçerli tarih ve ip adresinizi eklemek için / etc / sysconfig / network-scripts / ifup-post öğesini değiştirin.

Bu nasıl yapılır:

Değiştir: / etc / sysconfig / network-scriptleri / ifup-post

bunu ifup-post'un son satırından önce ekleyin ("exit 0"):

date >> /path/to/shared/folder/guest_ip.log
ifconfig >> /path/to/shared/folder/guest_ip.log

Bu, guest_ip.log dosyanıza ağ her geldiğinde ifconfig tarih ve dönüş değeri ekler.

Benim durumumda, IP adresimde 192 öneki için grep'e karar verdim, çünkü evim ve işim arasında her zaman 192 olduğunu biliyorum. Bu, yukarıdaki gibi ayarlanarak yapılabilir:

date >> /path/to/shared/folder/guest_ip.log
ifconfig | grep 192 >> /path/to/shared/folder/guest_ip.log

msgstr "böylece bir klasöre (herhangi bir klasöre) CentOS'tan erişebilirsiniz." 1) diğer Linux dağıtımlarını kullanan, 2) Linux dışındaki UNIX işletim sistemlerini kullanan, 3) VM'lerinde Windows gibi Unix olmayan işletim sistemlerini kullanan ... :-)
Laryx Decidua

1

VM konsolunda ipconfig(VM Windows ise) veya ifconfig(VM Linux ise) çalıştırın.

IP eth0adresi, aradığınız IP adresidir.


Asıl soru "sanal makinede çalışan işletim sistemine gerçekten girmeden mi?" Bu dikkatinizden kaçmış olabilir.
Laryx Decidua

Bu soruya cevap vermeyebilir, ancak burada biraz farklı bir soru ile sonuçlandım ve yardımcı oldu.
jamie-wilson

1

Ubuntu 15.04'te VMPlayer'ı çalıştırırken de aynı sorunu yaşadım. Sanal makinem NAT olarak ayarlanmıştı ve ip adresini gui'de oturum açıp VM'de ifconfig çalıştırarak belirleyebilsem de, ping veya ssh yapamadım.

VMPlayer yüklendiğinde, vmnet1 ve vmnet8 adaptöründe dhcp'yi etkinleştirmedi. Çözüm ubuntu gui'yi "Bağlantıları Düzenle" ile ağ bağlantılarını düzenlemek için kullanmaktı. Ethernet altında vmnet1'i bulun ve düzenle düğmesine basın. IPv4 ayarları altında, DHCP'yi etkinleştirin, kaydedin ve yeniden başlatın.

Şimdi komut satırında ifconfig komutunu çalıştırırsanız, vmnet1'in bir IP adresi olduğunu fark edeceksiniz. Ana bilgisayardan nat-ed VM'ye SSHing şimdi de çalışıyor.


0

Vmrun yönetiminden (sürüm 1.14.4 build-3204469):

getGuestIPAddress        Path to vmx file     Gets the IP address of  the guest
                         [-wait]

Ancak, bunun çalışması için konuk işletim sistemine VMware Tools paketinin kurulması gerektiğini ve bu adımın konuk işletim sistemine giriş yapılmadan gerçekleştirilemeyeceğini unutmayın. Araçları bir "temel resim" içine kurabilir ve klonlama yoluyla ondan yeni resimler oluşturabilirsiniz. Sonra yeni oluşturulan VM'lerin IP adresini almak için yukarıdaki komutu kullanabilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.