VM에서 웹앱을 실행하고 있습니다.
localhost:8888
VM 내에서 브라우저를 통해 앱을 볼 수 있습니다 .
동일한 URL의 호스트에서 앱을 볼 수 없습니다. 그것이 목표입니다.
시도해 보았 VBoxManage modifyvm "VM name" --natdnshostresolver1 on
으나 효과가 없었습니다.
내 구성은 다음과 같습니다
- 주인:윈도우 7
- 손님:우분투 16.04.1 LTS
- 버추얼박스:5.1.4r110228
(게스트) ifconfig
NAT 사용 시
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 세부 정보를 기반으로 are
VM과 웹앱을 루프백 네트워크에 바인딩합니다. 이 구성은 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
답변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 스위치와 함께 동일한 명령을 실행하여 영구적으로 만들 수 있습니다(그렇지 않으면 다음에 호스트를 재부팅할 때 사라집니다).