Руководство по развертыванию Vpn AlwaysOn — настройка профиля VPN AlwaysOn для клиентов Windows 10+
В этой последней части руководства вы узнаете, как использовать скрипт конфигурации ProfileXML PowerShell для настройки параметров VPN Always On и создания туннеля пользователя для клиентских подключений.
Дополнительные сведения о параметрах конфигурации Always on VPN для поставщика служб конфигурации (CSP) см. в разделе поставщик конфигурации VPNv2.
Необходимые компоненты
Полное руководство. Развертывание AlwaysOn VPN — настройка шаблонов центра сертификации.
Создание профиля VPN-клиента AlwaysOn
В этом разделе мы создадим VPN-подключение клиента, чтобы убедиться, что тестовый клиент VPN может установить успешное VPN-подключение. Это также позволит нам создать параметры EAP для экспорта в следующем разделе.
Дополнительные сведения о параметрах EAP см. в разделе "Конфигурация EAP".
Войдите на компьютер клиента VPN, присоединенного к домену, в качестве пользователя VPN, созданного в тестовом пользователе Active Directory.
В меню введите VPN, чтобы выбрать параметры VPN. Нажмите клавишу ВВОД.
В области сведений выберите "Добавить VPN-подключение".
Для поставщика VPN выберите Windows (встроенное).
В поле "Имя подключения" введите VPN Contoso.
Для имени или адреса сервера введите внешнее полное доменное имя VPN-сервера (например, vpn.contoso.com).
Для типа VPN выберите IKEv2.
В поле "Тип сведений о входе" выберите "Сертификат".
Выберите Сохранить.
В разделе "Связанные параметры" выберите пункт "Изменить параметры адаптера".
Щелкните правой кнопкой мыши VPN Contoso и выберите пункт "Свойства".
На вкладке "Безопасность " для шифрования данных выберите максимальное шифрование силы.
Выберите "Использовать расширяемый протокол проверки подлинности(EAP)". Затем для использования расширяемого протокола проверки подлинности (EAP) выберите Microsoft: Protected EAP (PEAP) (включено шифрование).
Выберите свойства, чтобы открыть защищенные свойства EAP, и выполните следующие действия.
Для подключения к этим серверам введите имя сервера NPS.
Для доверенных корневых центров сертификации выберите ЦС, выдавшего сертификат сервера NPS (например, contoso-CA).
Для уведомлений перед подключением выберите <
a0/>Не запрашивать у пользователя авторизацию новых серверов или доверенных ЦС .Для выбора метода проверки подлинности выберите смарт-карточку или другой сертификат.
Выберите Настроить.
Выберите " Использовать сертификат" на этом компьютере.
Для подключения к этим серверам введите имя сервера NPS.
Для доверенных корневых центров сертификации выберите ЦС, выдавшего сертификат сервера NPS.
Выберите Не запрашивать у пользователя авторизацию новых серверов или доверенных центров сертификации.
Нажмите кнопку "ОК ", чтобы закрыть смарт-карту или другие свойства сертификата.
Нажмите кнопку "ОК" , чтобы закрыть защищенные свойства EAP.
Нажмите кнопку "ОК", чтобы закрыть свойства VPN Contoso.
Закройте окно Сетевые подключения .
В разделе "Параметры" выберите CONTOSO VPN и нажмите кнопку "Подключить".
Внимание
Убедитесь, что vpn-подключение шаблона к VPN-серверу успешно выполнено. Это гарантирует правильность параметров EAP перед их использованием на следующем шаге. Перед продолжением необходимо подключиться по крайней мере один раз; В противном случае профиль не будет содержать все сведения, необходимые для подключения к VPN.
Настройка VPN-клиента Windows
В этом разделе описано, как вручную настроить VPN-клиент Windows с помощью скрипта PowerShell.
Войдите в качестве vpn-пользователя на клиентский компьютер VPN.
Откройте интегрированную среду сценариев Windows PowerShell (ISE) от имени администратора.
Скопируйте и вставьте следующий скрипт.
# Define key VPN profile parameters # Replace with your own values $Domain = 'corp' # Name of the domain. $TemplateName = 'Contoso VPN' # Name of the test VPN connection you created in the tutorial. $ProfileName = 'Contoso AlwaysOn VPN' # Name of the profile we are going to create. $Servers = 'aov-vpn.contoso.com' #Public or routable IP address or DNS name for the VPN gateway. $DnsSuffix = 'corp.contoso.com' # Specifies one or more commas separated DNS suffixes. $DomainName = '.corp.contoso.com' #Used to indicate the namespace to which the policy applies. Contains `.` prefix. $DNSServers = '10.10.0.6' #List of comma-separated DNS Server IP addresses to use for the namespace. $TrustedNetwork = 'corp.contoso.com' #Comma-separated string to identify the trusted network. #Get the EAP settings for the current profile called $TemplateName $Connection = Get-VpnConnection -Name $TemplateName if(!$Connection) { $Message = "Unable to get $TemplateName connection profile: $_" Write-Host "$Message" exit } $EAPSettings= $Connection.EapConfigXmlStream.InnerXml $ProfileNameEscaped = $ProfileName -replace ' ', '%20' # Define ProfileXML $ProfileXML = @(" <VPNProfile> <DnsSuffix>$DnsSuffix</DnsSuffix> <NativeProfile> <Servers>$Servers</Servers> <NativeProtocolType>IKEv2</NativeProtocolType> <Authentication> <UserMethod>Eap</UserMethod> <Eap> <Configuration> $EAPSettings </Configuration> </Eap> </Authentication> <RoutingPolicyType>SplitTunnel</RoutingPolicyType> </NativeProfile> <AlwaysOn>true</AlwaysOn> <RememberCredentials>true</RememberCredentials> <TrustedNetworkDetection>$TrustedNetwork</TrustedNetworkDetection> <DomainNameInformation> <DomainName>$DomainName</DomainName> <DnsServers>$DNSServers</DnsServers> </DomainNameInformation> </VPNProfile> ") #Output the XML for possible use in Intune $ProfileXML | Out-File -FilePath ($env:USERPROFILE + '\desktop\VPN_Profile.xml') # Escape special characters in the profile (<,>,") $ProfileXML = $ProfileXML -replace '<', '<' $ProfileXML = $ProfileXML -replace '>', '>' $ProfileXML = $ProfileXML -replace '"', '"' # Define WMI-to-CSP Bridge properties $nodeCSPURI = "./Vendor/MSFT/VPNv2" $namespaceName = "root\cimv2\mdm\dmmap" $className = "MDM_VPNv2_01" try { # Determine user SID for VPN profile. $WmiLoggedOnUsers = (Get-WmiObject Win32_LoggedOnUser).Antecedent If($WmiLoggedOnUsers.Count -gt 1) { $WmiLoggedOnUsers = $WmiLoggedOnUsers -match "Domain=""$Domain""" } $WmiUserValid = ($WmiLoggedOnUsers | Select-Object -Unique -First 1) -match 'Domain="([^"]+)",Name="([^"]+)"' If(-not $WmiUserValid){ Throw "Returned object is not a valid WMI string" } $UserName = "$($Matches[1])\$($Matches[2])" $ObjUser = New-Object System.Security.Principal.NTAccount($UserName) $Sid = $ObjUser.Translate([System.Security.Principal.SecurityIdentifier]) $SidValue = $Sid.Value $Message = "User SID is $SidValue." Write-Host "$Message" } catch [Exception] { $Message = "Unable to get user SID. $_" Write-Host "$Message" exit } try { # Define WMI session. $session = New-CimSession $options = New-Object Microsoft.Management.Infrastructure.Options.CimOperationOptions $options.SetCustomOption("PolicyPlatformContext_PrincipalContext_Type", "PolicyPlatform_UserContext", $false) $options.SetCustomOption("PolicyPlatformContext_PrincipalContext_Id", "$SidValue", $false) } catch { $Message = "Unable to create new session for $ProfileName profile: $_" Write-Host $Message exit } try { #Detect and delete previous VPN profile. $deleteInstances = $session.EnumerateInstances($namespaceName, $className, $options) foreach ($deleteInstance in $deleteInstances) { $InstanceId = $deleteInstance.InstanceID if ("$InstanceId" -eq "$ProfileNameEscaped") { $session.DeleteInstance($namespaceName, $deleteInstance, $options) $Message = "Removed $ProfileName profile $InstanceId" Write-Host "$Message" } else { $Message = "Ignoring existing VPN profile $InstanceId" Write-Host "$Message" } } } catch [Exception] { $Message = "Unable to remove existing outdated instance(s) of $ProfileName profile: $_" Write-Host $Message exit } try { # Create the VPN profile. $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, $options) $Message = "Created $ProfileName profile." Write-Host "$Message" } catch [Exception] { $Message = "Unable to create $ProfileName profile: $_" Write-Host "$Message" exit } $Message = "Script Complete" Write-Host "$Message"
Задайте значение для следующих переменных в верхней части скрипта: , , , ,
$Servers
$DnsSuffix
,$DomainName
и$DNSServers
.$ProfileName
$TemplateName
$Domain
Дополнительные сведения о настройке этих переменных см. в статье VPNv2 CSP.Чтобы запустить скрипт, нажмите клавишу ВВОД.
Убедитесь, что сценарий выполнен успешно, выполнив следующую команду в среде сценариев Windows PowerShell:
Get-CimInstance -Namespace root\cimv2\mdm\dmmap -ClassName MDM_VPNv2_01
Вы должны увидеть следующие выходные данные (значение ProfileXML усечено для удобства чтения):
AlwaysOn : True ByPassForLocal : DeviceTunnel : DnsSuffix : corp.contoso.com EdpModeId : InstanceID : Contoso%20AlwaysOn%20VPN LockDown : ParentID : ./Vendor/MSFT/VPNv2 ProfileXML : <VPNProfile>...</VPNProfile> RegisterDNS : RememberCredentials : True TrustedNetworkDetection : corp.contoso.com PSComputerName : `
Теперь вы настроили туннель пользователя для AlwaysOn VPN. Если вы хотите узнать, как настроить туннель устройств, см. статью "Настройка туннелей VPN-устройств в клиенте Windows".
Следующие шаги
Сведения о настройке профилей AlwaysOn VPN с помощью Microsoft Configuration Manager см. в статье "Развертывание профиля VPN AlwaysOn" на клиентах Windows с помощью Microsoft Configuration Manager.
Сведения о настройке профилей VPN AlwaysOn в Microsoft Intune см. в статье "Развертывание профиля VPN AlwaysOn" на клиентах Windows с помощью Microsoft Intune.
Узнайте, как настроить условный доступ для VPN-подключения с помощью идентификатора Microsoft Entra.
Дополнительные сведения о расширенных функциях VPN см. в статье "Дополнительные функции VPN".
Дополнительные сведения о параметрах конфигурации Always on VPN для поставщика служб конфигурации (CSP) см. в разделе поставщик конфигурации VPNv2.
Сведения об устранении неполадок с AlwaysOn VPN см. в статье "Устранение неполадок с VPN AlwaysOn".