Настройка туннелей VPN-устройств в клиенте Windows

Область применения: Windows Server 2022, Windows Server 2019, Windows 10, Windows 11

AlwaysOn VPN позволяет создать выделенный профиль VPN для устройства или компьютера. VPN-подключения AlwaysOn включают два типа туннелей:

  • Туннель устройств подключается к указанным VPN-серверам перед входом пользователей на устройство. Сценарии подключения перед входом и управление устройствами используют туннель устройств.

  • Пользовательский туннель подключается только после входа пользователя на устройство. Пользовательский туннель позволяет пользователям получать доступ к ресурсам организации через VPN-серверы.

В отличие от туннеля пользователя, который подключается только после входа пользователя на устройство или компьютер, туннель устройств позволяет VPN установить подключение до входа пользователя. Туннель устройств и пользовательский туннель работают независимо друг от друга с профилями VPN, могут быть подключены одновременно и могут использовать различные методы проверки подлинности и другие параметры конфигурации VPN в соответствии с соответствующими параметрами. Пользовательский туннель поддерживает SSTP и IKEv2, а туннель устройств поддерживает IKEv2 только без поддержки резервного размещения SSTP.

Пользовательский туннель поддерживается на присоединенных к домену устройствах, не присоединенных к домену (рабочей группе) или присоединенных к домену устройствах с идентификатором Microsoft Entra, которые позволяют использовать сценарии корпоративного и BYOD. Она доступна во всех выпусках Windows, а функции платформы доступны сторонним сторонам посредством поддержки VPN-подключаемого модуля UWP.

Туннель устройств можно настроить только на присоединенных к домену устройствах с Windows 10 Корпоративная или education версии 1709 или более поздней. Нет поддержки стороннего управления туннельом устройств. Если в системе используется только туннель устройств, можно настроить таблицу политики разрешения имен (NRPT). Если в системе используется пользовательский туннель и туннель устройства, можно использовать таблицу политики разрешения имен (NRPT) только в пользовательском туннелье.

Туннель устройств не поддерживает принудительное туннелирование. Его необходимо настроить как разделенный туннель. |

Необходимые компоненты

Необходимо включить проверку подлинности сертификата компьютера для VPN-подключений и определить корневой центр сертификации для проверки подлинности входящих VPN-подключений.

$VPNRootCertAuthority = "Common Name of trusted root certification authority"
$RootCACert = (Get-ChildItem -Path cert:LocalMachine\root | Where-Object {$_.Subject -Like "*$VPNRootCertAuthority*" })
Set-VpnAuthProtocol -UserAuthProtocolAccepted Certificate, EAP -RootCertificateNameToAccept $RootCACert -PassThru

Device Tunnel Features and Requirements

Конфигурация туннеля VPN-устройств

В приведенном ниже примере XML профиля приведены рекомендации по сценариям, в которых требуются только инициированные клиентом вытягивание через туннель устройства. Фильтры трафика используются для ограничения туннеля устройства только для управления трафиком. Эта конфигурация хорошо подходит для Обновл. Windows, типичных сценариев групповой политики (GP) и обновлений Microsoft Endpoint Configuration Manager, а также vpn-подключения для первого входа без кэшированных учетных данных или сценариев сброса пароля.

Для сценариев отправки, инициированных сервером, таких как удаленное управление Windows (WinRM), удаленный GPUpdate и сценарии удаленного обновления Configuration Manager, необходимо разрешить входящий трафик в туннель устройства, поэтому фильтры трафика нельзя использовать. Если в профиле туннеля устройства включен фильтр трафика, то туннель устройств запрещает входящий трафик. Это ограничение будет удалено в будущих выпусках.

Пример профиля VPNXML

Ниже приведен пример профиля VPNXML.

<VPNProfile>
  <NativeProfile>
<Servers>vpn.contoso.com</Servers>
<NativeProtocolType>IKEv2</NativeProtocolType>
<Authentication>
  <MachineMethod>Certificate</MachineMethod>
</Authentication>
<RoutingPolicyType>SplitTunnel</RoutingPolicyType>
 <!-- disable the addition of a class based route for the assigned IP address on the VPN interface -->
<DisableClassBasedDefaultRoute>true</DisableClassBasedDefaultRoute>
  </NativeProfile>
  <!-- use host routes(/32) to prevent routing conflicts -->
  <Route>
<Address>10.10.0.2</Address>
<PrefixSize>32</PrefixSize>
  </Route>
  <Route>
<Address>10.10.0.3</Address>
<PrefixSize>32</PrefixSize>
  </Route>
<!-- traffic filters for the routes specified above so that only this traffic can go over the device tunnel -->
  <TrafficFilter>
