Обращение к localhost с виртуальной машины VirtualBox

787

У меня есть локальный сервер тестирования / разработки (HTTP, конечно), прослушивающий порт 8000.

Я работаю в Linux, поэтому для тестирования страницы в Internet Explorer 6, 7, 8 и т. Д. Я запускаю виртуальную машину с использованием VirtualBox; Мне также нужно посмотреть, как он выглядит на Firefox в среде Windows (например, шрифты разные).

На моей реальной машине я открываю веб-сайт, просто используя URL http://localhost:8000, как мне обратиться к этому локальному хосту с виртуальной машины?

Прямо сейчас мой обходной путь должен использовать IP-адрес. Есть идеи получше?

Hasen
источник
38
Я не могу поверить, что это все еще так утомительно. Я использую VB в течение многих лет, и хотя он стал легче, это все еще является основным препятствием, и сетевые опции все еще трудно понять, и это все еще не работает "из коробки" для того, чего хочет подавляющее большинство пользователей использовать его для. Вероятно, сотни тысяч используют VB для тестирования сайтов (или приложений) на разных платформах на localhost. Поразительно думать, сколько времени и раздражения можно сэкономить, улучшая этот конкретный аспект программного обеспечения.
Рольф
См. Также тот же вопрос на superuser.com: superuser.com/questions/310697/…
Purplejacket,

Ответы:

939

Погуглил это: http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu

Он предлагает использовать IP:, http://10.0.2.2и это сработало для меня.

Итак, я отредактировал файл hosts C:\windows\system32\drivers\etc\hostsи добавил эту запись:

10.0.2.2   outer

Если вы тестируете на IE8, не забудьте указать http://адресную строку. Просто поставить ip напрямую не получится.

Например:

