Virtualbox «перенаправление порта» от гостя к хосту [закрыто]


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.
Николас Шенкс

149
Как веб-разработчик, который использует VirtualBox как часть моего ежедневного рабочего процесса, я не согласен с тем, что это помечено как не по теме. Пожалуйста, рассмотрите возможность открытия.
запасной цикл

1
1. Перейдите к виртуальной машине 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-адрес хоста = IP-адрес хоста DNS, порт хоста = 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-адреса гостя, полученного вами из пред. шаг (в моем случае это 10.0.2.15)
    • в вашем случае порт 8000 - установите его на обоих, но вы можете изменить порт хоста, если вы предпочитаете

Зайдите в систему хоста и попробуйте в браузере:

http://127.0.0.1:8000

или ваш сетевой IP-адрес (выясните на хост-машине, запустив: ipconfig).

Сетевое общение Гость -> Хост

В этом случае переадресация портов не требуется, связь идет по локальной сети обратно к хосту.

На хост-машине - узнайте ваш сетевой IP-адрес:

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
Yasin

5
В этом случае получить доступ от виртуальной машины к хосту можно, перейдя на виртуальную машину и получив IP-адрес ITS (10.0.2.15, как показано ниже). Чтобы добраться до хост-машины с виртуальной машины, IP-адрес 10.0.2.2 (по соглашению).
Марк Робертс

5
Если для гостя используется NAT ... Если служба, работающая на хосте, привязана только к 127.0.0.1, то гость не может использовать публичный ip хоста для подключения к этой службе (пример службы: privoxy). Вместо этого вам нужно использовать 10.0.2.2, как упомянуто Марком, или то, что «route -n» (выполняется на гостевой системе) отображается в качестве шлюза по умолчанию.
Desm


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

14

Это невозможно. localhostпо умолчанию всегда используется устройство обратной связи в локальной операционной системе.
Поскольку ваша виртуальная машина работает под собственной операционной системой, она имеет свое собственное устройство обратной связи, к которому вы не можете получить доступ извне.

Если вы хотите получить к нему доступ, например, в браузере, подключитесь к нему, используя вместо этого локальный IP-адрес:

http://192.168.180.1:8000

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


Я тоже это попробовал, но не работал ни для NAT, ни для bridge. Apache регистрирует в гостевой системе никаких ошибок, а apache запущен и работает в гостевой системе.
Кармен

Вы уверены, что используете правильный IP? Вы можете убедиться в этом, попытавшись получить доступ к адресу внутри виртуальной машины. Если это не удается, вы используете неправильный IP-адрес или ваш Apache не настроен на прослушивание порта 8080.
Chris

Работал на меня - спасибо!
Мэтт Фреар

У меня тоже сработало. Перед заменой «localhost» на IP-адрес операционной системы, я всегда получал «Сервер отклонил ваш ключ» и «Доступ запрещен» без объяснения в /var/log/auth.log, несмотря на LogLevel DEBUG3 в / etc / ssh / sshd_config
VR

@Chris означает ли это, что на хосте, где записи виртуального хоста, такие как mysite.localhost, не будут доступны гостевой машине, потому что я должен ссылаться на хост, используя только IP-адрес?
Данджа
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.