Звернення до localhost з віртуальної машини VirtualBox


785

У мене локальний сервер тестування / розробки (HTTP, звичайно), слухаю порт 8000.

Я працюю над Linux, тому для тестування сторінки в Internet Explorer 6, 7, 8 і т.д. я запускаю віртуальну машину за допомогою VirtualBox; Мені також потрібно побачити, як це виглядає на Firefox у середовищі Windows (наприклад, шрифти різні).

У своїй справжній машині я відкриваю веб-сайт просто за допомогою URL-адреси http://localhost:8000, як я звертаюся до цього локального господаря з віртуальної машини?

Зараз моєму вирішенню є використання IP-адреси. Якісь кращі ідеї?


38
Я не можу повірити, що це все ще так нудно. Я використовую VB роками, і хоча у нього волосся стає легше, воно все ще є головним затрудненням, а варіанти мереж досі важко зрозуміти, і це все ще не працює з-за того, що хоче переважна більшість користувачів використовувати його для. Можливо, сотні тисяч використовують VB для тестування сайтів (або додатків) на різних платформах у localhost. Дуже неприємно думати, скільки часу та роздратування можна позбавити, покращуючи цей конкретний аспект програмного забезпечення.
— Рольф

Дивіться також те саме питання на superuser.com: superuser.com/questions/310697/…
— Purplejacket

Відповіді:


939

Гуглінг підняв це: http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu

Він пропонує використовувати IP:, http://10.0.2.2і він працював на мене.

Отже, я відредагував файл хостів C:\windows\system32\drivers\etc\hostsі додав цей запис:

10.0.2.2   outer

Якщо ви тестуєте IE8, не забудьте ввести http://адресний рядок. Просто поставити ip безпосередньо не вийде.

Наприклад:

http://10.0.2.2:3000/

7
Я помітив в ipconfig (Windows у VirtualBox), що маршрутизатор за замовчуванням для мого VirtualBox - це IP-адреса ... так що це має сенс для мене.
— benc

48
Щоб мати змогу зберегти свої зміни у файлі хостів, запустіть «Блокнот», клацнувши правою кнопкою миші та вибравши «Запустити як адміністратор»
— Ной Суссман

25
Мені довелося переключити Attached toналаштування мережі VirtualBox з, Bridged Adapterщоб NATце працювало для мене.
— Трой Харві

1
ви також можете встановити його як 10.0.2.2 localhost у конфігурації VM, щоб забезпечити правильне вирішення абсолютних шляхів
— Маріо Пешев