<RemoteAddressRanges>10.10.0.2, 10.10.0.3</RemoteAddressRanges>
  </TrafficFilter>
<!-- need to specify always on = true -->
  <AlwaysOn>true</AlwaysOn>
<!-- new node to specify that this is a device tunnel -->
 <DeviceTunnel>true</DeviceTunnel>
<!--new node to register client IP address in DNS to enable manage out -->
<RegisterDNS>true</RegisterDNS>
</VPNProfile>

В зависимости от потребностей каждого конкретного сценария развертывания другой компонент VPN, который можно настроить с помощью туннеля устройства, — это обнаружение доверенной сети.

 <!-- inside/outside detection -->
  <TrustedNetworkDetection>corp.contoso.com</TrustedNetworkDetection>

Развертывание и тестирование

Вы можете настроить туннели устройств с помощью скрипта Windows PowerShell и моста инструментария управления Windows (WMI). Туннель VPN-устройств Always On должен быть настроен в контексте учетной записи LOCAL SYSTEM . Для этого потребуется использовать PsExec, один из psTools, включенный в набор служебных программ Sysinternals.

Рекомендации по развертыванию устройства (.\Device) и профиля пользователя (.\User) см. в статье "Использование сценариев PowerShell" с поставщиком моста WMI.

Выполните следующую команду Windows PowerShell, чтобы убедиться, что вы успешно развернули профиль устройства:

Get-VpnConnection -AllUserConnection

В выходных данных отображается список профилей VPN на уровне устройства, развернутых на устройстве.

Пример скрипта Windows PowerShell

Чтобы создать собственный скрипт для создания профиля, можно использовать следующий скрипт Windows PowerShell.

Param(
[string]$xmlFilePath,
[string]$ProfileName
)

$a = Test-Path $xmlFilePath
echo $a

$ProfileXML = Get-Content $xmlFilePath

echo $XML

$ProfileNameEscaped = $ProfileName -replace ' ', '%20'

$Version = 201606090004

$ProfileXML = $ProfileXML -replace '<', '&lt;'
$ProfileXML = $ProfileXML -replace '>', '&gt;'
$ProfileXML = $ProfileXML -replace '"', '&quot;'

$nodeCSPURI = './Vendor/MSFT/VPNv2'
$namespaceName = "root\cimv2\mdm\dmmap"
$className = "MDM_VPNv2_01"

$session = New-CimSession

try
{
$newInstance = New-Object Microsoft.Management.Infrastructure.CimInstance $className, $namespaceName
$property = [Microsoft.Management.Infrastructure.CimProperty]::Create("ParentID", "$nodeCSPURI", 'String', 'Key')
$newInstance.CimInstanceProperties.Add($property)
$property = [Microsoft.Management.Infrastructure.CimProperty]::Create("InstanceID", "$ProfileNameEscaped", 'String', 'Key')
$newInstance.CimInstanceProperties.Add($property)
$property = [Microsoft.Management.Infrastructure.CimProperty]::Create("ProfileXML", "$ProfileXML", 'String', 'Property')
$newInstance.CimInstanceProperties.Add($property)

$session.CreateInstance($namespaceName, $newInstance)
$Message = "Created $ProfileName profile."
Write-Host "$Message"
}
catch [Exception]
{
$Message = "Unable to create $ProfileName profile: $_"
Write-Host "$Message"
exit
}
$Message = "Complete."
Write-Host "$Message"

Дополнительные ресурсы

Ниже приведены дополнительные ресурсы для поддержки развертывания VPN.

Ресурсы конфигурации VPN-клиента

Ниже приведены ресурсы конфигурации VPN-клиента.

Ресурсы шлюза сервера удаленного доступа

Ниже приведены ресурсы шлюза сервера удаленного доступа (RAS).

Внимание

При использовании туннеля устройств с шлюзом Microsoft RAS необходимо настроить сервер RRAS для поддержки проверки подлинности сертификата компьютера IKEv2, включив проверку подлинности сертификата компьютера для метода проверки подлинности IKEv2 , как описано здесь. После включения этого параметра настоятельно рекомендуется использовать командлет Set-VpnAuthProtocol PowerShell вместе с необязательным параметром RootCertificateNameToAccept, чтобы убедиться, что подключения RRAS IKEv2 разрешены только для сертификатов VPN-клиента, которые цепочки с явно определенным внутренним или частным корневым центром сертификации. Кроме того, следует изменить хранилище доверенных корневых центров сертификации на сервере RRAS, чтобы убедиться, что он не содержит общедоступных центров сертификации, как описано здесь. Аналогичные методы также могут быть рассмотрены для других VPN-шлюзов.