
У меня есть гостевая система 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 из Интернета.