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


214

По суті, я хотів би отримати доступ до свого хост-комп'ютера від гостя в VirtualBox. Чи вказана IP-адреса для мого хоста, яку я можу використовувати від гостя? Чи потрібні додаткові кроки для налаштування? Я хотів би отримати доступ до послуг Apache, FTP та SSH мого хоста.


1
Складно вирішити без будь-якої підказки, яку конфігурацію мережі насправді має ваш гість. Деякі не дозволяють отримати доступ до хоста. Спробуйте адресу гостя за замовчуванням.
Turbo J

7
Виявляється, я можу досягти цього через мій шлюз за замовчуванням у 10.0.2.2.
Naftuli Kay

Відповіді:


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 , виконайте наступне

  • Шлюз за замовчуванням під час установки віртуального вікна, як правило, 10.0.2.2є значенням за замовчуванням. Якщо ви нічого не змінили, це спрацює. Але якщо ви змінили його і гостьова машина, яку ви працюєте, це Windows запустити наступну команду і знайти шлюз за замовчуванням

    ipconfig /all

    Якщо ви працюєте в Linux, Unix або Mac OS, виконайте наступну команду, щоб отримати її

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

  • Перейдіть до веб-браузера і введіть цей шлюз за замовчуванням і натисніть клавішу Enter. Доступ до веб-сервера.

  • Якщо значенням є Bridged Adapter , виконайте наступне
    • знайти ip адресу хоста та гостя
      • якщо ви знаходитесь у Windows, запустіть ipconfigі отримайте ip-адресу
      • якщо ви працюєте в Linux, Unix або Mac OS, запустіть ifconfig | grep 'inet' і отримайте ip-адресу
      • IP-адреса така, як 192.168.1.1
    • якщо ви хочете отримати доступ до хоста, запустіть браузер у гості та введіть ip адресу хоста
    • якщо ви хочете отримати доступ до гостя, запустіть браузер у хості та введіть ip адресу гостя

9

Ще один спосіб зробити це - використовувати віртуальну мережу типу «Хост». Це дає вам інтерфейс в гостьовій ОС з адресою в локальній підмережі, відмінній від підмережі "Зовнішній світ", на якій працює ваша хост-машина. Щоб зробити цю роботу, ви повинні переконатися в кількох речах:

  • У вашому VM налаштований адаптер "тільки для хоста";
  • Ваші послуги хостингу повинні слухати всі локальні адаптери або хоча б ті, з якими ви хочете мати можливість зв’язатися;
  • Ваш хост отримає власний віртуальний адаптер, і ви захочете розібратися в його IP-адресі та додати його до файлу "хостів" у вашій гостьовій ОС (однак, що працює для гостьової ОС; для Windows XP це просто " файл хостів ", похований у C: / WINDOWS / system32 / Drivers / тощо). Дайте ім’я, яке ви хочете використовувати для імені хоста хоста.

Після цього ви повинні мати можливість "бачити" хост з віртуального комп'ютера через ім'я, яке кодується у файлі хоста.

Наприклад, на моєму хості 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 Guest OS ви можете перейти до цього vboxserver та отримати доступ до спільних папок.
кобальц

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

1
У такому випадку може знадобитися встановити мережевий адаптер для гостьової ОС на містку. Це дозволить отримати IP-адресу з вашого DHCP або маршрутизатора. Тоді ви зможете мати власний доступ до свого хост-машини через IP-адресу замість спільної папки VBox.
кобальц

0

Ось ще одне рішення цієї проблеми, використовуючи додатковий мережевий інтерфейс та встановивши трафік, призначений хосту для маршрутизації через додатковий інтерфейс.


4
Ласкаво просимо до Супер Користувача! Було б непогано включити сюди суттєві частини відповіді та надати посилання лише для подальшого ознайомлення.
slhck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.