Intereting Posts
Gnome-терминал медленно запускается с запуска, быстро при запуске с терминала Может ли архив или специальный файл «содержать» разные данные на основе пароля, используемого для его открытия? Как я могу запустить startx и запустить сценарий удаленно через SSH? Отслеживание взлома системы RHEL Что означает флаг -ar для cp? Как правильно использовать pgrep внутри bash? Почему «читать» выделяет пробелы даже с флагом -N? Как спасти Ubuntu Server 16.04, который отключается сценарием systemd? Как я могу запустить сервис iptables автоматически после перезагрузки на CenOS / RHEL7? двойной монитор с uvesafb / Intel 945GME? Разделение вне пространства Команда Unix для переименования нескольких файлов Как выполнять последовательные команды из истории? Отсутствует панель с двумя мониторами корицы, когда монитор отключен Как безопасно передавать переменные в сценарии с поддержкой root?

Как получить IP-адрес хоста из nat виртуального бокса?

У меня есть хост Windows 7, который обрабатывает виртуального пользователя VirtualBox с nat. Этот гость запускает некоторые веб-службы, доступные извне через перенаправление портов.

Мне нужно предоставить внешний доступ к этим сервисам с помощью URL-адресов, но я не могу полагаться на правильное разрешение DNS, поэтому мне приходится распространять IP-адрес хоста в гостевой среде. Как я мог сделать это с минимальным воздействием на хост?

Некоторые пояснения: «внешний», «внешний доступ» относится к веб-браузерам, размещенным на том же уровне, что и хост, т.е. они могут не только полагаться на адрес хоста.

Рисунок стоит тысячи слов:

+--------------+ External | Windows Host | network +---------------------+ | +----+ | | Web client | | | | NAT | +----------------+ | | | ------------------------> Page generated | | | | | | | |by VM with URLs | | | | VM | | | |to host | | | | | | | +--------|-------+ | | | | FWD | | | | | <--------------------------------+ | | | | | +---------------------+ | +----+ | +--------------+ 

Одним из способов добиться этого является трюк, стоящий за сайтами вроде Whatsmyip.com . все, что вам нужно – это веб-сервер в вашей сети, который отправляет IP-адрес, откуда он получает запрос обратно клиенту.

Помните, что поскольку вы используете NAT, сервер видит адрес NAT-маршрутизатора (в данном случае VM-host) как исходящий адрес.

Для этого вы можете создать php-скрипт (то есть whatsmyip.php ) в веб-корневом веб-сервере, например

 //whatsmyip.php <?php //Gets the IP address $ip = getenv("REMOTE_ADDR") ; Echo "$ip; ?> 

и получить доступ к нему от вашего гостя, например http://webserver/whatsmyip.php

(источник: Thoughtco.com )

Теперь вам нужно только оценить этот ответ в своей службе

Принимая во внимание ответ Гунтберта, это включает в себя:

  • Используйте сторонний веб-сервер во внешней сети для размещения удаленного ответчика, как описано в данном ответе.
  • Во время фазы инициализации VM (и / или периодически в соответствии с сетевым контекстом), просмотрите его, чтобы получить внешний адрес хоста Windows
  • Используйте извлеченный адрес для создания URL-адресов при создании страниц.