5
Мені потрібно звертатися localhostне 10.0.2.2через якийсь лайливий автор, який хоче localhost як адресу :(
— Домінік

408

macOS

Я запускаю Virtual Box на macOS (раніше OS X), використовуючи Virtual Box для тестування IE в Windows тощо.

Перейдіть до IE у віртуальній коробці та перейдіть localhostчерез, http://10.0.2.2для localhostабо http://10.0.2.2:3000для localhost:3000.

Я зберігав налаштування мережі як NAT, у моєму випадку не потрібно мосту, як було запропоновано вище. Не потрібно редагувати будь-які конфігураційні файли.


39
Я фактично повинен був додати "http: //" перед IP-адресою, щоб вона працювала (IE8 / WinXP).
— wrtsprt

8
Але чи є спосіб відобразити 10.0.2.2 до localhost: 8888? Я маю localhost: 8888 як домашній URL у своїй базі даних. Перехід до 10.0.2.2 в VB завантажує HTML-сторінку, але всі посилання розриваються, оскільки вони вказують на localhost: 8888
— Michael Giovanni Pumo,

@MichaelGiovanniPumo, наскільки мені відомо, ви не можете перенести URL безпосередньо в певний порт. ви повинні вказати порт прямо
— Джонатан Лін,

2
@JonathanLin Я вирішив це, просто встановивши 10.0.2.2 на localhost на файлі хостів Win7, який працював з портом: 8888 у будь-якому разі, тому він зараз працює. Дякую.
— Майкл Джованні Пумо

Marvelous працює, версія macOS Sierra 10.12.5 та virtualbox v 5.1.22
— Tabares

82

Щоб увімкнути це в OSX, я повинен був зробити наступне:

  1. Вимкніть віртуальну машину.
  2. Перейдіть, щоб VirtualBox Preferences -> Network -> Host-only Networks ->натиснути значок "+". Натисніть кнопку ОК.
  3. Виберіть поле та натисніть "Settings" icon -> Network -> Adapter 2 ->спадне меню "Приєднано до:", виберіть "Адаптер тільки для хоста", і ваша мережа ( vboxnet0) повинна відображатися нижче за замовчуванням. Натисніть кнопку ОК.
  4. Після того, як ви знову запустите свою скриньку, ви зможете отримати доступ до localhost за адресою http://10.0.2.2/

Ви можете посилатися на нього localhostта отримувати доступ до інших сайтів, розміщених на локальному рівні, додаючи їх посилання на файл хостів ( C:\windows\system32\drivers\etc\hosts), як:

10.0.2.2    localhost
10.0.2.2    subdomain.localhost

4
Це рішення працювало для мене з невеликою модифікацією: Після створення нового адаптера, призначеного лише для господарів (vboxnet0), відредагуйте адаптер. У спливаючому вікні перейдіть на вкладку Адаптер і скопіюйте IPv4 Address(наприклад 192.168.56.1). Потім, коли ви запускаєте VM, відкрийте браузер і перейдіть доhttp://192.168.56.1:3000
— Роберт

Працює як на xp, так і на windows 7
— Sukeerthi Adiga

1
На жаль, я не в змозі вирішити свої субдомени, я пройшов кроки щодо прийнятої відповіді тут, щоб перевірити, чи файл хостів працює на Win10, як очікувалося: serverfault.com/questions/452268/… Будь-які ідеї?
— danjah

Працював на хост-машині MacOs High Serra та гостьовій Windows 7
— Капітула Олексій

6
Мені не вдалося знайти варіант "Тільки для мереж".
— Джейсон Мур

56

Ви, швидше за все, для вашої віртуальної машини встановили NAT. Якщо ви встановите свою мережу на Bridged, ви маєте можливість отримати доступ до своєї хост-машини за її іменем хоста. Наприклад, якщо ваше ім'я хоста - "jsmith-Precision-7510", і ви хочете відкрити http: // localhost: 3000 / , ви зможете переглянути цю сторінку за адресою http: // jsmith-Precision-7510: 3000 / .

Щоб знайти ім'я хоста, відкрийте термінал / консоль і запустіть команду hostname. Ім'я хоста буде виведено у наступному рядку.

Дивіться документацію до VirtualBox, щоб отримати інструкції щодо встановлення мережевих установок на Bridged.


хм, чомусь у gui (на моїй машині) немає цього варіанту!
— hasen

яку версію ви використовуєте? Я виявив, що на Mac деякі базові інструкції з документами зовсім інші.
— benc

Любіть це рішення. Зауважте, що в деяких старих Windows ви не зможете користуватися, whatever.localякщо не встановите Bonjour.
— Марк-Андре Лафортун

41

Мені довелося зайти у virtualbox та змінити свої мережеві настройки на "NAT". Після цього мені вдалося перейти localhostна мій хост-апарат із мого емулятора на virtualbox черезhttp://10.0.2.2:3000


Нещодавно (2019) я завантажив VM-гостьовий VM для Windows 7 IE10 (мій хост - MacOS Sierra) і у мене виникло багато проблем з налаштуванням мереж. Тож я нарешті просто пошкодив її та завантажив гостьову машину Microsoft Windows 7 IE11 Тоді я встановив це на "NAT" мережу і міг би потрапити в локальний хост хоста http://10.0.2.2точно так, як описано тут @Pytth.
— Purplejacket

Це має бути прийнятою відповіддю.
— lot0logs

35

Якщо у вас підключений адаптер до NAT , на сьогоднішній день краще і елегантніше рішення встановити переадресацію портів на локальні порти.

Settings> Network> Adapter> Advanced>Port forwarding

Просто вставте нове правило і встановіть Host portі Guest portна 80(для http) або 22(для ssh) тощо.

Тоді ви можете отримати доступ до цієї машини, ввівши просто http://localhost

Ви також можете переключити NAT у прозорий режим.


8
@Boris Те, що ви тут описуєте, - це як дістатися від хоста до гостьового сервера (порту). Але питання стосувалося навпаки.
— Петр Боднар

Тому що, перебуваючи на BT Home Hub, це був єдиний варіант, який працював для мене
— Хашим Ахтар,

33

Я виявив, що це 10.0.2.2:<port>працює, але лише в тому випадку, якщо режим проміску встановлений правильно. Встановивши свій VM, я перейшов у Налаштування> Мережа> Адаптер 1.

NAT встановлений за замовчуванням, а випадаючий режим Promiscuous Mode відключений. Я перейшов з NAT на Bridged Adapter, що дозволило спадати режим Promiscuous Mode, а потім змінив значення з "Заборонити" на "Дозволити VM". Потім я повернувся до NAT, який знову відключив Promiscuous Mode, але зберіг нове значення.

Після цієї зміни я зміг запустити свій VM і побачити свої хост-машини localhost:<port>на моєму комп'ютері 10.0.2.2:<port>.


1
Я запускаю Windows 7 як свою хост-машину та Windows 10 як гість, нарешті це рішення працювало для мене у VirtualBox 4.3.30 r 10.16.10. Дякую!
— Місер

Я щойно встановив Вікно 10 на віртуальний ящик, і це зробило трюк!
— Капітан

Це працювало і для мене в поєднанні з подальшими інструкціями spsaucier. Виконуючи його вказівки, я ввімкнув Promiscuous Mode - Enable All
— DyeA

31

Неможливо перенаправити запити на localhost у віртуальній машині до localhost хоста тепер виводиться у Windows ( https://tools.ietf.org/html/rfc6761#section-6.3 ), включаючи доступний для https: //developer.microsoft.com/en-us/microsoft-edge/tools/vms/

З міркувань безпеки Microsoft тепер забороняє записи файлів хосту для переопределення адреси localhost на що-небудь інше, ніж адреса циклу :: 1. Тож додаючи рядок файл хосту VM, такий як

10.0.2.2 localhost

буде проігноровано

Я знаю два способи (як я знаю):

1) використовувати NETSH для портпроксі для хоста

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress=10.0.2.2 connectport=8000

(де 10.0.2.2 - шлюз за замовчуванням на VM, а 8000 - порт, який ви хочете вирішити на хості.)

2) Налаштуйте IIS для виконання маршрутизації запитів додатків, а потім перезаписуйте запити для localhost: port to hostIP: port