http://10.0.2.2:3000/
Hasen
источник
7
В ipconfig (Windows в VirtualBox) я заметил, что маршрутизатором по умолчанию для моего VirtualBox является этот IP-адрес ... так что для меня это имеет смысл.
BENC
48
Чтобы сохранить ваши изменения в файле hosts, запустите Блокнот, щелкнув его правой кнопкой мыши и выбрав «Запуск от имени администратора»
Ноа Суссман
25
Мне пришлось изменить Attached toнастройки сети VirtualBox с Bridged Adapterна, NATчтобы это работало на меня.
Трой Харви
1
Вы также можете установить его как 10.0.2.2 localhost в конфигурации VM, чтобы гарантировать правильное определение абсолютных путей
Марио Пешев,
5
Мне нужен доступ localhostне 10.0.2.2из-за какого-то хренового аутентификации, который хочет использовать localhost в качестве адреса :(
Доминик,
408

Macos

Я использую Virtual Box на MacOS (ранее OS X), использую Virtual Box для тестирования IE на Windows и т. Д.

Перейти к IE в Virtual Box и доступ localhostчерез http://10.0.2.2для localhostили http://10.0.2.2:3000для localhost:3000.

Я сохранил настройки сети как NAT, нет необходимости для моста, как предложено выше в моем случае. Там нет необходимости редактировать любые файлы конфигурации.

Джонатан Лин
источник
39
Я действительно должен был добавить «http: //» перед IP-адресом, чтобы он работал (IE8 / WinXP box).
wrtsprt
8
Но есть ли способ сопоставить 10.0.2.2 с localhost: 8888? У меня localhost: 8888 в качестве домашнего URL в моей базе данных. Переход к 10.0.2.2 в VB загружает HTML-страницу, но все ссылки ломаются, потому что они указывают на localhost: 8888
Майкл Джованни Пумо,
Насколько мне известно, @MichaelGiovanniPumo вы не можете напрямую привязать URL к определенному порту. Вы должны указать порт явно
Джонатан Лин
2
@JonathanLin Я решил это, просто сопоставив 10.0.2.2 с localhost в файле хостов Win7, и это все равно работало с портом: 8888, так что теперь оно работает. Спасибо.
Майкл Джованни Пумо
Замечательное работает, MacOS Sierra версия 10.12.5 и VirtualBox v 5.1.22
Tabares
82

Чтобы включить это в OSX, мне нужно было сделать следующее:

  1. Выключите вашу виртуальную машину.
  2. Перейдите, чтобы VirtualBox Preferences -> Network -> Host-only Networks ->нажать значок «+». Нажмите ОК.
  3. Установите флажок и нажмите « "Settings" icon -> Network -> Adapter 2 ->В приложении»: выберите «Host-only Adapter», и ваша сеть ( vboxnet0) должна отобразиться ниже по умолчанию. Нажмите ОК.
  4. Как только вы снова запустите свой ящик, вы сможете получить доступ к localhost по адресу http://10.0.2.2/

Вы можете обратиться к нему localhostи получить доступ к другим локальным сайтам, добавив их ссылки на файл hosts ( C:\windows\system32\drivers\etc\hosts), как показано ниже:

10.0.2.2    localhost
10.0.2.2    subdomain.localhost
Стивен Соусье
источник
4
Это решение сработало для меня с небольшой модификацией: после создания нового адаптера только для хоста (vboxnet0) отредактируйте адаптер. В появившемся окне перейдите на вкладку Адаптер и скопируйте IPv4 Address(например, 192.168.56.1). Затем, как только вы запустите виртуальную машину, откройте браузер и перейдите кhttp://192.168.56.1:3000
Роберт
Работает как на XP и Windows 7
Sukeerthi Adiga
1
К сожалению, я не могу разрешить свои субдомены, я прошел здесь шаги по принятому ответу, чтобы проверить, работает ли файл hosts на Win10, как и ожидалось: serverfault.com/questions/452268/… Есть идеи?
Данджа
Работал на хост-компьютере MacOs High Serra и гостевой Windows 7
Капитула Алексей
6
Мне не удалось найти опцию «Сети только для хоста».
Джейсон Мур
56

Скорее всего, ваша виртуальная машина настроена на NAT. Если вы установили для своей сети значение Bridged, вы сможете получить доступ к своему хост-компьютеру по его имени. Например, если ваше имя хоста «jsmith-Precision-7510» и вы хотите открыть http: // localhost: 3000 / , вы сможете просмотреть эту страницу по адресу http: // jsmith-Precision-7510: 3000 / .

Чтобы найти ваше имя хоста, откройте терминал / консоль и затем выполните команду hostname. Ваше имя хоста будет выведено на следующей строке.

См. Документацию VirtualBox для получения инструкций о том, как установить сетевые настройки на Bridged.

Ник Хаддад
источник
хм, почему-то графический интерфейс (на моей машине) не имеет этой опции!
hasen
Какую версию ты используешь? Я обнаружил, что на Mac некоторые базовые руководства полностью отличаются.
Бен
Люблю это решение. Обратите внимание, что на некоторых старых Windows вы не сможете использовать, whatever.localесли не установите Bonjour.
Марк-Андре Лафортун
42

Мне пришлось зайти в virtualbox и изменить настройки сети на «NAT». После этого я смог localhostзапустить на моей хост-машине из моего эмулятора в virtualbox черезhttp://10.0.2.2:3000

Pytth
источник
Недавно (2019) я скачал гостевую виртуальную машину Microsoft Windows 7 IE10 (мой хост - MacOS Sierra) и у меня было много проблем с настройкой сети. Поэтому я, наконец, просто удалил его и загрузил гостевую виртуальную машину Microsoft Windows 7 IE11. Затем я установил для сети «NAT» и мог http://10.0.2.2подключиться к локальному хосту хоста точно так, как описано здесь @Pytth.
Purplejacket
Это должен быть принятый ответ.
lots0logs
35

Если у вас есть адаптер, подключенный к NAT , в настоящее время это лучшее и более элегантное решение для переадресации портов на локальные порты.

Settings> Network> Adapter> Advanced>Port forwarding

Просто вставьте новое правило и установите Host portи Guest portдля 80(для http) или 22(для ssh) и так далее.

Затем вы можете получить доступ к этой машине, просто введя http://localhost

Вы также можете переключить NAT в прозрачный режим.

Борис Брдарич
источник
8
@ Борис То, что вы здесь описываете, это как добраться от хоста до гостевого сервера (порта). Но вопрос был об обратном.
Петр Боднар
Потому что, находясь на BT Home Hub, это был единственный вариант, который мне
подходит
33

Я обнаружил, что 10.0.2.2:<port>работает, но только если Правильный режим установлен правильно. После установки моей виртуальной машины я перешел в «Настройки»> «Сеть»> «Адаптер 1».

NAT установлен по умолчанию, а выпадающий список Promiscuous Mode отключен. Я переключился с NAT на Bridged Adapter, который включил выпадающий список Promiscuous Mode, а затем изменил значение с «Запретить» на «Разрешить виртуальные машины». Затем я переключился обратно на NAT, который снова отключил Promiscuous Mode, но сохранил новое значение.

Только после этого изменения я смог запустить свою ВМ и увидеть мои хост-машины localhost:<port>на моей ВМ 10.0.2.2:<port>.

bluehazetech
источник
1
Я использую Windows 7 в качестве хост-машины и Windows 10 в качестве гостя, наконец, это решение сработало для меня в VirtualBox 4.3.30 r 10.16.10. Спасибо!
Майкер
Я только что установил Window 10 на виртуальной коробке, и это помогло!
капитан
Это сработало и для меня в сочетании с дальнейшими инструкциями spsaucier. Следовал его инструкциям, затем я включил Promiscuous Mode - Включить все
DyeA
31

Невозможность перенаправить запросы на локальный хост в ВМ на локальный хост хоста теперь запекается в Windows ( https://tools.ietf.org/html/rfc6761#section-6.3 ), включая виртуальные машины, доступные по адресу https: //developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Из соображений безопасности Microsoft теперь запрещает записи файла хоста переопределять адрес localhost на что-либо кроме адреса обратной петли :: 1. Таким образом, добавив строку хост-файл виртуальной машины, такой как

10.0.2.2 localhost

будут игнорироваться

Есть два способа (о которых я знаю) переопределить это:

1) использовать NETSH для портирования прокси на хост

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress=10.0.2.2 connectport=8000

(где 10.0.2.2 - это шлюз по умолчанию на ВМ, а 8000 - это порт, который вы хотите разрешить на хосте.)

2) Настройте IIS для выполнения маршрутизации запросов приложений, а затем перезапишите запросы для localhost: port на hostIP: port

