Две VPN в Windows одновременно: какой профиль сохраняет маршрут по умолчанию?
Два профиля VPN в Windows борются за один и тот же маршрут по умолчанию. Снимите один флажок, добавьте префиксы, которые он покрывал, и проверьте DNS, прежде чем доверять обоим.
Подключите второй туннель, и первый замолкает, хотя оба клиента по-прежнему сообщают о здоровом соединении. У Windows есть только один маршрут по умолчанию, и каждый профиль, который его требует, забирает его у другого. Симптом выглядит как сбой VPN, но это борьба за маршрутизацию между двумя профилями. Решите, какой туннель должен владеть этим маршрутом, и остальная конфигурация последует.
Лучшим маршрутом по умолчанию может быть только одна запись
Таблица маршрутизации IPv4 хранит единственный побеждающий маршрут для адресатов без более точного совпадения. Профиль VPN, устанавливающий собственный, заменяет предыдущий сразу при подключении, и трафик, который раньше входил в первый туннель, теперь выходит через второй. Первый туннель остаётся поднятым; исчезает любой пакет, который использовал бы его для общих адресатов.
Значки состояния клиента не могут это показать. Они сообщают, что туннель установлен, а не какие префиксы всё ещё направляются в него, поэтому пользователь видит два зелёных значка и тайм-аут в каком-то приложении. Чтение route print -4 во время сбоя информативнее любого журнала VPN.
Разрешение имён — второй, независимый конфликт, и исправление одной только таблицы маршрутизации его не решит.
Что устанавливает флажок и что удаляет
Параметр находится в свойствах адаптера каждого профиля VPN, в дополнительных параметрах IPv4, и сформулирован как использование шлюза по умолчанию в удалённой сети. Включённый, каждое подключение добавляет маршрут по умолчанию через туннель и ставит этот интерфейс в очередь на общий трафик. Выключенный, Windows сохраняет маршрут для собственной подсети туннеля и не трогает остальную таблицу.
Именно при снятии флажка большинство людей застревает. У удалённого сайта обычно больше одного префикса, и ни один из этих префиксов не находится в подсети адаптера, поэтому файловые серверы и адреса управления перестают отвечать. Флажок не сломал туннель; он убрал широкий маршрут, который покрывал всё.
Смешанные конфигурации законны и обычны: корпоративный профиль сохраняет флажок как полный туннель, а лабораторный профиль разделён, чтобы не вытеснять корпоративный маршрут по умолчанию.
Выбирайте по тому, что должен нести каждый туннель
Три вопроса определяют раскладку. Должен ли этот туннель нести обычный интернет-трафик или только адреса внутри собственного сайта? Используют ли два сайта непересекающиеся частные диапазоны? И если профилем управляет работодатель, разрешено ли вам вообще менять его поведение маршрутизации?
Если один туннель должен быть полным, он владеет маршрутом по умолчанию, а второй должен быть разделённым. Если ни одному не нужен общий интернет-трафик, снимите флажок на обоих и позвольте физическому адаптеру сохранить маршрут по умолчанию. Если диапазоны пересекаются, остановитесь: 172.22.0.0/16 не может означать одну машину на корпоративной стороне и другую на стороне лаборатории, и никакой флажок это не решит.
Запишите решение рядом с именами профилей. Иначе третий VPN, добавленный в следующем квартале, повторит расследование с начала.
Добавьте недостающие префиксы и проверьте результат
Для каждого разделённого туннеля явно добавьте удалённые диапазоны, используя адрес партнёра, показанный на этом адаптере, вместо публичного адреса сервера:
> route add 172.22.0.0 mask 255.255.0.0 172.20.4.1
> route print -4
> Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Sort-Object RouteMetric
Адаптер PPP использует свой адрес партнёра как следующий переход, а адаптер TAP обычно использует шлюз, показанный на этом интерфейсе, поэтому читайте сведения об адаптере, а не копируйте число из руководства. Добавляйте постоянный флаг только после того, как маршрут доказал правильность, и удаляйте старые постоянные записи перед добавлением замен. Управляемые клиенты могут устанавливать и защищать собственные маршруты, и тогда изменение должен сделать владелец профиля.
DNS требует отдельного прохода. Оба туннеля могут навязывать резолверы, а Windows держит список для каждого интерфейса с порядком предпочтения, поэтому имя из второй сети может уйти к резолверу первой. Посмотрите, что каждый адаптер действительно получил, прежде чем выбирать исправление:
> Get-DnsClientServerAddress -AddressFamily IPv4
> Resolve-DnsName files.corp.internal -Server 172.20.4.1
Политика разрешения имён по домену обычно лучше замены глобального списка резолверов, потому что этот список совместно используется каждым приложением на машине, и его тихое изменение переносит несвязанные запросы.
Примите настройку с четырьмя проверками: один ресурс в каждой удалённой сети, доступный по адресу, поиск имени в каждой из них, интернет-маршрут по умолчанию всё ещё указывает на физический адаптер, и сеанс удалённого рабочего стола, который переживает поднятие второго подключения.