Підключитися до хост-машини з гостьової ОС 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.