Один пользователь VPN в Windows должен попадать на HTTPS на сервере и не попадать на SMB на том же сервере, а маршрут не может это выразить. Оба запроса несут один и тот же адрес назначения, поэтому префикс, отправляющий трафик в туннель, несёт и тот поток, который вы хотели исключить. Чтобы разделить их, нужно правило, которое проверяет нечто более тонкое, чем назначение.

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

Маршрут не может разделить две службы на одном адресе

Собственная маршрутизация VPN основана на префиксах: она решает, какие назначения идут через туннель, а какие остаются снаружи. Это правильный инструмент, чтобы держать одну подсеть внутри, а другую снаружи, и по своей конструкции он слеп к портам. Фильтр трафика в профиле VPN добавляет второе измерение: он сопоставляет протокол, удалённый адрес и удалённый порт с тем, что может пересечь этот интерфейс. Правило IPsec работает в третьем месте и выражает, какие потоки требуют защиты и с кем они проходят проверку подлинности. Все три отвечают на разные вопросы, и ни одно не заменяет остальные.

Начните с того, что запишите нужное предложение. Разрешить только HTTPS — это предложение о доступе, а требовать IPsec для HTTPS — предложение о защите, и оба ведут к разной конфигурации.

Ограничение доступа и требование защиты расходятся

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

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

Постройте список фильтра как полный набор

Профили VPNv2 несут список фильтра отдельно от списка маршрутов, и его записи — это свойства профиля, а не команды. Для примера с HTTPS записи нужны протокол 6, удалённый адрес и удалённый порт, развёрнутые через канал управления или ProfileXML для используемого типа профиля. Определение фильтра трафика VPNv2 от Microsoft указывает, что условия внутри одного правила объединяются, а отдельные идентификаторы правил действуют как альтернативы.

TrafficFilterList/0/Protocol            = 6
TrafficFilterList/0/RemoteAddressRanges = 10.60.4.20/32
TrafficFilterList/0/RemotePortRanges    = 443
RouteList/0/Address                     = 10.60.4.0/24

Значения портов в этом списке описывают порт службы на дальнем конце, а локальный порт должен оставаться неограниченным, чтобы эфемерный порт источника клиента не отфильтровывался. Обратный порядок даёт правило, которое ни с чем не совпадает, и головоломку на полдня.

Запишите маршрут и фильтр как два отдельных решения. Маршрут решает, что этот сервер достигается через туннель, а фильтр решает, какие службы могут использовать этот путь.

Докажите оба результата двумя запросами

Проверьте разрешённый поток и отклонённый поток по отдельности и читайте сбой, а не отсутствующую страницу. Быстрый отказ — это решение политики, а время ожидания скорее означает отсутствующий маршрут или службу, которая не слушает. Команды ниже выполняют оба запроса и показывают действующие правила.

Test-NetConnection 10.60.4.20 -Port 443
Test-NetConnection 10.60.4.20 -Port 445
Get-NetIPsecRule -DisplayName *Vpn*
Get-VpnConnection -Name Corp

Быстрый отказ в тесте SMB при успешном тесте HTTPS — это результат, который фильтр должен был дать. Отказ на обоих портах означает, что в списке не хватает чего-то нужного сеансу, а время ожидания на обоих указывает на маршрутизацию, а не на фильтрацию. Если защищённые потоки показывают отсутствие ассоциации безопасности в выводе IPsec, требование защиты не выполнено даже при успешном соединении. Читайте все четыре вывода вместе, потому что каждый по отдельности поддерживает свою историю.

Записывайте действующий профиль, набор правил и политику второй стороны вместе с результатами. Исторические заметки о совместимости со старыми клиентами Windows не описывают, что сегодняшние функции управляемого профиля поддерживают на конкретном шлюзе. Поведение, зависящее от версии, относится к записи, а не к предположению.

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