Гостевая ОС VirtualBox обращается к локальному серверу на хост-ОС


107

На моем хосте Ubuntu у меня есть локальный веб-сервер. Я установил VirtualBox и Debian в качестве гостя.

Я бы хотел, чтобы гость Debian мог подключиться к моему веб-серверу, работающему на моем хосте Ubuntu (например, я просто набираю http://localhost:8080/браузер в Debian).

Как это может быть сделано?

Ответы:


177

Включить ОДИН сетевой адаптер. Установите его в NAT и запустите свою машину. Не нужно ничего настраивать.

В браузере гостевой машины введите http://10.0.2.2, который покажет вам тот же контент, что и "localhost" в операционной системе хоста.

10.0.2.2 - это «шлюз по умолчанию» для соединений NAT, а IP-адрес вашей гостевой ОС - 10.0.2.15.

Конечно, вы можете установить «HOST-ONLY» или «Internal Network», что позволит вам использовать другие расширенные конфигурации. Я рекомендую остаться с NAT.

наслаждаться

М.


1
Msgstr "Включить ОДИН сетевой адаптер". Где это сделано?
января

1
Примечание. Если на вашем хост-компьютере настроены виртуальные хосты на основе имен, настроенные в apache, вы можете получить к ним доступ, просто создав сопоставление в файле хостов гостевых машин для:10.0.2.2 yourvirtualhostname.local (or whatever)
пользователь

@ Пользователь уверен, что твой последний комментарий сработает? У меня есть виртуальный хост на моем хосте VB http://example.dev, и сопоставление 10.0.2.2с чем-либо на моем госте VB вообще не помогает получить к нему доступ.
Томица Кораћ

1
@ ТомицаКораћ это работает. Например, см .: askubuntu.com/questions/36183/… однако вам, вероятно, следует открыть отдельный вопрос, чтобы решить эту проблему.
Пользователь

1
«Включить ОДИН сетевой адаптер» означает, что в настройках сети вашей виртуальной машины (в VirtualBox) включить только один из адаптеров. Меня немного смутило, когда я впервые прочитал это.
Маркес

5

Также следует обратить внимание на то, что при использовании IP-адреса 10.0.2.2, например, если вы используете MAMP, добавьте номер порта: 8888, чтобы полный адрес считывался http://10.0.2.2:8888


3

Самый простой способ разрешить бесперебойный доступ к вашему гостевому компьютеру VirtualBox - это настроить сетевое устройство как «мост» для вашего eth0 на вашей локальной сети.

Гостевая машина получит IP-адрес локальной сети через DHCP с вашего маршрутизатора.


Чтобы уточнить: это настройка в клиентском приложении. Это сработало для меня - мне потребовалось некоторое время, чтобы понять это, потому что IE был слишком глуп, чтобы предположить, что мне нужно HTTP-соединение, когда я набираю IP-адрес и порт в адресной строке.
Майкл Шепер

2

То, что я нашел, исправило проблему для меня, убедившись, что для адаптера Windows VirtualHost-Only был задан адрес .1 для диапазона ip, поэтому мой адаптер только для хоста виртуальной коробки был 192.168.58.20, а ip для адаптера Windows - 192.168. 58,1


2

Если решение @Melvyn не работает, в качестве альтернативы вы можете установить сетевой адаптер для мостового соединения.
Перейдите к Settings-> Network->, затем перейдите Attached toк мостовому адаптеру.

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

Вы должны быть в состоянии вызвать parent по его имени хоста или по внешнему IP-адресу, который вы можете получить, перейдя в командную строку и набрав ipconfig /all введите описание изображения здесь

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

Обновление Если вы отлаживаете с помощью Visual Studio и используете IIS Express.

перейти к C:\Users\[uesername]\Documents\IISExpress\config\applicationhost.config

найти свой сайт в <configuration>/<system.applicationHost>/<sites>/<site> (имя может быть обманчиво, попробуйте проверить местоположение на диске в physicalPathатрибуте)

затем добавьте в <bindings>раздел новую привязку

<bindings>
    <binding protocol="http" bindingInformation="*:50766:localhost" />
    <binding protocol="http" bindingInformation="*:50766:48qzr12" />
</bindings>

где обязательная информация *:[port]:[machineName]

Надеюсь, это сэкономит вам время.


-1

Ну, вы можете заставить Debian работать на вашем веб-сервере, но не используя localhost. Вам придется использовать IP-адрес хоста Ubuntu.

Предполагая, что гостевая ОС подключена к сети, чтобы захватить IP, откройте терминал и введите ifconfig. Должно выглядеть примерно так 192.168.0.2.


Здравствуй! Извините за слишком поздний ответ. ifconfig на моем хосте показывает 192.168.0.102 для eth0. Когда я ввожу этот ip в firefox в гостевой системе, он некоторое время пытается подключиться, а затем соединение прерывается: «Сервер на 192.168.0.102 слишком долго отвечает» ... Так что же мне делать дальше? Заранее спасибо.
Максим
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.