https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing

ActualAl
источник
7
Я использовал подход NETSH. работал как шарм. Это ИМО лучший ответ.
Лян Чжоу
1
Я тоже использовал NETSH, работал как по волшебству. Это и мой лучший ответ. Это был единственный, кто работал
Van_Paitin
netshэто помогло мне, я попробовал все, что нашел в сети, но безуспешно. Это позволит получить доступ <protocol>://localhost:<port>вместо прямого доступа по IP. Это должен быть принятый ответ для Windows 10.
Октавиан Лари
Это должен быть принятый ответ, так как он актуален и в настоящее время работает
IAmJulianAcosta
26

MacOS

Если вы хотите настроить среду Windows с Virtualbox на Mac, просто используйте настройки NAT по умолчанию на адаптере, а в вашей виртуальной машине Windows перейдите в файл hosts и добавьте следующее:

10.0.2.2       localhost
10.0.2.2       127.0.0.1

В отличие от ответов выше, важно включить обе строки, иначе это не сработает.

Artipixel
источник
6
Это прекрасно работает с образами modern.ie для отладки ie / edge на Mac, как я и пришел к этому вопросу. Есть одно исключение: Windows 10. Windows 10 запрещает модификацию домена localhost через файл hosts (безумие) Обходное решение - включить IIS и настроить через него обратный прокси-сервер, выполнив то же самое во многих других шагах: developer.microsoft. ru / en-us / microsoft-edge / платформа / проблемы /…
MaxPRafferty
@MaxPRafferty Удалось ли вам заставить это работать? Я прошел через все остальное в этой теме безрезультатно. Я обновил свой хост-файл, как следует из этого ответа, и следовал инструкциям, приведенным в этой ссылке. Было немного двусмысленно относительно того, где объявить 10.0.2.2 в шаге 7. Куда это идет в правиле? Теперь я постоянно обращаюсь к странице IIS на моем локальном хосте Windows VM
Дэвид Вебер,
@ DavidWeber да, я был - я действительно подал эту ошибку, так что у меня все еще есть это изображение. 10.0.2.2 необходимо перейти к «URL-адресу действия», указанному как «URL-адрес перезаписи» на экране редактирования: главная страница перезаписи: user-images.githubusercontent.com/1894398/… , user-images.githubusercontent.com/1894398/ … Отредактируйте
MaxPRafferty
@MaxPRafferty Спасибо за помощь и ссылки. Я до сих пор не могу заставить это работать. Такая простая вещь, и я не уверен, где проблема сейчас. Я следовал за этим до 't' и до сих пор ничего, даже при попытке каждого из других предложений типа сети. Похоже, я могу купить ПК на этом этапе.
Дэвид Вебер
3
Я не думаю, что это работает теперь, когда новые версии Windows распознают localhost с их DNS. Я не думаю, что 127.0.0.1 можно перенаправить так же (только имена хостов).
Космоболеат
22

