Почему гостевая система недоступна по внешнему IP для самой себя? Приветствую, уважаемое сообщество!
Возникла следующая проблема, которую с наскока решить не получилось:
Имеется Ubuntu хост с запущенной на нем Windows в VirtualBox.
Адрес сети хоста 192.168.1.1/24 (интерфейс br0). Сеть на VirtualBox поднята в режиме виртуального адаптера хоста: адрес виртуального адаптера 192.168.56.1/24 (интерфейс vboxnet0), адрес непосредственно сетевого адаптера гостевой системы 192.168.56.2/24.
Итого, для того, что бы машина была видна из локальной сети хоста (192.168.1.0/24) для iptables создан ряд правил:iptables -A INPUT -i br0 -p tcp -m tcp --dport 8081 -j ACCEPT
iptables -A FORWARD -p tcp -m tcp --dport 8081 -j ACCEPT
iptables -A PREROUTING -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.56.2:8081
В результате при обращении по адресу 192.168.1.1:8081 из сети 192.168.1.0/24 все запросы перенаправляются на гостевую систему. Но! Если из самой гостевой системы выполнить запрос на адрес 192.168.1.1:8081, то ответа не последует...
В сети накопал информацию про "Hairpin NAT", но добавление подобного правила проблему не решило:iptables -t nat -A POSTROUTING -d 192.168.56.2 -p tcp --dport 8081 -j MASQUERADE
Прошу опытных коллег указать верное направление для решения данной проблемы.
P.S.
Про кривизну самого решения знаю, но на гостевой системе запущено очень специфичное ПО, которое требует именно такую схему.
P.P.S.
Про существование NAT в VirtualBox тоже знаю и он работает, но с вышеупомянутым специфичным ПО есть проблемы. Техподдержка производителя ПО грешит на некорректную реализацию NAT от VirtualBox, что, скорее всего, не так, но для исключения данного фактора необходимо перейти на "нативную" реализацию перенаправления трафика.
UPDATE:
Вышеописанное решение, так называемый Hairpin или Reflection NAT, абсолютно рабочее. Но, почему-то, только не в случае с VirtualBox. В систему была дополнительно установлена физическая сетевая карта, на которой была собрана схема аналогичная схеме с гостевой системой на VirtualBox. Были заданы соответствующие правила iptables, настройки сетевых адаптеров и данное решение исправно функционировало в оригинальном окружении, что, в свою очередь, и доказало его состоятельность.

21 Авг 2019 в 06:45
223 +1
0
Ответы
1

Проблема возникает из-за того, что когда гостевая система пытается обратиться к внешнему IP хоста (192.168.1.1) через NAT перенаправление, NAT не позволяет трафику выходить и снова входить в сеть через этот же NAT правило.

В данном случае, возможное решение проблемы может быть следующим:

Установить и настроить маршрутизацию между сетями хоста и гостевой системы, чтобы трафик мог обмениваться напрямую между двумя сетями без использования NAT.Внести изменения в конфигурацию сетевых адаптеров в VirtualBox, чтобы использовать мостовое соединение между хостом и гостевой системой, вместо NAT.Попробовать изменить параметр "natdnshostresolver1" в настройках VirtualBox, чтобы позволить гостевой системе обращаться к внешним хостам через NAT.

Попробуйте одно из этих решений и проверьте, поможет ли оно вам решить проблему доступа к гостевой системе через внешний IP хоста.

20 Апр в 13:13
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир