Freigeben über


Tutorial – Bereitstellen von Always On VPN – Konfigurieren des Always On VPN-Profils für Windows 10+ Clients

In diesem letzten Teil des Tutorials erfahren Sie, wie Sie ein ProfileXML PowerShell-Konfigurationsskript verwenden, um Always On VPN-Einstellungen zu konfigurieren und einen Benutzertunnel für Clientverbindungen zu erstellen.

Ausführlichere Informationen zu Always On-VPN-Konfigurationsoptionen für den Konfigurationsdienstanbieter (Configuration Service Provider, CSP) finden Sie unter VPNv2-Konfigurationsdienstanbieter.

Voraussetzungen

Schließen Sie das Tutorial: Bereitstellen von Always On VPN – Konfigurieren von Zertifizierungsstellenvorlagen ab.

Erstellen eines Always On VPN-Clientprofils

In diesem Abschnitt erstellen wir eine VPN-Clientverbindung, um zu überprüfen, ob der VPN-Testclient eine erfolgreiche VPN-Verbindung herstellen kann. Dadurch können wir auch die EAP-Einstellungen für den Export im nächsten Abschnitt erstellen.

Weitere Informationen zu den EAP-Einstellungen finden Sie unter EAP-Konfiguration.

  1. Melden Sie sich beim in die Domäne eingebundenen VPN-Clientcomputer als VPN-Benutzer an, den Sie unter Erstellen eines Active Directory-Testbenutzers erstellt haben.

  2. Geben Sie im Startmenü VPN ein, um VPN-Einstellungen auszuwählen. Drücken Sie die EINGABETASTE.

  3. Klicken Sie im Detailbereich auf VPN-Verbindung hinzufügen.

  4. Wählen Sie unter VPN-Anbieterdie Option Windows (integriert) aus.

  5. Geben Sie unter Verbindungsname den Namen Contoso VPN ein.

  6. Geben Sie unter Servername oder -adresse den externen FQDN Ihres VPN-Servers ein (z. B. vpn.contoso.com).

  7. Wählen Sie unter VPN-Typdie Option IKEv2 aus.

  8. Wählen Sie unter Anmeldeinformationstyp die Option Zertifikat aus.

  9. Wählen Sie Speichern aus.

  10. Wählen Sie unter „Zugehörige Einstellungen“ die Option Adapteroptionen ändern.

  11. Klicken Sie mit der rechten Maustaste auf Contoso VPN und wählen Sie Eigenschaften aus.

  12. Wählen Sie auf der Registerkarte Sicherheit für Datenverschlüsselung die Option Verschlüsselung mit maximaler Stärke aus.

  13. Wählen Sie Extensible Authentication Protocol (EAP) verwenden aus. Wählen Sie dann für Extensible Authentication Protocol (EAP) verwenden die Option Microsoft: Geschütztes EAP (PEAP) (Verschlüsselung aktiviert) aus.

  14. Wählen Sie Eigenschaften, um das Dialogfeld mit den Eigenschaften für „Geschütztes EAP“ zu öffnen, und führen Sie die folgenden Schritte aus:

    1. Geben Sie unter Verbindung mit folgenden Servern herstellen den Namen des NPS-Servers ein.

    2. Wählen Sie unter Vertrauenswürdige Stammzertifizierungsstellen die Zertifizierungsstelle aus, die das Zertifikat des NPS-Servers ausgestellt hat (z. B. contoso-CA).

    3. Wählen Sie für Benachrichtigungen vor der Verbindungsherstellung die Option Benutzer nicht zum Autorisieren neuer Server oder vertrauenswürdiger Zertifizierungsstellen auffordern.

    4. Wählen Sie für Authentifizierungsmethode auswählen die Option Smartcard oder anderes Zertifikat aus.

    5. Wählen Sie Konfigurierenaus.

      1. Wählen Sie Verwenden Sie ein Zertifikat auf diesem Computer.

      2. Geben Sie unter Verbindung mit folgenden Servern herstellen den Namen des NPS-Servers ein.

      3. Wählen Sie für Vertrauenswürdige Stammzertifizierungsstellen die Zertifizierungsstelle aus, die das Zertifikat des NPS-Servers ausgestellt hat.

      4. Wählen Sie Keine Benutzeraufforderung zur Autorisierung neuer Server oder vertrauenswürdiger Zertifizierungsstellen.

      5. Wählen Sie OK aus, um Smartcard- oder andere Zertifikateigenschaften zu schließen.

      6. Wählen Sie OK aus, um Eigenschaften für geschütztes EAP zu schließen.

    6. Wählen Sie OK aus, um die Contoso-VPN-Eigenschaften zu schließen.

  15. Schließen Sie das Fenster Netzwerkverbindungen.

  16. Wählen Sie unter „Einstellungen“ die Option Contoso VPN und dann Verbinden aus.

Wichtig

Stellen Sie sicher, dass Verbindung mithilfe der VPN-Verbindungsvorlage mit Ihrem VPN-Server erfolgreich ist. Dadurch wird sichergestellt, dass die EAP-Einstellungen korrekt sind, bevor Sie sie im nächsten Schritt verwenden. Sie müssen mindestens einmal eine Verbindung herstellen, bevor Sie fortfahren. Andernfalls enthält das Profil nicht alle Informationen, die für die Verbindung mit dem VPN erforderlich sind.

Konfigurieren Ihres Windows-VPN-Clients

In diesem Abschnitt konfigurieren Sie den Windows-VPN-Client manuell mithilfe eines PowerShell-Skripts.

  1. Melden Sie sich als VPN-Benutzer beim VPN-Clientcomputer an.

  2. Öffnen Sie Windows PowerShell Integrated Scripting Environment (ISE) als Administrator.

  3. Kopieren Sie das folgende Skript, und fügen Sie es ein.

    
    # 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 '<', '&lt;'
    $ProfileXML = $ProfileXML -replace '>', '&gt;'
    $ProfileXML = $ProfileXML -replace '"', '&quot;'
    
    # 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"
    
    
  4. Legen Sie den Wert für die folgenden Variablen am Anfang des Skripts fest: $Domain, $TemplateName, $ProfileName, $Servers, $DnsSuffix, $DomainName und $DNSServers. Ausführlichere Informationen zum Festlegen dieser Variablen finden Sie unter VPNv2 CSP.

  5. Drücken Sie die EINGABETASTE, um das Skript auszuführen.

  6. Überprüfen Sie, ob das Skript erfolgreich war, indem Sie den folgenden Befehl in der Windows PowerShell ISE ausführen:

        Get-CimInstance -Namespace root\cimv2\mdm\dmmap -ClassName MDM_VPNv2_01
    
  7. Die folgende Ausgabe sollte angezeigt werden (der ProfileXML-Wert wurde aus Gründen der Lesbarkeit abgeschnitten):

    
    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          : 
    `
    

Sie haben nun Ihren Benutzertunnel für Always On VPN konfiguriert. Informationen zum Konfigurieren eines Gerätetunnels finden Sie unter Konfigurieren von VPN-Gerätetunneln im Windows-Client.

Nächste Schritte