Назад | Перейти на главную страницу

Windows 10 Always On VPN, Split DNS, NRPT и как настроить, какой DNS-сервер используется?

Вот установка:

Эта проблема:

Чего я хочу:

Что я пробовал:

Я подозреваю, что если бы я мог заставить VPN вообще не перечислять какие-либо DNS-серверы, правила NRPT сработали бы только, например, .local, и все работало бы правильно. Но я не могу найти способ заставить его не использовать те, которые предоставлены сервером RRAS.

Потенциальный обходной путь, который вы могли бы попробовать, - это установка DNS-сервера Server 2016 и реализация политики DNS для разделения DNS с учетом геолокации. Это позволит вам указать DNS-запросам из подсети Device VPN использовать внешний IP-адрес вместо внутреннего.

Команды PowerShell будут выглядеть примерно так, как показано ниже.

Подсеть VPN устройства

Add-DnsServerClientSubnet -Name "DeviceVPNSubnet" -IPv4Subnet "192.168.1.0/24"  

Область действия VPN-зоны устройства

Add-DnsServerZoneScope -ZoneName "example.com" -Name "DeviceVPNZoneScope"  

По умолчанию запись A (уже должна существовать)

Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "mail" -IPv4Address "192.168.0.5"

Устройство VPN A запись

Add-DnsServerResourceRecord -ZoneName "example.com" -A -Name "mail" -IPv4Address "203.0.113.5" -ZoneScope "DeviceVPNZoneScope" 

Политика разрешения VPN на устройстве

Add-DnsServerQueryResolutionPolicy -Name "Device VPN Policy" -Action ALLOW -ClientSubnet "eq,DeviceVPNSubnet" -ZoneScope "DeviceVPNZoneScope,1" -ZoneName "example.com"  

Видеть: Использование политики DNS для управления трафиком на основе географического местоположения с основными серверами

При использовании автоматических настроек метрики на всех интерфейсах по какой-то причине адаптер LAN Ethernet имеет более низкую метрику, чем интерфейс туннеля устройства, но интерфейсы Wi-Fi имеют более высокую метрику, чем интерфейс туннеля устройства.

Таким образом, при использовании раздельного DNS зоны общественного достояния для устройств, подключенных к локальной сети и Wi-Fi, происходит следующее.

  1. Клиенты туннелирования устройств с использованием интерфейса LAN (кабель) - разрешает записи общедоступного домена с помощью локально настроенных DNS-серверов.

  2. Клиенты туннеля устройства с использованием WIFI - разрешает записи общедоступного домена с помощью DNS-серверов, настроенных в интерфейсе туннеля устройства.

Мне это кажется странным, и я ожидал, что туннель устройства всегда будет иметь самую низкую метрику при использовании автоматического назначения метрики. Самым странным является то, что метрика интерфейса туннеля устройства установлена ​​на число между интерфейсами LAN (кабель) и WIFI.

Что правильно? Я бы предпочел не устанавливать метрику вручную для любого из интерфейсов.

Это подтверждено с помощью Split-tunnel VPN, не тестировалось с force-tunnel. Я хотел бы, чтобы все DNS, даже для Split-tunnel, разрешались с использованием DNS-серверов, настроенных туннелем устройства, и использовали настройки NRPT, если по какой-то причине мне нужно разрешить домен за пределами VPN-соединения.

Я нашел решение.

Настройка метрики интерфейса на большее число, чем существующие адаптеры Ethernet / Wi-Fi, заставит его предпочитать DNS-серверы в локальной сети, но правила NRPT по-прежнему будут работать для отправки DNS-запросов для моего собственного домена на мои серверы через VPN.

Однако нет никакого способа настроить метрику интерфейса для VPN-соединения ни в PowerShell, ни в VBscript, ни в .NET, ни в VPNv2 CSP.

Если VPN подключен, метрику можно изменить в PowerShell с помощью командлета Set-NetIPInterface, но когда VPN не подключен, он не отображается там вообще. И изменения там не сохранятся после перезагрузки.

Единственный способ изменить это - отредактировать C:\ProgramData\Microsoft\Network\Connections\Pbk\rasphone.pbk файл и изменение строк IpInterfaceMetric и Ipv6InterfaceMetric к более высоким числам. Я поменял их обоих на 100.

После этого и в сочетании с правилами NRPT DNS работает по своему усмотрению - все запросы, например, local, отправляются на мои DNS-серверы AD. Все остальное (включая example.com) отправляется на DNS-серверы их локальной сети.

Вы можете определить внутренние DNS-серверы для любого пространства имен, используя элемент DomainNameInformation в вашем ProfileXML. Если вы используете разделенный DNS, в некоторых случаях «внутренние» пространства имен должны маршрутизироваться извне, а не через туннель VPN. В этих сценариях вам придется создать «исключения», которые по сути представляют собой пространства имен, определенные НЕ для использования внутренних DNS-серверов. Для этого вы не просто оставляете поле DnsServers пустым, но полностью исключаете DnsServers из элемента.

Вы можете найти дополнительную информацию здесь: https://directaccess.richardhicks.com/2018/04/23/always-on-vpn-and-the-name-resolution-policy-table-nrpt/

Надеюсь, это поможет!

Просто мысль, но, может быть, установить сценарий подключения .bat, который добавляет правильный публичный IP-адрес почтового сервера при подключении к файлу hosts, а затем удаляет его из файла hosts клиента при отключении? Теоретически я предполагаю, что вы всегда можете иметь его в файле hosts, и тогда они просто будут обращаться к серверу с его общедоступного IP-адреса даже в офисе. Вне зависимости от этого будет отменен любой DNS с сервера RRAS.

Файл hosts находится в папке C: \ Windows \ System32 \ Drivers \ etc \ hosts.