ฉันจะค้นหาที่อยู่ IP ของเครื่องเสมือนโดยใช้ VMware Fusion ได้อย่างไร


19

ฉันสามารถตรวจสอบ IP ของเครื่องเสมือนโดยใช้ VMware Fusion โดยไม่ต้องป้อนระบบปฏิบัติการที่ทำงานบนเครื่องเสมือนจริงได้หรือไม่ ฉันกำลังมองหาตัวเลือกเมนู, บรรทัดคำสั่ง, หรืออื่น ๆ ที่ฉันสามารถใช้กับอิมเมจเสมือนได้ด้วยซอฟต์แวร์ VMware Fusion

ขอบคุณ - Adron


หากคุณทราบที่อยู่ MAC ของเครื่องเสมือน NIC คุณสามารถลองใช้แคช ARP ของเครื่องโฮสต์หรือย้อนกลับ ARP
ta.speot.is

มันน่าทึ่งที่ vmware ไม่ได้ทำให้สิ่งนี้เป็นสิ่งที่ชัดเจนและง่ายเหมือน vms อื่น ๆ ! ไชโยสำหรับคำตอบ avahi และ nmap ถ้าคุณหมดหวัง แต่ก็ยัง - ล้มเหลวมาก VMware!
nealmcb

คำตอบ:


1

คำตอบสั้น ๆ : ไม่

คำตอบยาว: ไม่ แต่อาจจะ

ที่อยู่ IP นั้นเป็นความรับผิดชอบทั้งหมดของระบบปฏิบัติการ ดังนั้นเฟรมเวิร์กเสมือนที่เก็บระบบปฏิบัติการจึงไม่มีความคิดเกี่ยวกับสแต็ก TCP / IP ภายในเว้นแต่จะมีการเพิ่ม symbiotic ให้กับเฟรมเวิร์กเช่น Hyper-V และ VMware เพิ่มเติมสำหรับเครื่องมือแขกเพิ่มเติม (ขอบคุณ todda.speot.is ในความคิดเห็นด้านล่าง) . มันไม่แตกต่างจากที่ต้องการเรียกดูไฟล์บน VM โดยไม่ต้องเริ่มต้นใช้งานก่อน

ในทางเทคนิคหาก VM อาศัย DHCP คุณสามารถค้นหาเซิร์ฟเวอร์ DHCP ของคุณ (น่าจะเป็นเราเตอร์ LAN ของคุณ) สำหรับการเช่าครั้งสุดท้ายที่ส่งไปยังที่อยู่ MAC ของ NIC เสมือนเพื่อให้ได้แนวคิดที่ดีว่า IP น่าจะเป็นอะไร ครั้งต่อไปที่เปิดตัว นั่นคือสมมติว่า IP เดียวกันนั้นไม่ได้ส่งมอบให้กับอุปกรณ์อื่นในระหว่างที่คุณดูประวัติการเช่าและเมื่อ VM เริ่มต้นทำงาน


1
โอ๊ะ ฉันหวังว่าวีเอ็มแวร์จะมีตะขอเกี่ยวกับระบบปฏิบัติการที่จะให้สิ่งนั้น :( ฉันไม่สามารถเข้าถึง DHCP ขององค์กรได้ดังนั้นจึงไม่มีความคิดเนื่องจากฉันไม่สามารถเข้าถึงระบบปฏิบัติการจริงได้เช่นกัน
Adron

ไฮเปอร์ไวเซอร์สามารถเชื่อมต่อและรับที่อยู่ IP Hyper V ทำได้ด้วยการเพิ่มของผู้เยี่ยมชม และดูเหมือนว่ารสชาติบางอย่างของ VMware จะบอกคุณเช่นกันkb.vmware.com/Platform/Publishing/images/1006098.JPG - แต่อย่างที่ WesleyDavid กล่าวมันไม่ใช่ความรับผิดชอบของไฮเปอร์ไวเซอร์ที่ต้องกังวลเกี่ยวกับเรื่องนี้
ta.speot.is

46

VMWare vmrunให้ไม่น่าแปลกใจที่สร้างขึ้นในเครื่องมือสำหรับการนี้ มันอยู่ภายใต้/Applications/VMware Fusion.app/Contents/Library/vmrunแม้ว่ามันจะมีการเคลื่อนไหวในฟิวชั่นอื่น ๆ ออกมาเล็กน้อย

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

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

7
นี่ควรเป็นคำตอบที่ยอมรับได้ ทำงานได้อย่างสมบูรณ์แบบ
Michael Potter

2
ดี! vmrunอยู่ใน PATH ของ Mac ตามค่าเริ่มต้นดังนั้นvmrun getGuestIPAddress "$(vmrun list | grep vmx)"รวมราคาไว้ด้วย!
Big Rich

เห็นได้ชัดว่าเครื่องมือ VMWare จำเป็นต้องทำงานใน VM (Fusion V8.5)
Laryx Decidua

10

นี่คือเคล็ดลับในกรณีที่ช่วยทุกคน ติดตั้งavahi-daemonบน VM สิ่งนี้ช่วยให้คุณสามารถเชื่อมต่อผ่านชื่อโฮสต์vmname.localซึ่งvmnameเป็นชื่อของเครื่องเสมือนของคุณ ในกรณีของฉันชื่อของ VM คือbaremetalและบนโฮสต์ที่ฉันสามารถเรียกใช้:

ssh baremetal.local

ไม่จำเป็นต้องรู้ IP ของ VM :)