Вам необходимо отредактировать файл hosts на виртуальной машине Windows так же, как вы делаете это на локальном хосте:

C: \ WINDOWS \ system32 \ Drivers \ Etc \ хостов

И свяжите ваши виртуальные хосты с 10.0.2.2, если вы просто используете localhost, тогда замените

127.0.0.1 localhost с 10.0.2.2 localhost

Например:

10.0.2.2 localhost
10.0.2.2 local.site1.com
10.0.2.2 local.site2.com

Это говорит вашей виртуальной машине указывать на вашу локальную машину эти доменные имена.

Уильям
источник
Спасибо, это помогло в моем случае (запуск локальных веб-сайтов в Docker с помощью nginx) - доступ к IP direclty (10.0.2.2) просто дает ошибку nginx.
ggzone
22

Вам не нужно менять файл hosts или любую конфигурацию Virtual Box. Сохраняйте настройки в NAT. Перейдите к своему экземпляру Windows и запустите «cmd» или откройте cmd.exe. Выполните команду «ipconfig» и получите IP-адрес шлюза по умолчанию . Просмотрите http://10.0.2.2:8080 в Windows IE, вы увидите, что он совпадает с вашим Mac Safari http: // localhost: 8080 / или http://127.0.0.1:8080

marlonjuc
источник
1
Когда локальный сервер разработки связан с зависимостями разработки localhost. (например, webpack-dev-server)
куб
что такое 10.2.2.3 or .4? Я могу пинговать .2так же как те - VM - Windows Server, работающий под Windows Server
ycomp
10

Сочетание нескольких вещей в конечном итоге заставило меня работать. Запуск флеш-сервера в macosx.

В моей Windows VM я отредактировал файл hosts:

  • Запустите блокнот как администратор
  • открытый C:\windows\system32\drivers\etc\hosts
  • добавить эту запись: 10.0.2.2 outer

Завершите работу виртуальной машины и на моем Mac в VirtualBox:

  • Перейти, чтобы VirtualBox > preferences > Network > Host-only Networks > +добавить сетьvboxnet1
  • Перейти к My_VM > settings > Network > Adapter 1.
  • Выберите Enable Network Adapterи установите Attached to:на Bridged Adapter.
  • Затем установите Advanced > Promiscuous Mode:на Allow VMs.
  • щелчок OK
  • Перейти к My_VM > settings > Network > Adapter 1.
  • Установить Attached to:обратно NAT.

Затем я пошел в Adapter 2

  • Набор Attached to:для Host-only Adapterи выбора предыдущей добавленной сети vboxnet1.

Я запустил мой сервер на своем Mac, 127.0.0.1:5000и теперь он доступен на моем виртуальном компьютере по адресуhttp://10.0.2.2:5000

Человек какой кошмар, чтобы проверить на IE на Mac. Как там не проще?

Craicerjack
источник
1
Я хотел бы, чтобы я мог проголосовать за это тысячу раз. Это было единственное, что сработало после поиска более простых методов, таких как простое редактирование файла hosts и использование настроек NAT по умолчанию - ни одна из этих публикаций не решила мою проблему. Я использую MacOS Sierra с виртуальной машиной IE11 на Win81 от developer.microsoft.com/en-us/microsoft-edge/tools/vms на случай, если комбо поможет здесь кому-то еще.
Ману Кантан
Кстати, я попытался откатить все эти настройки, а затем удалить VirtualBox и переустановить, повторно импортировав виртуальные машины из Microsoft. Я запустил свой сервер rails rails s -b 127.0.0.1и получил к нему доступ со всех виртуальных машин, http://10.0.2.2:3000и он работал. Интересно, не изменились ли настройки сверху каким-то образом, даже после того, как все это откатилось назад.
Ману Кантан
1
Это было не совсем то же самое для меня, особенно шаги для Адаптера 2, мне пришлось использовать настройку Nat Adapter, чтобы это было vboxnet1, но в итоге все заработало. Спасибо за подсказки!
jfunk
4

Я решил добавить переадресацию портов в настройках Virtualbox в сети. IP-адрес хоста 127.0.0.1 порт: 8080 Гость ip: укажите любой IP-адрес для веб-сайта (скажем, 10.0.2.5) порт: 8080 Теперь с гостевой машины доступ http://10.0.2.5:8080 с использованием IE

Praveen
источник
3

В виртуальной коробке, как сказано выше, вы можете добавить эту строку в файл hosts

10.0.2.2   outer