https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing


7
Я використовував підхід NETSH. працював як шарм. Це найкраща відповідь ІМО.
— Лян Чжоу

1
Я також використовував NETSH, працював як магія. Це і моя найкраща відповідь. Це працював єдиний
— Van_Paitin

netshбуло те, що мені допомогло, я спробував усе, що знайшов у мережі, але успіху не було. Це дозволить отримати доступ <protocol>://localhost:<port>замість прямого IP-доступу. Це має бути прийнятою відповіддю для Windows 10.
— Октавіан Ларі

Це має бути прийнята відповідь, як це актуально, і вона працює зараз
— IAmJulianAcosta

26

MacOS

Якщо ви хочете налаштувати середовище Windows за допомогою Virtualbox на mac, просто використовуйте налаштування NAT за замовчуванням на адаптері, а у вікні VM перейдіть до файлу хостів та додайте наступне:

10.0.2.2       localhost
10.0.2.2       127.0.0.1

На відміну від відповідей вище, важливо включити обидва рядки, інакше це не вийде.


6
Це чудово підходить для зображень modern.ie для налагодження ie / edge на Mac, саме тому я підійшов до цього питання. Є один виняток: Windows 10. Windows 10 забороняє модифікацію домену localhost за допомогою файлу хостів (божевілля) Вирішення проблеми полягає в тому, щоб увімкнути IIS та встановити через нього зворотний проксі, виконуючи те ж саме в багатьох інших кроках: developer.microsoft. com / en-us / microsoft-край / платформа / проблеми /…
— MaxPRafferty

@MaxPRafferty Ви зуміли змусити це працювати? Я пережив усе інше в цій темі, безрезультатно. Я оновив свій хост-файл, як підказує ця відповідь, і дотримуюся кроків у цьому посилання. Було трохи неоднозначно, де декларувати 10.0.2.2 на кроці 7. Куди це діється в правилі? Тепер я невблаганно спрямовуюсь на сторінку IIS на своєму локальному сервері Windows VM
— Девід Вебер

@DavidWeber Так, я був - я фактично подав цю помилку, тому у мене все ще є зображення. 10.0.2.2 потрібно перейти в "URL-адресу дії", вказану як "переписати URL-адресу" на екрані редагування: головна сторінка перезапису: user-images.githubusercontent.com/1894398/… , user-images.githubusercontent.com/1894398/ … Редагувати сторінку правил: user-images.githubusercontent.com/1894398/…
— MaxPRafferty

@MaxPRafferty Дякуємо за допомогу та посилання. Я досі не можу змусити це працювати. Така проста річ, і я не впевнений, де зараз проблема. Я дотримувався цього пункту до 't', і все ще нічого, навіть коли намагаюся запропонувати всі інші пропозиції щодо типу мережі. Схоже, я можу також придбати ПК у цей момент.
— Девід Вебер

