Подключиться к хост-машине из гостевой ОС VirtualBox?


214

Я бы хотел получить доступ к своему хост-компьютеру с гостя в VirtualBox. Есть ли IP-адрес для моего хоста, который я могу использовать от гостя? Есть ли дополнительные шаги, необходимые для настройки? Я хотел бы получить доступ к службам Apache, FTP и SSH моего хоста.


1
Трудно решить без какого-либо намека, какая конфигурация сети у вашего гостя. Некоторые не разрешают доступ к хосту. Попробуйте адрес шлюза по умолчанию гостя.
Турбо J

7
Оказывается, я могу связаться с ним через шлюз по умолчанию в 10.0.2.2.
Нафтули Кей

Ответы:


258

Этот ответ о настройке гостевой ОС в VirtualBox; вам просто нужно использовать адрес сетевого шлюза в гостевой ОС для подключения к хост-ОС из гостевой ОС.

В настройке Vagrant по умолчанию вы должны быть в состоянии достичь вашего хоста через шлюз по умолчанию.

В гостях на базе Windows вы можете легко определить этот IP-адрес, выполнив команду:

ipconfig

Это должно вывести что-то вроде этого:

Windows IP Configuration

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 10.0.2.15
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.0.2.2

В этом примере гость может связаться с хостом 10.0.2.2.


В гостях на основе Unix / Linux используйте команду:

netstat -rn

Это должно вывести что-то вроде этого:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

В этом примере гость может связаться с хостом 192.168.1.1.


Любая идея, почему подключение было бы ужасно медленным при подключении с использованием шлюза по умолчанию в соответствии с вашим ответом?
Бен Суинберн

Это не работает для меня (Ubuntu 12.04, Vagrant 1.0). Шлюз по умолчанию в гостевой системе показывался как 10.0.2.2, и nmap этого IP не удался. 192.168.33.1 кажется правильным IP. (У меня был config.vm.network :hostonly, "192.168.33.52"в моем конфиге.)
Ajedi32

На самом деле, неважно. Это сработало. Nmap просто не работает по какой-то причине; не уверен почему. Я все еще мог подключаться к сервисам, запущенным на хосте с этого IP, хотя nmap их не отображал.
Ajedi32

1
netstat -rnв CentOS 7.2 Docker 1.11 отображал 172.17адрес в качестве моего шлюза, но этот IP не соответствовал моему хосту. Оказывается, что 10.0.2.2сделал.
Спенсер Уильямс

1
Как мы узнаем, какая из этих записей является шлюзом?
Крамер

36

Доступ к веб-серверу хост-компьютера от гостя очень прост. Это можно легко сделать двумя способами. Сначала сделайте следующее

  • Зайдите в Устройства и выберите Сетевые адаптеры ...
  • В настройках адаптера установите флажок « Присоединен к» .
  • Если значение равно NAT , выполните следующие действия.

  • Шлюз по умолчанию при настройке Virtual box обычно используется в 10.0.2.2качестве значения по умолчанию. Если вы ничего не изменили, это сработает. Но если вы изменили его, а гостевая машина, на которой вы работаете, - это Windows, запустите следующую команду и найдите шлюз по умолчанию.

    ipconfig /all

    Если вы используете Linux, Unix или Mac OS, выполните следующую команду, чтобы получить его

    netstat -rn | grep 'default' | awk '{print $2}'

  • Перейдите в веб-браузер, введите шлюз по умолчанию и нажмите клавишу ввода. Доступ к веб-серверу

  • Если используется значение Bridged Adapter , выполните следующие действия.
    • найти IP-адрес хоста и гостя
      • если вы на windows, запустите ipconfigи получите IP-адрес
      • если вы работаете в Linux, Unix или Mac OS, запустите ifconfig | grep 'inet' и получите IP-адрес
      • IP-адрес похож на 192.168.1.1
    • если вы хотите получить доступ к хосту, запустите браузер в гостевой и введите IP-адрес хоста
    • если вы хотите получить доступ к гостю, запустите браузер на хосте и введите IP-адрес гостя

9

Другой способ сделать это - использовать виртуальную сеть типа «Хост». Это дает вам интерфейс в гостевой ОС с адресом в локальной подсети, отличным от подсети "внешнего мира", в которой находится ваш хост-компьютер. Чтобы сделать это, вы должны убедиться в нескольких вещах:

  • В вашей виртуальной машине настроен адаптер «только для хоста»;
  • Службы вашего хоста должны прослушивать все локальные адаптеры или, по крайней мере, те, с которыми вы хотите связаться;
  • Ваш хост получит свой собственный виртуальный адаптер, и вы захотите выяснить его IP-адрес и добавить его в файл hosts в вашей гостевой ОС (однако это работает для гостевой ОС; в Windows XP это просто " файл hosts "похоронен в C: / WINDOWS / system32 / drivers / etc). Дайте ему имя, которое вы хотите использовать в качестве имени хоста хоста.

Как только вы это сделаете, вы сможете «увидеть» хост с ВМ через имя, которое вы закодировали в файле хоста.

Например, на моем хосте Ubuntu 11.04 я получаю виртуальный интерфейс "vboxnet0" на 192.168.56.1. Адаптеры в машинах предлагают что-то вроде 192.168.56.101. Мне не нужно идти в моей виртуальной машины, но я полагаю , что это было бы возможно с помощью симметричного изменения в хост - файл хоста. я добавить

192.168.56.1 mymachine

к файлам хоста гостевой ОС, и они могут (например) видеть веб-сервер моего хоста по адресу

http://mymachine/whatever

Конечно, вы можете настроить как мостовые, так и хост-адаптеры.


0

Вы можете создавать общие папки в VirtualBox. Это автоматически создаст «общий сетевой ресурс» в Virtual Box для доступа к папкам в вашей ОС хоста.

Вот достойный шаг за шагом в гостевой ОС Windows XP:

http://www.giannistsakiris.com/index.php/2007/09/28/virtualbox-access-shared-folders-from-windows-xp-guest-os/


Так я могу получить доступ к своему хосту в / vboxsvr / ShareName?
Нафтули Кей

Да, вы бы выбрали папку типа C: \ STUFF для совместного использования с VirtualBox. В гостевой ОС VirtualBox вы можете перейти на этот vboxserver и получить доступ к общим папкам.
Кобальц

Я на самом деле не хочу общую папку. Я хочу IP-адрес для моей машины. Когда я получу его, я хотел бы использовать его для использования сервисов на моей хост-машине, а именно: echo "GET /\r\n\r\n" | nc 192.168.100.100 80(отправить HTTP-запрос GET на мою хост-машину от гостя.)
Нафтули Кей

1
В этом случае вам может потребоваться настроить сетевой адаптер гостевой ОС на Bridge. Это позволит получить IP-адрес от вашего DHCP или маршрутизатора. После этого вы сможете напрямую получить доступ к вашему хост-компьютеру через IP-адрес вместо общей папки VBox.
Кобальц

0

Вот еще одно решение этой проблемы - использование дополнительного сетевого интерфейса и настройка трафика, предназначенного для хоста, для маршрутизации через дополнительный интерфейс.


4
Добро пожаловать в Супер пользователя! Было бы неплохо включить основные части ответа здесь и предоставить ссылку только для дальнейшего использования.
slhck
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.