Звернення до 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.