Как получить доступ к серверу, работающему в VirtualBox, с хоста?

Как получить доступ к серверу, работающему в VirtualBox, с хоста?

Я запускаю веб-приложение на виртуальной машине.

Я могу видеть приложение 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

Вот быстрое решение с использованием переадресации портов, если вы не хотите, чтобы VM была открыта для внешней сети. Просто создайте эти профили переадресации портов для веба и ssh, как показано ниже, в настройках NAT VM

введите описание изображения здесь

решение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, чтобы сделать ее постоянной (в противном случае она исчезнет при следующей перезагрузке хоста).

Связанный контент