Ноутбук отдаёт страницу на localhost, телефон подключается к той же VPN, а браузер на телефоне сообщает, что сайт недоступен. С туннелем пока всё в порядке, потому что туннель только доставляет пакеты. Сервер разработки, привязанный к интерфейсу loopback, никогда не принимает соединение, адресованное чему-то другому, поэтому смотреть нужно сначала на слушающий сокет, а не на VPN.

Пройдите по сокету, настройке привязки, правилу брандмауэра и URL — именно в таком порядке.

Сокет отвечает на более узкий вопрос

Слушатель, созданный на 127.0.0.1, принимает трафик от самой машины и отвергает всё, что приходит на другой адрес. Слушатель на wildcard-адресе принимает на всех локальных интерфейсах, включая интерфейс VPN, что шире, чем нужно большинству сред разработки. Слушатель, привязанный к одному конкретному адресу VPN, — самый узкий полезный вариант, и он работает только пока этот адрес существует.

Отсюда следуют две ловушки именования. В браузере телефона localhost означает телефон, а не ноутбук. Wildcard-адрес — это значение привязки, а не то, что вводят в URL. Кто проверит с любым из них, сообщит об отказе, который вообще не касался сети.

IPv6 добавляет третий случай, потому что сокет может принимать IPv4 и IPv6 в зависимости от параметров, которые легко упустить. Прочитайте семейство адресов в списке. Запись wildcard для одного семейства не описывает другое.

Прочитайте адрес прослушивания

Проверьте сокет до изменения конфигурации. Локальный адрес, порт и процесс-владелец вместе показывают, доступен ли сервер из VPN вообще.

Get-NetTCPConnection -State Listen -LocalPort 8080 | Select-Object LocalAddress,LocalPort,OwningProcess
Get-Process -Id (Get-NetTCPConnection -State Listen -LocalPort 8080).OwningProcess
ipconfig | Select-String -Pattern 'IPv4'
Get-NetFirewallRule -DisplayName '*8080*' | Format-Table DisplayName,Enabled,Profile,Direction,Action

Локальный адрес 127.0.0.1 решает вопрос: никакое изменение брандмауэра не поможет, потому что приложение не слушает интерфейс VPN. Wildcard или адрес VPN означает, что сокет в порядке и действует следующая граница.

Подтвердите и процесс-владелец, поскольку посторонняя служба на распространённом порту может сделать таблицу похожей на правильную, хотя нужный сервер так и не запустился. Сверяйте путь к исполняемому файлу, а не только имя. Устаревший процесс от прошлого запуска — частый самозванец.

Измените привязку через приложение

Используйте документированный в фреймворке параметр адреса прослушивания и перезапустите процесс. Если ноутбуку принадлежит частный адрес 10.77.0.1, URL телефона становится http://10.77.0.1:8080/ и этот адрес должен маршрутизироваться через VPN; больше в настройке ничего не меняется.

Не добавляйте произвольные адреса в Windows и не меняйте шлюз, чтобы заставить привязку сработать. Такие изменения переживают сеанс отладки и удивляют следующего человека. Сервер, запущенный до появления адреса VPN, тоже может не привязаться, поэтому порядок запуска важен для временного интерфейса. Дайте ему повторную попытку или запустите после туннеля. Ошибка привязки при загрузке на следующее утро выглядит точно как проблема брандмауэра.

Для HTTPS сохраняйте имя хоста службы и проверку сертификата. Предупреждение о сертификате на сыром адресе — это проблема именования, а не шаг, который нужно прощёлкать, и частный DNS должен соответствовать выбранному слушателю.

Откройте одно правило, а не всю сеть

Как только сокет принимает на адресе VPN, брандмауэр решает, дойдёт ли запрос. Ограничьте правило этим приложением, этим протоколом, этим локальным портом и авторизованным удалённым источником и подтвердите, какой профиль активен на адаптере VPN.

Используйте адрес источника, который Windows действительно видит, включая любое преобразование, выполняемое шлюзом, потому что правило, написанное для исходного адреса клиента, не совпадёт с преобразованным.

Страница, которая загружается и показывает ошибку приложения, — это прогресс: отказ HTTP отличается от отсутствия TCP-соединения, и следующее расследование относится к собственной политике доступа приложения, а не к сети.

Завершите, запросив страницу с нужного телефона и убедившись, что исключённое устройство по-прежнему не может до неё добраться. Работающий слушатель с правилом, пропускающим всё, — не тот же результат.

Похожие статьи