Віртуальна скринька "порт вперед" від Guest до Host [закрито]


162

Ось моя настройка:

- Host: Windows XP
- Guest: Ubuntu 10.04
- Networking: NAT

Я встановлюю веб-сервер Apache на Гість, але хочу, щоб це можна було зробити на машині Windows:

- go to the browser, type http://localhost:8000

Також я спробував змінити свою мережу на містку, і я отримав нову IP-адресу. Але коли я спробував зробити http: //: 8000, він говорить, що не вдалося підключитися.


1
У мене була така ж проблема. Виявилося, у гостьової ОС був активний брандмауер, який блокував порт 80.
Nicholas Shanks

149
Як веб-розробник, який використовує VirtualBox як частину мого щоденного робочого процесу, не погоджуюся з тим, що це позначається як поза темою. Будь ласка, подумайте про повторне відкриття.
запчастини

1
1. Перейдіть до VM 2. ifconfig (отримайте локальний IP - має бути 10.0.2.X) 3. ssh 10.0.2.2, щоб дістатися до хост-машини
Марк Робертс

@deeperDATA Можливо, це стосується роботи веб-розробника, але переповнення стека не означає, щоб інкапсулювати кожну частину завдання. Це свідчить про складність нашої професії, що її вимоги охоплюють декілька сайтів обміну стеками.
Кевін Лоуренс

1
Мені знадобилося багато часу, щоб він працював. Нашою проблемою було ip-прив'язка програми в гостьовій системі, вона прив’язувалася до імені машини, що означає 127.0.1.1 в ubuntu. Ми змінили прив’язку до 0,0,0,0. Налаштування переадресації портів: Хост IP = DNS Хост IP, Порт хосту = 8080, IP гостя = IP від ​​eth0, Порт гостя = 8080.
повільно

Відповіді:


222

Хост мережевого спілкування -> Гість

Підключіться до гостя та дізнайтеся ip-адресу:

ifconfig 

приклад результату (ip-адреса 10.0.2.15):

eth0      Link encap:Ethernet  HWaddr 08:00:27:AE:36:99
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

Перейдіть у вікно екземпляра Vbox -> Меню -> Мережеві адаптери:

  • адаптер повинен бути NAT
  • натисніть "переадресація порту"
  • вставити новий запис (+ значок)
    • для ip хоста введіть 127.0.0.1, а для ip адреси гостя, яку ви отримали від prev. крок (у моєму випадку це 10.0.2.15)
    • у вашому випадку порт 8000 - покладіть його на обидва, але ви можете змінити порт хосту, якщо хочете

Перейдіть на хост-систему і спробуйте її в браузері:

http://127.0.0.1:8000

або вашу мережеву ip адресу (дізнайтеся на хост-машині, запустивши: ipconfig).

Мережевий зв’язок Гість -> Хост

У цьому випадку переадресація портів не потрібна, зв'язок переходить через локальну мережу назад до хоста.

На хост-машині - дізнайтеся вашу ip-адресу netw:

ipconfig

приклад результату:

IP Address. . . . . . . . . . . . : 192.168.5.1

На гостьовій машині ви можете спілкуватися безпосередньо з хостом, наприклад, перевірити це за допомогою ping:

# ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=128 time=2.30 ms
...

11
обох портів не буде 8000. Порт хоста буде 8000 або потрібен інший, але порт для гостей повинен бути 80
Ясін

5
Дістатися з VM до хоста в цьому випадку повинно бути можливим, перейшовши до VM та отримавши ІТ-адресу IP (10.0.2.15 як нижче). Щоб дістатися до хост-машини з VM, IP - 10.0.2.2 (за умовами).
Марк Робертс

5
Якщо використовувати NAT для гостя ... Якщо служба, що працює на хості, прив’язана лише до 127.0.0.1, то гість не може використовувати відкритий ip хоста для підключення до цієї послуги (наприклад, служба: privoxy). Натомість вам потрібно використовувати 10.0.2.2, як згадував Марк, або те, що "маршрут -n" (запускається на гості) відображається як шлюз за замовчуванням.
дез

4
У випадку з CentOS, можливо, доведеться відключити брандмауер або відредагувати конкретні правила в iptable
Reddy

2
Я виявив, що не потрібно вказувати IP-адреси хоста чи гостя, і ви можете просто залишити поля порожніми. Хоча якщо ви хочете підключитися лише з localhost, можливо, це гарна ідея, щоб 127.0.0.1 розмістити як Хост.
mwfearnley

14

Це неможливо. localhostзавжди встановлюється за замовчуванням для пристрою зворотного зв'язку в локальній операційній системі.
Оскільки ваша віртуальна машина працює з власною операційною системою, у неї є власний пристрій зворотного зв'язку, до якого ви не можете отримати доступ ззовні.

Якщо ви хочете отримати доступ до нього, наприклад, у браузері, підключіться до нього за допомогою локального IP:

http://192.168.180.1:8000

Це лише приклад, звичайно, ви можете дізнатися фактичний IP-адрес, видавши ifconfigкоманду на оболонці в гостьовій операційній системі.


Я також спробував це, але не працював і для NAT, і для мосту. Журнали apache в гості не видають жодних помилок, і апаш працює в гості.
Кармен

Ви впевнені, що використовуєте правильний IP-адресу? Ви можете перевірити це, намагаючись отримати доступ до адреси всередині віртуальної машини. Якщо це не вдається, ви або використовуєте неправильний IP-адресу, або ваш apache не налаштований на прослуховування через порт 8080.
Chris

Працювали для мене - дякую!
Метт Фрейр

Працював і для мене. Перед тим, як замінити "localhost" IP-адресою хост-ОС, я завжди отримував "Сервер відмовився від вашого ключа" та "Відмовлено в доступі" без пояснення в /var/log/auth.log, незважаючи на LogLevel DEBUG3 в / etc / ssh / sshd_config
VR

@Chris це означає, що на хості, з віртуальними записами хосту, як-от mysite.localhost, не буде доступним для гостьової машини, тому що я повинен посилатися на хоста, використовуючи лише IP-адресу?
danjah
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.