3
Я не думаю, що це вже не працює, коли новіші версії Windows резольвер localhost зі своїм DNS. Я не думаю, що 127.0.0.1 не можна переспрямовувати так (лише імена хостів).
— kossmoboleat

22

Вам потрібно відредагувати файл хостів на своїй віртуальній машині Windows так само, як і для локальної хост-машини:

C: \ WINDOWS \ system32 \ driver \ etc \ hosts

І прив’яжіть своїх віртуальних хостів до 10.0.2.2. Якщо ви просто використовуєте localhost, тоді замініть

127.0.0.1 localhost з 10.0.2.2 localhost

Наприклад:

10.0.2.2 localhost
10.0.2.2 local.site1.com
10.0.2.2 local.site2.com

Це повідомляє вашій віртуальній машині вказати на вашу локальну машину для цих доменних імен.


Thx, це допомогло в моєму випадку (запуск локальних веб-сайтів у docker з nginx) - доступ до IP direclty (10.0.2.2) просто призводить до помилки nginx.
— ggzone

22

Вам не потрібно змінювати файл хостів або будь-яку конфігурацію Virtual Box. Зберігайте налаштування в NAT. Перейдіть до свого примірника Windows і запустіть "cmd" або відкрийте cmd.exe. Виконайте команду "ipconfig" та отримайте IP-адресу шлюзу за замовчуванням . Перегляньте http://10.0.2.2:8080 на Windows IE, який ви побачите, такий же, як і ваш Mac Safari http: // localhost: 8080 / або http://127.0.0.1:8080


1
Коли локальний сервер розвитку має залежності, пов'язані з розвитком localhost. (наприклад, webpack-dev-server)
— kube

що таке 10.2.2.3 or .4? Я можу пінг, .2як і ті - VM - це Windows Server під управлінням Windows Server
— ycomp

10

Поєднання кількох речей зрештою змусило мене працювати. Запуск flask-сервера на macosx.

У своєму Windows VM я редагував файл хостів:

  • Запустити блокнот як адміністратор
  • відчинено C:\windows\system32\drivers\etc\hosts
  • додати цей запис: 10.0.2.2 outer

Вимкнення VM та мого Mac у VirtualBox:

  • Перейдіть, щоб VirtualBox > preferences > Network > Host-only Networks > +додати мережуvboxnet1
  • Перейти до My_VM > settings > Network > Adapter 1.
  • Виберіть Enable Network Adapterі встановіть Attached to:в Bridged Adapter.
  • Потім встановіть Advanced > Promiscuous Mode:наAllow VMs .
  • Клацніть OK
  • Йти до My_VM > settings > Network > Adapter 1 .
  • Встановити Attached to:назад NAT.

Тоді я пішов до Adapter 2

  • Набір Attached to:для Host-only Adapterі вибору попередньої доданої мережі vboxnet1.

Я запустив свій сервер на моєму комп'ютері, працюючи далі, 127.0.0.1:5000і тепер це було доступно в моєму VM наhttp://10.0.2.2:5000

Людина, який кошмар перевірити на IE на mac. Як не існує більш простого способу?


1
Я б хотів, щоб я міг підкреслити це тисячу разів. Це було єдине, що працювало після пошуку більш простих методів, таких як просто редагування файлу хостів та використання налаштувань NAT за замовчуванням - жодна з цих публікацій не вирішила мою проблему. Я запускаю MacOS Sierra з VM IE11 на Win81 від developer.microsoft.com/en-us/microsoft-edge/tools/vms, якщо комбо допомагає комусь іншому тут.
— Ману Кантхан

FWIW, я спробував скасувати всі ці налаштування, а потім видалити VirtualBox і повторно встановити, повторно імпортувати VM з Microsoft. Я запустив свій сервер рельсів rails s -b 127.0.0.1і отримав доступ до нього з усіх VM на, http://10.0.2.2:3000і він працював. Цікаво, чи зміна налаштування зверху якось затрималася навіть після того, як повернути її назад.
— Ману Кантхан

1
Це було не зовсім те саме для мене, особливо кроки для Adapter 2, мені довелося скористатися налаштуванням Nat Adapter, щоб це було vboxnet1, але воно закінчилося. Дякую за підказки!
— jfunk

4

Я вирішив, додавши переадресацію порту в налаштуваннях Virtualbox в мережі. IP-хост, встановлений 127.0.0.1 порт: 8080 Гість ip: Дайте будь-який IP для веб-сайту (скажімо, 10.0.2.5) порт: 8080 Зараз із доступу до гостьової машини http://10.0.2.5:8080 з допомогою IE