1
เป็นความคิดที่ดี แต่สิ่งที่เกี่ยวกับ VM ที่ใช้ระบบปฏิบัติการที่avahi-daemonไม่สามารถใช้ได้? อินสแตนซ์ของ Windows อยู่ในใจ ... :-)
Laryx Decidua

4

เป็นไปได้ - อย่างน้อยในกรณีทั่วไปที่มีการกำหนดค่าเครือข่ายแบบ NAT สำหรับแขก เนื่องจาก VMware กำลังให้บริการ NAT-ing จึงควรบอกเราได้ว่าที่อยู่ใดที่ NAT กำลังดำเนินการอยู่ สิ่งที่ชอบvmrun listควรมีการส่งออกข้อมูลนี้ ว่ามันไม่ได้เป็นข้อบกพร่อง ...

แต่ในกรณีใด ๆ นี่คือวิธีการหนึ่งที่สามารถค้นหาได้ ก่อนอื่นให้รันifconfigบน Mac ของคุณ (อาจipconfigจะทำเช่นเดียวกันบน Windows แต่ฉันยังไม่ได้ทดสอบ) สิ่งนี้จะแสดงรายการอินเทอร์เฟซเครือข่ายทั้งหมดบนเครื่อง - ทั้งแบบฟิสิคัลและเสมือน มองหา vmnet-ones สำหรับ 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 ที่ง่ายมากที่ป้อนโดยตรงบนบรรทัดคำสั่งซึ่งทำเพื่อฉัน จะพยายาม ping แต่ละที่อยู่ในเครือข่ายส่วนตัวคลาส C ทั้งหมดที่จัดการโดย vmnet และสิ้นสุดเมื่อ ping สำเร็จ -W 500ตัวเลือกบอก ping รอเพียงครึ่งหนึ่งที่สองสำหรับการตอบสนอง (อาจอาจจะใช้แม้แต่น้อย) และ-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 เป็นแขกของฉัน:

% ssh 192.168.123.130
Password:

ตอนนี้ฉันมีแขกเพียงคนเดียวที่ทำงาน - ดังนั้นที่อยู่ IP แรกที่ตอบสนองต่อการปิงนั้นถูกต้อง หากคุณมีผู้เข้าร่วมหลายคนพร้อมกันคุณอาจต้องใช้คำสั่ง ping ที่เหมือนกันหรือคล้ายกันเพื่อสร้างรายการที่อยู่ IP ส่วนตัวที่ถูกต้องทั้งหมดแล้วลองทั้งหมดจนกว่าคุณจะเป็นแขกที่ถูกต้อง ...

(และอาจเป็น. 130 เป็นการคาดเดาที่ดีสำหรับที่อยู่ตาม NAT แต่ฉันไม่สามารถพูดได้อย่างแน่นอน)


1
ด้วย nmap คุณจะพบ IP ที่เร็วกว่า ;-)nmap -sP 192.168.123.*
Robert Reiz

4

ดังที่ Mikhail T. กล่าวว่า "เนื่องจาก VMWare ให้บริการ NAT-ing จึงควรบอกเราได้ว่าที่อยู่ใดที่ NAT อยู่นั้นกำลังดำเนินการอยู่" แน่นอนมัน:

ในการติดตั้ง VMware Fusion 6 ของฉันvmnet-dhcpddaemon เขียนสัญญาเช่าลงในไฟล์/var/db/vmware/vmnet-dhcpd-vmnetX.leasesโดยที่ "X" คือ 1 และ 8 โดยประจักษ์ :-) ฉันยอมรับว่าเป็น vmnet8 ที่ฉันควรมองหา นี่คือข้อความที่ตัดตอนมาจากไฟล์ Lease /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-hostnameคือชื่อของ VM และตัวเลขหลังคำว่าleaseเป็น IP ของ คุณสามารถแยกรายการเหล่านี้หรือเพียงแค่ดูรายการล่าสุด ตรวจสอบให้แน่ใจว่าสัญญาเช่าที่คุณกำลังดูอยู่นั้นยังคงใช้ได้อยู่


