Обращение к локальному хостингу с виртуальной машины VirtualBox
-
12-09-2019 - |
Вопрос
У меня есть локальный сервер тестирования / разработки (HTTP, конечно), прослушивающий порт 8000.
Я работаю на Linux, поэтому протестирую страницу в Internet Explorer 6, 7, 8 и т.д.Я запускаю виртуальную машину с помощью VirtualBox;Мне также нужно посмотреть, как это выглядит в Firefox в среде Windows (шрифты, например, разные).
На моем реальном компьютере я открываю веб-сайт, просто используя URL http://localhost:8000
, как мне обратиться к этому локальному хостингу с виртуальной машины?
Прямо сейчас мой обходной путь заключается в использовании IP-адреса.Есть идеи получше?
Решение
Гугление выдало вот это: http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu
Предлагается использовать IP: http://10.0.2.2
, и это сработало для меня.
Итак, я отредактировал файл хостов, C:\windows\system32\drivers\etc\hosts
, и добавил эту запись:
10.0.2.2 outer
Если вы тестируете IE8, не забудьте поставить http://
в адресной строке.Просто указать ip напрямую не получится.
Например:
http://10.0.2.2:3000/
Другие советы
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, в моем случае мост, как предложено выше, не нужен.Нет необходимости редактировать какие-либо файлы конфигурации.
Чтобы включить это в OSX, мне пришлось сделать следующее:
- Выключите виртуальную машину.
- Идти к
VirtualBox Preferences -> Network -> Host-only Networks ->
нажмите значок «+».Нажмите ОК. - Выберите свой ящик и нажмите кнопку
"Settings" icon -> Network -> Adapter 2 ->
В раскрывающемся списке «Подключено к:» выберите «Адаптер только для хоста» и свою сеть (vboxnet0
) должен отображаться ниже по умолчанию.Нажмите ОК. - Как только вы снова запустите свой компьютер, вы сможете получить доступ к локальному хосту по адресу
http://10.0.2.2/
Вы можете обратиться к нему по localhost
и получить доступ к другим локальным сайтам, добавив их ссылки в файл хостов (C:\windows\system32\drivers\etc\hosts
), как следующее:
10.0.2.2 localhost
10.0.2.2 subdomain.localhost
Скорее всего, для сети вашей виртуальной машины установлено значение NAT.Если вы установите для своей сети режим «Мост», вы сможете получить доступ к своему хост-компьютеру по его имени хоста.Например, если ваше имя хоста «jsmith-Precision-7510» и вы хотите открыть http://локальный хост:3000/, вы сможете просмотреть эту страницу по адресу http://jsmith-Precision-7510:3000/.
Чтобы найти имя хоста, откройте терминал/консоль и затем запустите команду hostname
.Ваше имя хоста будет выведено в следующей строке.
См. Документация VirtualBox инструкции о том, как установить для сетевых настроек режим «Мост».
Мне пришлось зайти в виртуальный бокс и изменить настройки сети на «NAT».После этого я смог ударить localhost
работает на моем хост-компьютере с моего эмулятора на виртуальном боксе через http://10.0.2.2:3000
я нашел это 10.0.2.2:<port>
работает, но только если неразборчивый режим установлен правильно.После установки виртуальной машины я зашел в «Настройки» > «Сеть» > «Адаптер 1».
NAT установлен по умолчанию, а раскрывающийся список «Смешанный режим» отключен.Я переключился с NAT на мостовой адаптер, который включил раскрывающийся список «Неразборчивый режим», а затем изменил значение с «Запретить» на «Разрешить виртуальные машины».Затем я снова переключился на NAT, который снова отключил беспорядочный режим, но сохранил новое значение.
Только после этого изменения я смог запустить свою виртуальную машину и увидеть свои хост-машины.localhost:<port>
на моей виртуальной машине в 10.0.2.2:<port>
.
Если у вас есть адаптер, подключенный к НАТ, в настоящее время это лучшее и более элегантное решение - настроить переадресацию портов на локальные порты.
Settings
> Network
> Adapter
> Advanced
> Port forwarding
Просто вставьте новое правило и установите Host port
и Guest port
к 80
(для http) или 22
(для ssh) и так далее.
Затем вы можете получить доступ к этой машине, введя просто http://localhost
macOS
Если вы хотите настроить среду Windows с помощью Virtualbox на Mac, просто используйте настройки NAT по умолчанию на адаптере, а в вашей виртуальной машине Windows перейдите в файл hosts и добавьте следующее:
10.0.2.2 localhost
10.0.2.2 127.0.0.1
В отличие от приведенных выше ответов, важно включить обе строки, иначе это не сработает.
Вам необходимо отредактировать файл хостов на виртуальной машине Windows так же, как и на локальном хост-компьютере:
C:\WINDOWS\system32\drivers\etc\hosts
И свяжите свои виртуальные хосты с 10.0.2.2. Если вы просто используете localhost, замените
127.0.0.1 локальный хост с 10.0.2.2 локальным хостом
Например:
10.0.2.2 localhost
10.0.2.2 local.site1.com
10.0.2.2 local.site2.com
Это означает, что ваша виртуальная машина должна указывать на ваш локальный компьютер для этих доменных имен.
Вам не нужно менять файл хостов или любую конфигурацию Virtual Box.Сохраняйте настройки в NAT.Перейдите в свой экземпляр Windows и запустите «cmd» или откройте cmd.exe.Выполните команду «ipconfig» и получите Шлюз по умолчанию Айпи адрес.Просматривать http://10.0.2.2:8080 в Windows IE вы увидите то же самое, что и в Mac Safari. http://локальный хост:8080/ или http://127.0.0.1:8080
Комбинация нескольких вещей в конечном итоге привела к тому, что с моей стороны все заработало.Запуск флэш-сервера на Macosx.
В моей виртуальной машине Windows я отредактировал файл хостов:
- Запустите блокнот от имени администратора
- открыть
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.Как нет более простого пути?
Я решил проблему, добавив переадресацию портов в настройках Virtualbox в разделе сеть.Набор IP-адресов хоста 127.0.0.1 порт :8080 IP-адрес гостя :Укажите любой IP-адрес для порта веб-сайта (скажем, 10.0.2.5) :8080 Теперь доступ с гостевого компьютера http://10.0.2.5:8080 использование IE
В виртуальном ящике, как сказано выше, вы можете добавить файл хостов этой строки.
10.0.2.2 outer
но чтобы сохранить его, если у вас нет администраторов прямо на вашей виртуальной машине, просто переместите файл хостов на рабочий стол, затем отредактируйте его, добавив строку 10.0....outer, сохраните файл и переместите его в исходное место.
проверьте, можете ли вы поразить родительский компьютер с помощью:ipconfig
(получить ваш IP-адрес)
ping <ip>
или telnet <ip> <port>
Если вы не можете получить доступ к порту, попробуйте добавить новое правило для входящего трафика в родительском брандмауэре, разрешающее локальные порты.
Тогда я смог получить доступ http://<ip>:<port>
В виртуальной коробке
- Установите для своей сети сетевой мост
- Перейдите в расширенные настройки беспорядочного режима:Позволять все
Теперь самое сложное — это ваш локальный хост. Если вы работаете с Node.js, установите IP-адрес 0.0.0.0, а затем найдите свой собственный IP-адрес, например cmd:ipconfig --> 10.0.1.3.
Введите этот адрес вместе с номером порта.И это сработает.
Общие шаги:
- Общая сеть (добавьте сетевой адаптер только для хоста или мостовой адаптер)
- настроить предпочтительный сервис для прослушивания соответствующего интерфейса (интерфейс, подключенный к общему сетевому адаптеру)
- Используйте IP:Port для доступа к целевой службе, используйте IP-адрес, принадлежащий общей сети.
В 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/мойсайт" в Internet Explorer 10 на моей виртуальной машине.
Я нашел IP-адрес в Панели управления XAMPP > Netstat («Система»).
Если вы используете Virtual Box, вы можете подключить Mac OSX (и, я думаю, Linux) к вашей виртуальной машине с Windows, используя одну строку кода --> Я предлагаю остановить коробку, прежде чем запускать ее в терминале.
VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on
Отмечу, что это из документации Dinghy, которую я использую, но это команда виртуального ящика, поэтому ее не должно волновать, что вы используете, пока это Virtual Box.
Мне нужно работать на локальном хосте, а не на каком-то странном 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/
Получите IP-адрес машины, на которой работает Apache (inet addr:в ifconfig
) и введите его в адресную строку браузера виртуального ящика.
На самом деле ответ пользователя 477494 в принципе правильный.
Я применил ту же логику в других средах (хост OS X — виртуальная Windows XP), и это помогло.Мне пришлось переключить хост ЛАМПА стек, чтобы разрешить IP-адрес и порт Apache, но как только я это понял, я засмеялся.