호스트에서 VirtualBox에서 실행 중인 서버에 액세스하는 방법은 무엇입니까?

호스트에서 VirtualBox에서 실행 중인 서버에 액세스하는 방법은 무엇입니까?

VM에서 웹앱을 실행하고 있습니다.

localhost:8888VM 내에서 브라우저를 통해 앱을 볼 수 있습니다 .

동일한 URL의 호스트에서 앱을 볼 수 없습니다. 그것이 목표입니다.

시도해 보았 VBoxManage modifyvm "VM name" --natdnshostresolver1 on으나 효과가 없었습니다.

내 구성은 다음과 같습니다

  • 주인:윈도우 7
  • 손님:우분투 16.04.1 LTS
  • 버추얼박스:5.1.4r110228

게스트 구성

(게스트) ifconfigNAT 사용 시

kirkland@GC:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:d0:fc:0e  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::4c67:70b5:c37b:8fa8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7431 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3587 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7444830 (7.4 MB)  TX bytes:731870 (731.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1566 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1566 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:655936 (655.9 KB)  TX bytes:655936 (655.9 KB)

(게스트) /etc/hosts

127.0.0.1   localhost
127.0.1.1   GC

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

답변1

URL localhost:8888은 VM 내부의 유효한 URL입니다. 해당 VM 외부에서는 ip.ad.dr.ess:8888또는 를 사용해야 합니다 hostname:8888. 후자의 경우 ip.ad.dr.ess네트워크에서 확인되는 호스트 이름에 대한 종속성이 도입됩니다.

기본적으로 VirtualBox에서 VM을 생성하면 네트워크 어댑터 1이 NAT로 설정됩니다. 그러면 VM에 IP 주소 10.0.2.15/24와 기본 경로 10.0.2.2(호스트여야 함)가 제공됩니다. 간단히 말해서, 창은 먼저 더 많은 과정을 거치지 않고는 NAT를 제공하는 주소로 라우팅되지 않습니다.

VM을 종료하고 VM 네트워크 어댑터1 설정을 "브리지"로 변경하면 호스트(및 로컬 네트워크의 모든 호스트)가 특별한 경로를 추가하거나 점프할 후프 없이 해당 VM과 통신할 수 있습니다.

VM을 다시 시작합니다. 에 대한 연결을 확인하십시오 localhost:8888. 또한 hostname:8888(호스트 이름이 not/etc/hosts 파일의 루프백/localhost 주소에 추가되었다고 가정) 및 에 대한 연결을 확인하십시오 ip-address:8888. 편집: 게시된 /etc/hosts 세부 정보를 기반으로 areVM과 웹앱을 루프백 네트워크에 바인딩합니다. 이 구성은 VM 외부에서는 전혀 사용할 수 없습니다.

웹 서버와 애플리케이션이 처음 구성/설치된 IP에 종속되지 않고 LAN에 DHCP 서버가 있는 경우 VM에 연결하는 데 필요한 유일한 다른 정보는 IP 주소입니다. DHCP를 통해 할당됩니다.

VM의 IP 주소를 찾으려면: Ubuntu 데스크탑에서 터미널/콘솔 창을 열고(ctrl-alt-T), 호스트 이름, ifconfig 및 grep /etc/hosts명령을 사용하여 조각을 모아 주소를 찾습니다. 열린 터미널에서 다음을 입력 hostname한 후 Enter 키를 누르세요. 아마도 gc일 겁니다. 동일한 터미널에서 입력하면 ifconfig eth0 | awk '/Bcast/{print $2}'주소가 표시됩니다. /etc/hosts에는 주소 뒤에 호스트 이름이 오는 줄이 있어야 합니다. grep [hostname] /etc/hosts또는 grep [address] /etc/hosts필요한 라인을 찾아야 합니다. 현재 주소와 호스트 이름이 아닌 다른 항목이 나타나면 /etc/hosts 파일을 수정하여 올바른 정보를 추가해야 합니다.

이제 LAN의 호스트는 포트 8888에서 VM의 IP에 연결할 수 있습니다. 해당 호스트/클라이언트가 webapp에 액세스하려면 hostname:8888클라이언트 호스트 파일, 로컬 DNS 또는 DHCP 서버에 제공될 수 있는 mDNS 서비스에 따라 달라집니다. .

답변2

VM이 외부 네트워크에 노출되는 것을 원하지 않는 경우 포트 전달을 사용하는 빠른 솔루션은 다음과 같습니다. VM의 NAT 설정에서 아래와 같이 웹 및 SSH에 대한 포트 전달 프로필을 생성하세요.

여기에 이미지 설명을 입력하세요

답변3

이를 달성하려면 브리지 모드를 사용하는 것이 훨씬 더 나을 것이라고 생각합니다. 이것이 가능하지 않거나 바람직하지 않은 경우 호스트에 고정 경로가 필요합니다.

고정 경로를 추가하려면 다음을 수행하십시오. 호스트의 네트워크 속성을 살펴보십시오. VirtualBox Host-Only Network라는 어댑터를 찾아야 합니다. IP 주소를 찾으세요. 아마도 192.168.56.1이 기본값일 것 같지만 다른 것일 수도 있습니다. abcd를 호출하세요. 다음으로 게스트의 IP 주소를 얻으세요. wxyz를 호출합니다(처음 3옥텟은 두 주소에서 동일해야 합니다.). 그런 경우 호스트에서 DOS 프롬프트를 열고 다음 명령을 입력합니다.

route add w.x.y.z mask 255.255.255.0 a.b.c.d

작동하는 경우 -p 스위치와 함께 동일한 명령을 실행하여 영구적으로 만들 수 있습니다(그렇지 않으면 다음에 호스트를 재부팅할 때 사라집니다).

관련 정보