MaksimovEvgeny
@MaksimovEvgeny

Почему гостевая система недоступна по внешнему 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, настройки сетевых адаптеров и данное решение исправно функционировало в оригинальном окружении, что, в свою очередь, и доказало его состоятельность.
  • Вопрос задан
  • 1491 просмотр
Пригласить эксперта
Ответы на вопрос 1
jamakasi666
@jamakasi666 Куратор тега Linux
Просто IT'шник.
Может проще перевести сеть в Bridged режим а лишние порты закрыть фаирволом непосредственно в windows?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы