![Правильный способ разрешить подключение из гостевой системы Hyper-v к приложению на хост-машине](https://rvso.com/image/1606665/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%20%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B8%D1%82%D1%8C%20%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%D0%B7%20%D0%B3%D0%BE%D1%81%D1%82%D0%B5%D0%B2%D0%BE%D0%B9%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%20Hyper-v%20%D0%BA%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8E%20%D0%BD%D0%B0%20%D1%85%D0%BE%D1%81%D1%82-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B5.png)
Как правильно разрешить подключение гостя к приложению, работающему на хост-машине?
Пример настройки:
- какое-то приложение, работающее на моем хост-компьютере Win 10, скажем, приложение NodeJS на порту 4400
- Гостевая ОС в Hyper-v, подключенная к коммутатору по умолчанию, например Ubuntu 18.04, созданная с помощью «Быстрого создания»
Брандмауэр Windows блокирует соединения от гостя к хосту:
2019-10-09 10:18:21 DROP TCP 172.17.147.6 172.17.147.1 59560 4400 60 S 3734288315 0 29200 - - - RECEIVE
Это неудивительно, поскольку существует правило «Node.js: Server-side JavaScript», которое блокирует трафик в сетях «Public» — типе сети, назначенном коммутатору по умолчанию, созданному Hyper-V.
Удивительно, что раньше это работало. Пару месяцев назад это работало и для приложений NodeJS, и для приложений Java. Неделю назад я попробовал уже существующую настройку, но не смог получить доступ к приложению, работающему на 9290. Я попытался исправить это, сбросив брандмауэр Windows, но затем потерял возможность доступа к 4400. Я сбросил/переустановил Hyper-V и NodeJS, надеясь, что это добавит какое-нибудь волшебное правило брандмауэра, но безрезультатно. Все еще не вижу разумного правила, которое разрешило бы доступ к приложениям NodeJS в «публичных» сетях.
Так в чем же может заключаться магия, позволяющая гостю получать доступ к приложениям хоста?