но чтобы сохранить его, если у вас нет администраторов прямо на вашей виртуальной машине, просто переместите файл hosts на рабочий стол, затем отредактируйте его, добавив строку 10.0 .... external, сохраните файл и переместите на исходное место.

Нико
источник
2

проверьте, можете ли вы поразить ваш родительский компьютер с помощью: ipconfig (получите ваш IP-адрес)

ping <ip> или telnet <ip> <port>

Если вы не можете добраться до порта, попробуйте добавить новое входящее правило в ваш родительский брандмауэр, разрешив локальные порты.

Я тогда смог получить доступ http://<ip>:<port>

Джон
источник
2

В виртуальной коробке

  1. Настройте свою сеть на мостовую сеть
  2. Перейти к расширенному набору Promiscuous Mode: Allow All

Теперь хитрый бит - ваш локальный хост. Если вы работаете с Node.js, установите IP-адрес 0.0.0.0, а затем найдите свой собственный IP-адрес, например, cmd: ipconfig -> 10.0.1.3.

Введите этот адрес с номером порта. И это будет работать.

Джоэл Чу
источник
1

Общие шаги:

  • Общая сеть (добавьте только хост или сетевой адаптер)
  • настроить предпочтительный сервис для прослушивания на соответствующем интерфейсе (интерфейс, подключенный к общей сетевой карте)
  • Использовать IP: порт для доступа к целевой службе, используйте IP-адрес, принадлежащий общей сети.
Анна
источник
0

В Windows с виртуальной Windows 7 единственное, что работало для меня, - это использование NAT и переадресация портов (не удалось запустить мостовое соединение). Я нашел учебное пособие здесь: http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/ (прокрутите вниз до часть с « Перенаправление портов на виртуальную машину »).

С этими изменениями я смог зайти на сайт xampp с « http: //192.168.xx.x: 8888 / mywebsite » в Internet Explorer 10 на моей виртуальной машине.

Я нашел IP в панели управления XAMPP> Netstat («Система»).

Хеннинг Фишер
источник
0

Если вы используете Virtual Box, вы можете подключить Mac OSX (и я думаю, что Linux) к вашей виртуальной машине Windows, используя одну строку кода -> Я предлагаю остановить окно перед запуском этого в терминале.

VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on

Я отмечу, что это из Dinghy docs, который я запускаю, но это команда виртуального ящика, так что на самом деле его не должно волновать, что вы используете, пока его Виртуальный ящик

Lux.Capacitor
источник
0

Мне нужно работать на локальном хосте, а не на каком-то странном IP.

1) С вашего терминала Mac, iconfig -aчтобы найти ваш локальный IP-адрес. Это, вероятно, последний.

en7: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV> ether 38:c9:86:32:0e:69 inet6 fe80::ea:393e:a54f:635%en7 prefixlen 64 secured scopeid 0xe inet 10.1.5.60 netmask 0xfffffe00 broadcast 10.1.5.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex,flow-control>) status: active

например, 10.1.5.60

2) загрузите ваш образ Windows. начать> тип, cmdчтобы получить терминал

3) notepad c:\windows\system32\drivers\etc\hosts

4) добавить следующую строку 10.1.5.60 localhost

5) откройте IE, и следующий URL должен попасть на сервер, работающий на вашем Mac: http://localhost:3000/

Джейсон Мур
источник
На самом деле, это, кажется, нарушает локальный URL из браузера Mac.
Джейсон Мур
-2

Получите IP-адрес компьютера, на котором работает Apache (inet addr: in ifconfig), и введите его в адресную строку браузера виртуального ящика.

H.Rabiee
источник
-3

Собственно, ответ user477494 в принципе правильный.

Я применил ту же логику в других средах (хост OS X - виртуальная Windows XP), и это делает свое дело. Мне приходилось переключать стек LAMP хоста, чтобы получить разрешение IP-адреса и порта Apache, но как только я понял это, я засмеялся.

orionrush
источник
Можете ли вы дать какие-либо советы о том, как настроить / узнать IP-адреса на машине OSX?
cukabeka
? не уверен, какой адрес ваш после - адрес компьютера можно найти через системные настройки / сеть -> IP-адрес. Это в основном адрес, на который Macine будет отвечать внешне. Внутренне localhost: 80 должен делать для сервера Apache OSX - в то время как MAMP будет использовать localhost: 8888 по умолчанию.
Орионруш
Неясно, к какому ответу это относится (ссылка была бы мудрой), и это больше похоже на комментарий.
Ишервуд