3

У віртуальному вікні, як було сказано вище, ви можете додати цей рядовий файл хостів

10.0.2.2   outer

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


2

перевірте, чи можете ви натиснути на свою батьківську машину за допомогою: ipconfig (отримайте ip-адресу)

ping <ip> або telnet <ip> <port>

Якщо ви не можете дістатися до порту, спробуйте додати нове вхідне правило у батьківський брандмауер, що дозволяє локальні порти.

Тоді я зміг отримати доступ http://<ip>:<port>


2

У віртуальній коробці

  1. Встановіть мережу на Bridge Bridge
  2. Перейдіть до вдосконаленого режиму Promiscuous Mode: Allow All

Тепер складний біт - це ваш localhost, якщо ви працюєте з Node.js, встановіть IP-адресу на 0,0.0,0, тоді знайдіть власну IP-адресу, наприклад cmd: ipconfig -> 10.0.1.3

Введіть цю адресу разом із номером порту. І воно спрацює.


1

Загальні кроки:

  • Загальна мережа (додайте лише хост або міст NIC)
  • налаштувати бажану послугу для прослуховування у відповідному інтерфейсі (інтерфейс підключений до спільного NIC)
  • Використовуйте IP: Порт, щоб досягти цільової послуги, використовувати IP, який належить до спільної мережі.

0

У Windows з віртуальною Windows 7 єдине, що працювало для мене, - це використання NAT та переадресація портів (не вдалося встановити з'єднане з'єднання). Тут я знайшов підручник: http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/ (прокрутіть униз до частина з " Переадресація портів на віртуальну машину ").

Завдяки цим змінам я міг би перейти на веб-сайт xampp з " http: //192.168.xx.x: 8888 / mywebsite " в Internet Explorer 10 на моїй віртуальній машині.

Я знайшов IP на панелі керування XAMPP> Netstat ("Система").


0

Якщо ви використовуєте Virtual Box, ви можете підключити Mac OSX (і я думаю, що Linux) до своєї віртуальної машини Windows за допомогою одного рядка коду -> Я пропоную зупинити вікно, перш ніж запустити це в терміналі.

VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on

Зауважу, що це з документів Dinghy, якими я керую, але це команда віртуальної скриньки, тому вона насправді не повинна дбати про те, чим ви користуєтесь, поки її віртуальна скринька


0

Мені потрібно працювати на localhost, а не на якомусь дивному IP.

1) У терміналі Mac iconfig -aзнайдіть локальну IP-адресу. Це, мабуть, остання.

en7: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV> ether 38:c9:86:32:0e:69 inet6 fe80::ea:393e:a54f:635%en7 prefixlen 64 secured scopeid 0xe inet 10.1.5.60 netmask 0xfffffe00 broadcast 10.1.5.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex,flow-control>) status: active

наприклад 10.1.5.60

2) завантажте зображення для Windows. start> введіть, cmdщоб отримати термінал

3) notepad c:\windows\system32\drivers\etc\hosts

4) додайте наступний рядок 10.1.5.60 localhost

5) відкрийте IE, і наступна URL-адреса повинна потрапити на сервер, який працює на вашому mac: http://localhost:3000/


Насправді це, здається, порушує localhost URL-адреси з браузера mac.
— Джейсон Мур

-2

Отримайте IP для машини, на якій працює Apache (inet addr: in ifconfig) та введіть її у адресний рядок браузера віртуальної скриньки.


-3

Власне, відповідь користувача477494 в принципі правильна.

Я застосував таку ж логіку в інших середовищах (хост OS X - віртуальний Windows XP), і це робить трюк. Мені довелося переключити стек LAMP хостів, щоб отримати IP-адресу та порт Apache для вирішення, але як тільки я зрозумів це, я сміявся.


Ви можете дати будь-яку пораду щодо налаштування / з'ясування IP-адрес на машині OSX?
— cukabeka

? не впевнений, за якою адресою знаходиться ваша адреса - адресу комп'ютера можна знайти за допомогою системних префіксів / мережі -> IP-адреса. Це в основному адреса, на яку macine відповість зовні. Внутрішній localhost: 80 повинен робити для апаш-сервера osx - тоді як MAMP використовує localhost: 8888 за замовчуванням.
— orionrush

Не очевидно, на яку відповідь йдеться (посилання було б розумним), і це здається скоріше коментарем.
— isherwood
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.