Настройка туннеля Always On VPN для пользователя

Функция Always On появилась в VPN-клиенте Windows 10. Always On — это возможность поддерживать VPN-подключение. С Always On активный профиль VPN может подключаться автоматически и оставаться подключенным в зависимости от триггеров, таких как вход пользователя в систему, изменение состояния сети или активный экран устройства.

Вы можете использовать шлюзы с поддержкой Always On, чтобы создавать постоянные пользовательские туннели и туннели устройств к Azure.

Подключения Always On VPN включают один из двух типов туннелей:

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

  • Туннель пользователя: подключается только после того, как пользователи войдут в систему. Используя пользовательские туннели, вы можете получить доступ к ресурсам организации через серверы VPN.

Туннели устройств и пользовательские туннели работают независимо от их профилей VPN. Их можно подключать одновременно, и они могут использовать разные методы аутентификации и другие параметры конфигурации VPN, если это необходимо.

В этой статье приводятся сведения о настройке туннеля пользователя Always On VPN. Сведения о настройке туннеля устройства см. в статье Настройка туннеля устройства Always On VPN.

Настройка шлюза

Вы можете настроить VPN-шлюз для использования протокола IKEv2 и аутентификации на основе сертификатов с помощью инструкций из статьи Настройка VPN-подключения типа "точка — сеть".

Настроить пользовательский туннель

  1. Установите сертификаты клиента на клиенте Windows, как показано в этой статье о VPN-клиенте типа "точка — сеть ". Сертификат должен находиться в текущем хранилище пользователя.

  2. Vpn-клиент Always On можно настроить с помощью PowerShell, Configuration Manager или Intune, следуя инструкциям в разделе Настройка клиентских Always On VPN-подключений Windows 10 или более поздней версии.

Пример конфигурации пользовательского туннеля

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

  1. Скопируйте следующий текст и сохраните его как usercert.ps1:

    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"
    
  2. Скопируйте следующий текст и сохраните его как VPNProfile.xml в той же папке, что и usercert.ps1. Измените следующий текст в соответствии со своей средой:

    • <Servers>azuregateway-1234-56-78dc.cloudapp.net</Servers> <= Can be found in the VpnSettings.xml in the downloaded profile zip file
    • <Address>192.168.3.5</Address> <= IP of resource in the vnet or the vnet address space
    • <Address>192.168.3.4</Address> <= IP of resource in the vnet or the vnet address space
    • <PrefixSize>32</PrefixSize> <= Subnet mask
     <VPNProfile>  
       <NativeProfile>  
     <Servers>azuregateway-b115055e-0882-49bc-a9b9-7de45cba12c0-8e6946892333.vpn.azure.com</Servers>  
     <NativeProtocolType>IKEv2</NativeProtocolType>  
     <Authentication>  
     <UserMethod>Eap</UserMethod>
     <Eap>
     <Configuration>
     <EapHostConfig xmlns="http://www.microsoft.com/provisioning/EapHostConfig"><EapMethod><Type xmlns="http://www.microsoft.com/provisioning/EapCommon">13</Type><VendorId xmlns="http://www.microsoft.com/provisioning/EapCommon">0</VendorId><VendorType xmlns="http://www.microsoft.com/provisioning/EapCommon">0</VendorType><AuthorId xmlns="http://www.microsoft.com/provisioning/EapCommon">0</AuthorId></EapMethod><Config xmlns="http://www.microsoft.com/provisioning/EapHostConfig"><Eap xmlns="http://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1"><Type>13</Type><EapType xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV1"><CredentialsSource><CertificateStore><SimpleCertSelection>true</SimpleCertSelection></CertificateStore></CredentialsSource><ServerValidation><DisableUserPromptForServerValidation>false</DisableUserPromptForServerValidation><ServerNames></ServerNames></ServerValidation><DifferentUsername>false</DifferentUsername><PerformServerValidation xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV2">false</PerformServerValidation><AcceptServerName xmlns="http://www.microsoft.com/provisioning/EapTlsConnectionPropertiesV2">false</AcceptServerName></EapType></Eap></Config></EapHostConfig>
     </Configuration>
     </Eap>
     </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>192.168.3.5</Address>  
     <PrefixSize>32</PrefixSize>  
       </Route>  
       <Route>  
     <Address>192.168.3.4</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>192.168.3.4, 192.168.3.5</RemoteAddressRanges>  
       </TrafficFilter>
     <!-- need to specify always on = true --> 
     <AlwaysOn>true</AlwaysOn>
     <RememberCredentials>true</RememberCredentials>
     <!--new node to register client IP address in DNS to enable manage out -->
     <RegisterDNS>true</RegisterDNS>
     </VPNProfile>
    
  3. Откройте сеанс PowerShell от имени администратора.

  4. В PowerShell перейдите в папку с файлами usercert.ps1 и VPNProfile.xml и выполните следующую команду:

    C:\> .\usercert.ps1 .\VPNProfile.xml UserTest
    

    MachineCertTest

  5. В разделе Параметры VPN найдите запись UserTest и нажмите кнопку Подключить.

  6. Если удалось установить подключение, значит пользовательский туннель Always On настроен успешно.

Чтобы удалить профиль

Чтобы удалить профиль, выполните следующие действия:

  1. Выполните следующую команду:

    C:\> Remove-VpnConnection UserTest  
    
  2. Отключите соединение и снимите флажок Подключаться автоматически.

    Очистка

Дальнейшие действия

Сведения об устранении проблем с подключением, которые могут возникнуть, см. в статье Проблемы с подключением типа "точка — сеть" в Azure.