Я запускаю веб-приложение на виртуальной машине.
Я могу видеть приложение localhost:8888
через браузер из виртуальной машины.
Я не могу увидеть приложение с хоста по тому же URL. Это и есть цель.
Я пробовал VBoxManage modifyvm "VM name" --natdnshostresolver1 on
, но это не дало результата.
Моя конфигурация:
- Хозяин:Windows 7
- Гость:Ubuntu 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
является допустимым URL только внутри вашей виртуальной машины. За пределами этой виртуальной машины вам придется использовать ip.ad.dr.ess:8888
или . В последнем случае вводится hostname:8888
зависимость от разрешения имени хоста в вашей сети.ip.ad.dr.ess
По умолчанию, когда вы создаете VM в VirtualBox, сетевой адаптер 1 настроен на NAT. Это даст VM IP-адрес 10.0.2.15/24
и маршрут по умолчанию 10.0.2.2
(который должен быть вашим хостом). Короче говоря, Windows не будет направлять на адрес, для которого она предоставляет NAT, без предварительного выполнения дополнительных действий.
Завершение работы виртуальной машины и изменение настройки сетевого адаптера виртуальной машины 1 на «мостовой» позволит вашему хосту (и любому хосту в вашей локальной сети) взаимодействовать с этой виртуальной машиной без добавления каких-либо специальных маршрутов или обходных путей.
Перезапустите ВМ. Проверьте подключение к localhost:8888
. Также проверьте подключение к hostname:8888
(предполагая, что имя хоста было not
добавлено к адресу loopback/localhost в файле /etc/hosts) и ip-address:8888
. EDIT: На основании опубликованных данных /etc/hosts вы are
привязываете свою ВМ и, следовательно, веб-приложение к сети loopback. Эта конфигурация вообще не может использоваться вне ВМ.
Если ваш веб-сервер и приложение не зависят от IP-адреса, на котором они были изначально настроены/установлены, и в вашей локальной сети есть DHCP-сервер, то для подключения к виртуальной машине вам понадобится только IP-адрес, назначенный ей через DHCP.
Чтобы найти IP-адрес виртуальной машины: Откройте окно терминала/консоли с рабочего стола Ubuntu (ctrl-alt-T), мы используем /etc/hosts
команды hostname, ifconfig и grep, чтобы собрать все воедино и найти ваш адрес. В открытом терминале введите hostname
и нажмите Enter. Вероятно, это gc. В том же терминале ввод ifconfig eth0 | awk '/Bcast/{print $2}'
покажет адрес. У вас должна быть строка в /etc/hosts с адресом, за которым следует имя хоста. grep [hostname] /etc/hosts
или grep [address] /etc/hosts
вы должны найти нужную строку. Если вы найдете что-то, кроме вашего текущего адреса, за которым следует имя хоста, вам нужно изменить файл /etc/hosts, чтобы добавить правильную информацию.
Теперь хосты в вашей локальной сети смогут подключаться к IP-адресу вашей виртуальной машины через порт 8888. Для доступа этих хостов/клиентов к веб-приложению hostname:8888
будут использоваться файлы хостов клиента, локальный DNS или даже службы mDNS, которые могут предоставляться на вашем DHCP-сервере.
решение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, чтобы сделать ее постоянной (в противном случае она исчезнет при следующей перезагрузке хоста).