Гостевая ОС 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.

Jivings
источник
Здравствуй! Извините за слишком поздний ответ. ifconfig на моем хосте показывает 192.168.0.102 для eth0. Когда я ввожу этот ip в firefox в гостевой системе, он некоторое время пытается подключиться, а затем соединение прерывается: «Сервер на 192.168.0.102 слишком долго отвечает» ... Так что же мне делать дальше? Заранее спасибо.
Максим