Невозможно направить http-запросы к гостевой системе Virtualbox от внешних клиентов

Невозможно направить http-запросы к гостевой системе Virtualbox от внешних клиентов

У меня есть гостевая система Virtualbox с Ubuntu 14.04 и веб-сервер node.js. Хост Virtualbox — клиент Windows 8.1. После настройки сервера node у меня возникли некоторые трудности с предоставлением внешнего доступа.

Узел сервера работает на порту 5005, поэтому обычно я просто создаю правило переадресации портов из брандмауэра, чтобы направлять все запросы для 5005 на гостевой IP (192.168.2.13) на том же порту. Сделав это, я вижу, что запросы, которые я делаю из внешнего местоположения, достигают брандмауэра и разрешаются, но внешний клиент никогда не получает ответа. Если я обращаюсь к частному IP из сети, он отвечает правильно и как и ожидалось (так что сервер определенно работает).

Если я попробую тот же процесс, но запущу сервер на хостовой машине (а не гостевой виртуальной машине), то все сработает! Это говорит о том, что проблема не в конфигурации брандмауэра. Я могу пинговать гостевой IP с брандмауэра, так что подключение, похоже, в порядке.

Итак, похоже, что-то происходит в настройках сети для виртуальной машины, что вызывает проблему, но что именно? Гость VB настроен со статическим IP-адресом, используя модель мостовой сети VirtualBox.

Ни IpTables, ни UFW не настроены на блокировку чего-либо на гостевой машине (это я могу сказать)

Что я пропустил?

решение1

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

route -N

на гостевой системе и он показал, что маршрут по умолчанию не установлен. Чтобы исправить это, я запустил

route del default
route add default gw 192.168.2.100 eth1

и теперь гость может нормально взаимодействовать с трафиком NAT из Интернета.

Связанный контент