가상 머신에서 실행되는 운영 체제에 실제로 들어 가지 않고 VMware Fusion을 사용하여 가상 머신의 IP를 확인할 수 있습니까? 메뉴 옵션, 명령 행 또는 VMware Fusion Software 자체에서 가상 이미지에 대해 발행 할 수있는 다른 옵션을 찾고 있습니다.
감사합니다-Adron
가상 머신에서 실행되는 운영 체제에 실제로 들어 가지 않고 VMware Fusion을 사용하여 가상 머신의 IP를 확인할 수 있습니까? 메뉴 옵션, 명령 행 또는 VMware Fusion Software 자체에서 가상 이미지에 대해 발행 할 수있는 다른 옵션을 찾고 있습니다.
감사합니다-Adron
답변:
IP 주소는 전적으로 OS의 책임입니다. 따라서 OS를 보유한 가상 프레임 워크는 Hyper-V 및 VMware의 추가 게스트 도구와 같은 프레임 워크에 공생 적으로 추가되지 않는 한 TCP / IP 스택에 대해 전혀 알지 못합니다 (todda.speot. 덕분에 아래 주석에 있음). . VM을 시작하지 않고 VM에서 파일을 탐색하려는 것과 크게 다르지 않습니다.
VM이 DHCP에 의존하는 경우 기술적으로, 당신은 할 수 는 IP는 것이 무엇의 좋은 아이디어를 얻을 수있는 가상 NIC의 MAC 주소로 나눠 마지막 임대에 대한 DHCP 서버 (가능성이 LAN의 라우터를) 검색 아마 일을 다음에 시작할 때. 임대 기록을 볼 때와 VM이 시작될 때 사이에 동일한 IP가 다른 장치로 전달되지 않았다고 가정합니다.
VMWare는 놀랍게도이를위한 내장 도구를 제공합니다 vmrun
. /Applications/VMware Fusion.app/Contents/Library/vmrun
다른 Fusion 릴리스에서는 약간 이동했지만 아래에 있습니다.
🍺 vmrun list
Total running VMs: 1
.docker/machine/machines/myvm.vmx
🍺 vmrun getGuestIPAddress ~/.docker/machine/machines/myvm.vmx
172.16.213.128
vmrun
기본적으로 내 Mac의 PATH에 있으므로 vmrun getGuestIPAddress "$(vmrun list | grep vmx)"
따옴표를 포함하십시오!
누군가를 도울 수있는 팁이 있습니다. avahi-daemon
VM에 설치 하십시오. 이를 통해 hostname을 통해 연결할 수 있습니다 vmname.local
. 여기서 vmname
가상 머신의 이름입니다. 필자의 경우 VM의 이름은 baremetal
내가 실행할 수있는 호스트에 있습니다.
ssh baremetal.local
VM의 IP를 알 필요가 없습니다. :)
avahi-daemon
사용할 수없는 VM 은 어떻습니까? 예를 들어 Windows가 떠오른다 ... :-)
적어도 NAT 스타일 네트워크가 게스트에 대해 구성된 일반적인 경우는 가능합니다. VMWare는 NAT-ing을 제공하고 있기 때문에 현재 NAT가 어떤 주소를 사용하고 있는지 알려줄 수 있어야합니다. 이와 같은 vmrun list
정보가이 정보를 출력해야합니다. 그것은 결함이 아닙니다 ...
그러나 어쨌든 여기에 어떻게 찾을 수 있는지가 있습니다. 먼저 ifconfig
Mac 에서 실행 하십시오 (아마도 ipconfig
Windows에서 동일하게 작동하지만 테스트하지는 않았습니다). 여기에는 머신의 모든 네트워크 인터페이스 (실제 및 가상)가 나열됩니다. vmnet-one을 찾으십시오. 내 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는 192.168.82.0/24 또는 192.168.123.0/24의 두 VM 사설 네트워크 중 하나에 있습니다. 호스트에는 단 하나, 운이 좋거나 둘 이상이있을 수 있습니다. 모두 확인해야합니다. 다음은 명령 줄에 직접 입력 한 매우 간단한 tcsh 스크립트입니다. vmnet에 의해 관리되는 모든 클래스 C 개인 네트워크에서 각 주소를 ping하려고 시도하고 ping이 성공하면 종료됩니다. 이 -W 500
옵션은 핑에게 응답을 위해 0.5 초만 기다리라고 지시하고 (아마도 더 적게 사용할 수 있음) -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
Voilà, 나는 내 손님으로 ssh 수 있었다 :
% ssh 192.168.123.130
Password:
이제는 게스트가 한 명뿐이므로 핑에 응답하는 첫 번째 IP 주소가 맞았습니다. 한 번에 여러 게스트를 실행하는 경우 동일한 모든 유사한 개인 IP 주소 목록을 작성하기 위해 동일하거나 유사한 ping 명령을 사용해야 할 수 있으며 올바른 게스트가 될 때까지 모두 시도하십시오 ...
(그리고 어쩌면 .130은 NAT 기반 주소에 대한 좋은 추측입니다. 그러나 확실하게 말할 수는 없습니다.)
nmap -sP 192.168.123.*
Mikhail T.가 말했듯이 "VMWare는 NAT를 제공하기 때문에 현재 NAT를 지원하는 주소를 알려줄 수 있어야합니다." 실제로 그것은 :
내 VMware Fusion 6 설치에서 vmnet-dhcpd
데몬은 파일에 임대를 씁니다 /var/db/vmware/vmnet-dhcpd-vmnetX.leases
. 여기서 "X"는 1과 8입니다. 경험적으로 :-) vmnet8임을 찾아야합니다. 다음은 임대 파일에서 발췌 한 것입니다 /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입니다. 이러한 항목을 구문 분석하거나 가장 최근 항목 만 볼 수 있습니다. 보고있는 임대가 여전히 유효한지 확인하십시오.
이것에 대한 나의 해결책은 다음과 같습니다.
VMware 도구가 설치되면 CentOS에서 폴더 (모든 폴더)에 액세스 할 수 있도록 공유를 구성하십시오. 그런 다음 / etc / sysconfig / network-scripts / ifup-post를 수정하여이 공유 폴더의 파일에 현재 날짜 및 IP 주소를 추가하십시오.
이를 수행하는 방법 :
수정 : / etc / sysconfig / network-scripts / 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의 날짜와 반환 값이 추가됩니다.
필자의 경우 집과 직장 사이에 항상 192라는 것을 알기 때문에 IP 주소에서 접두사 192를 grep하기로 결정했습니다. 위와 같이 조정하면 다음과 같이 할 수 있습니다.
date >> /path/to/shared/folder/guest_ip.log
ifconfig | grep 192 >> /path/to/shared/folder/guest_ip.log
VM 콘솔 ipconfig
(VM이 Windows 인 경우) 또는 ifconfig
(VM이 Linux 인 경우 ) 에서 실행하십시오 .
IP eth0
는 찾고있는 IP 주소입니다.
Ubuntu 15.04에서 VMPlayer를 실행하는 동안 동일한 문제가 발생했습니다. 내 가상 머신은 NAT로 설정되었으며 gui에 로그인하고 VM에서 ifconfig를 실행하여 IP 주소를 확인할 수 있었지만 핑하거나 ssh 할 수 없었습니다.
VMPlayer가 설치되면 vmnet1 및 vmnet8 어댑터에서 dhcp를 활성화하지 않았습니다. 해결책은 우분투 GUI를 사용하여 "연결 편집"으로 네트워크 연결을 편집하는 것입니다. 이더넷에서 vmnet1을 찾아서 편집 버튼을 누르십시오. IPv4 설정에서 DHCP를 활성화하고 저장하고 재부팅하십시오.
명령 행에서 ifconfig를 실행하면 vmnet1에 IP 주소가 있음을 알 수 있습니다. 호스트에서 nat-ed VM으로의 SSH 연결도 이제 작동합니다.
vmrun (버전 1.14.4 build-3204469) 맨 페이지에서 :
getGuestIPAddress Path to vmx file Gets the IP address of the guest
[-wait]
그러나이 기능을 사용하려면 게스트 OS에 VMware Tools 제품군을 설치해야하며 게스트 OS에 로그인하지 않으면이 단계를 수행 할 수 없습니다. "기본 이미지"에 도구를 설치하고 복제를 통해 도구에서 새 이미지를 작성할 수 있습니다. 그런 다음 위 명령을 사용하여 새로 생성 된 VM의 IP 주소를 얻을 수 있습니다.
arp -a| grep vmnet
? (172.16.65.132) at 0:c:29:83:1:e0 on vmnet8 ifscope [ethernet]