2

วิธีแก้ปัญหาของฉันคือ:

เมื่อคุณติดตั้งเครื่องมือ VMware แล้วให้กำหนดค่าการแชร์เพื่อให้คุณสามารถเข้าถึงโฟลเดอร์ (โฟลเดอร์ใดก็ได้) จาก CentOS จากนั้นแก้ไข / etc / sysconfig / network-สคริปต์ / ifup-post เพื่อผนวกวันที่ & ที่อยู่ IP ปัจจุบันของคุณไปยังไฟล์ในโฟลเดอร์ที่แชร์นี้

วิธีทำ:

แก้ไข: / etc / sysconfig / network-สคริปต์ / ifup-post

เพิ่มสิ่งนี้ก่อนบรรทัดสุดท้ายของ ifup-post ("exit 0"):

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

สิ่งนี้จะผนวก guest_ip.log ของคุณด้วยวันที่และค่าส่งคืนของ ifconfig ทุกครั้งที่เครือข่ายปรากฏ

ในกรณีของฉันฉันตัดสินใจที่จะ grep สำหรับคำนำหน้า 192 บนที่อยู่ IP ของฉันเนื่องจากฉันรู้ว่าระหว่างบ้านและที่ทำงานของฉันมันเป็น 192 เสมอสิ่งนี้สามารถทำได้โดยการปรับด้านบนดังนี้

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

"เพื่อให้คุณสามารถเข้าถึงโฟลเดอร์ (โฟลเดอร์ใดก็ได้) จาก CentOS". แล้วคนที่ 1) ใช้ดิสทริบิวชั่นลีนุกซ์อื่น ๆ 2) ใช้ระบบปฏิบัติการยูนิกซ์นอกเหนือจากลีนุกซ์ 3) ใช้ระบบปฏิบัติการที่ไม่ใช่ Unix เช่น Windows, ... ใน VMs ของพวกเขา? :-)
Laryx Decidua

1

ทำงานในคอนโซล VM ipconfig(ถ้า VM เป็น Windows) หรือifconfig(ถ้า VM คือ Linux)

IP of eth0คือที่อยู่ IP ที่คุณกำลังมองหา


คำถามเดิมคือ "ไม่เข้าสู่ระบบปฏิบัติการที่ทำงานอยู่บนเครื่องเสมือนจริงหรือ?" สิ่งนี้อาจทำให้คุณไม่สนใจ
กล่องเสียง Decidua

มันอาจไม่ตอบคำถาม แต่ฉันลงเอยด้วยคำถามที่แตกต่างออกไปเล็กน้อยและเป็นประโยชน์
jamie-wilson

1

ฉันมีปัญหาเดียวกันขณะใช้งาน VMPlayer บน Ubuntu 15.04 เครื่องเสมือนของฉันถูกตั้งค่าเป็น NAT และแม้ว่าฉันสามารถระบุที่อยู่ IP ของมันได้โดยการเข้าสู่ gui และเรียกใช้ ifconfig ใน VM ฉันไม่สามารถ ping หรือ ssh ลงไปได้

ปรากฎเมื่อติดตั้ง VMPlayer มันไม่ได้เปิดใช้งาน dhcp บนอะแดปเตอร์ vmnet1 และ vmnet8 วิธีแก้ไขคือใช้ ubuntu gui เพื่อแก้ไขการเชื่อมต่อเครือข่ายด้วย "Edit Connections" ค้นหา vmnet1 ภายใต้อีเธอร์เน็ตและกดปุ่มแก้ไข ภายใต้การตั้งค่า IPv4 ให้เปิดใช้งาน DHCP บันทึกและรีบูต

ตอนนี้ถ้าคุณเรียกใช้ ifconfig บนบรรทัดคำสั่งคุณจะสังเกตเห็นว่า vmnet1 มีที่อยู่ IP SSHing เป็น nat-ed VM จากโฮสต์ตอนนี้ทำงานเช่นกัน


0

จาก manpages ของ vmrun (เวอร์ชั่น 1.14.4 build-3204469):

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

อย่างไรก็ตามโปรดจำไว้ว่าเพื่อให้สิ่งนี้ทำงานได้ควรติดตั้งชุดเครื่องมือ VMware ใน guest OS และไม่สามารถทำตามขั้นตอนนี้ได้โดยไม่ต้องเข้าสู่ระบบปฏิบัติการ guest คุณสามารถติดตั้งเครื่องมือใน "ภาพฐาน" และสร้างภาพใหม่จากมันผ่านการโคลน จากนั้นคุณสามารถใช้คำสั่งด้านบนเพื่อรับที่อยู่ IP ของ VM ที่สร้างขึ้นใหม่


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.