У меня проблемы с доступом к моему веб-серверу, когда он расположен на виртуальной машине. Если я установлю веб-сервер на физический хост-компьютер, я смогу получить к нему доступ из Интернета. Тем не менее, когда я пытаюсь получить доступ к веб-серверу, когда он находится на виртуальной машине (на том же хосте), он просто зависает (из браузера, и curl externalip:forwardedport).

Я немного раздражен, почему это не работает, потому что все части этой установки работают изолированно, но не работают, когда соединены.

Когда я размещаю его на виртуальной машине, я обязательно устанавливаю мостовое сетевое соединение и могу получить к нему доступ из других мест в моей сети на разных машинах. Я также настроил переадресацию портов на маршрутизаторе на статический ip, назначенный статическому IP, назначенному виртуальной машине.

Следующее представляет конфигурации. Первая конфигурация - та, которую я пытаюсь достичь. Вторая и третья - это "частичные конфигурации", которые выглядят так, как будто они обе работают (и работают), тогда первая конфигурация также должна работать.

  1. веб-сервер <-> виртуальная машина <-> хост-машина <-> маршрутизатор <-> модем <-> интернет
  2. веб-сервер <-> виртуальная машина <-> хост-машина <-> маршрутизатор <-> другой компьютер
  3. ................................ веб-сервер <-> хост-машина <-> маршрутизатор <-> модем <-> интернет

В основном # 2 означает, что я могу получить доступ к веб-серверу локально, а # 3 означает, что я могу получить доступ к веб-серверу из Интернета, если веб-сервер находится не на виртуальной машине, а на хосте vm.

В настоящее время я использую:

webserver: python's SimpleHTTPServer at port 8888
virtual machine: centos deployed by vagrant on virtualbox. 
host machine: thinkpad, windows
router: apple airport, wrt-54g (tried both, same results)
modem: SB6121 cable modem
internet: comcast 

Я настроил переадресацию портов с порта 8888 на локальный статический IP-адрес веб-сервера 10.0.1.99 @ 8888.

Мысль все должно быть правильно. Я попросил друга попытаться получить доступ к веб-серверу через его собственный роутер / интернет, и он получил те же результаты: он просто зависает.

Это комбинация переадресации портов на маршрутизаторе и подключения сетевого адаптера vm, которая, кажется, вызывает проблемы. Я почти уверен, что перенаправляю правильный порт на правильный статический IP. Кроме того, я не уверен, почему он зависает, а не просто разрывает соединение. Некоторые люди предполагают, что пакеты не возвращаются в Интернет.

1 ответ1

1

Я нашел, в чем проблема. Vagrant создает два адаптера, один NAT, предположительно для соединения ssh, и мостовой адаптер, который я просил в VagrantFile. Если я отключаю адаптер NAT (т.е. через VirtualBox) и оставляю мостовой адаптер активным, внезапно он работает, и я могу получить доступ к веб-серверу из Интернета. Если я оставлю адаптер NAT внутри, я смогу получить доступ к веб-серверу только из моей сети (т. Е. Других ящиков).

Вот конфигурация, когда это не сработало:

Адаптер NAT:NAT-адаптер

Мостовой адаптер:Мостовой адаптер

ifconfig внутри моей виртуальной машины, на которой размещен веб-сервер. Не удается получить доступ из Интернета. IP-адрес здесь: 99, потому что я установил статический IP-адрес через VagrantFile (файл конфигурации vagrant): ifconfig внутри моей виртуальной машины, хостинг веб-сервера

Внезапно, это работает, если я удаляю адаптер NAT, только используя мостовой адаптер. IP-адрес меняется на что-то назначенное DHCP, потому что я просто включаю:удалил адаптер NAT, только используя мостовой адаптер

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .