Freigeben über


Lernprogramm: Erstellen einer Always On VPN-Verbindung auf Windows-Clientgeräten

In diesem Lernprogramm erfahren Sie, wie Sie eine Always On VPN-Verbindung auf Windows-Clientgeräten erstellen. Sie setzt die Serie fort, um Always On VPN in einer Beispielumgebung bereitzustellen. Zuvor in der Reihe haben Sie eine Beispielinfrastruktur bereitgestellt und Zertifizierungsstellenvorlagen konfiguriert.

In diesem Tutorial erfahren Sie:

  • Erstellen und testen Sie eine manuelle Benutzer-VPN-Verbindung, die als Vorlage für die Always On VPN-Verbindung verwendet wird.
  • Konvertieren Sie die manuelle VPN-Verbindung mithilfe von PowerShell in eine Always On VPN-Verbindung.

Always On VPN-Verbindungen können als Gerätetunnel oder Benutzertunnel konfiguriert werden:

  • Gerätetunnel: Stellt eine Verbindung mit angegebenen VPN-Servern her, bevor sich die Benutzer am Gerät anmelden. Ein Gerätetunnel wird für Pre-Login-Szenarien und Zwecke der Geräteverwaltung verwendet.

  • Benutzertunnel: Stellt erst eine Verbindung her, nachdem sich ein Benutzer beim Gerät anmeldet. Mit einem Benutzertunnel können Benutzer über VPN-Server auf Organisationsressourcen zugreifen.

Weitere Informationen zu den Unterschieden zwischen Gerätetunnel und Benutzertunnel finden Sie unter Konfigurieren von VPN-Gerätetunneln im Windows-Client.

Always On VPN-Verbindungen, unabhängig davon, ob ein Gerätetunnel oder ein Benutzertunnel, werden mithilfe des ProfileXML-Knotens im VPNv2-Konfigurationsdienstanbieter (CSP) konfiguriert. In den Schritten in diesem Lernprogramm erfahren Sie, wie Sie einen Benutzertunnel auf einem einzelnen Windows-Clientgerät konfigurieren. Sie können diese Schritte für kleine Umgebungen oder zu Testzwecken verwenden.

Für größere Umgebungen sollten Sie Microsoft Intune oder Microsoft Configuration Manager verwenden, um das Always On VPN-Profil auf Windows-Clientgeräten bereitzustellen. Weitere Informationen finden Sie unter Ein Always On VPN-Profil für Windows-Clients mit Microsoft Intune bereitstellen und Ein Always On VPN-Profil für Windows-Clients mit Microsoft Configuration Manager bereitstellen.

Voraussetzungen

Zum Durchführen der Schritte in diesem Tutorial benötigen Sie Folgendes:

Erstellen und Testen einer manuellen Benutzer-VPN-Verbindung

Zunächst müssen Sie eine VPN-Clientverbindung erstellen, um zu überprüfen, ob der VPN-Testclient eine erfolgreiche VPN-Verbindung herstellen kann. Mit dieser Verbindung können Sie auch die EAP-Einstellungen (Extensible Authentication Protocol) erstellen, die für die Always On VPN-Verbindung verwendet werden sollen. Weitere Informationen zu EAP-Einstellungen finden Sie in der EAP-Konfiguration.

  1. Melden Sie sich beim in die Domäne eingebundenen Windows-Clientgerät als VPN-Benutzer an, den Sie zuvor in "Active Directory-Testbenutzer erstellen" erstellt haben.

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

  3. Wählen Sie im Detailbereich die Option "VPN-Verbindung hinzufügen" aus.

  4. Wählen Sie für VPN-Anbieter Windows (integriert) aus.

  5. Geben Sie für den Verbindungsnamencontoso VPN ein.

  6. Geben Sie für Servername oder Adresse den externen vollqualifizierten Domänennamen (FQDN) Ihres VPN-Servers ein (z. B vpn.contoso.com. ).

  7. Wählen Sie für VPN-TypIKEv2 aus.

  8. Wählen Sie für den Typ der Anmeldeinformationendie Option "Zertifikat" aus.

  9. Wählen Sie "Speichern" aus.

  10. Wählen Sie unter "Verwandte Einstellungen" die Option "Adapter ändern" aus.

  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 die Datenverschlüsselung die Option "Maximale Stärke" aus.

  13. Wählen Sie "Extensible Authentication Protocol (EAP)" aus. Wählen Sie dann für die Verwendung des Extensible Authentication Protocol (EAP)Microsoft: Protected EAP (PEAP) (Verschlüsselung aktiviert) aus.

  14. Wählen Sie "Eigenschaften" aus, um geschützte EAP-Eigenschaften zu öffnen, und führen Sie die folgenden Schritte aus:

    1. Geben Sie für die Verbindung mit diesen Servern den Hostnamen Ihres NPS-Servers ein.

    2. Wählen Sie für vertrauenswürdige Stammzertifizierungsstellen die Zertifizierungsstelle aus, die das ZERTIFIKAT des NPS-Servers ausgestellt hat (z. B contoso-CA. ).

    3. Wählen Sie unter Benachrichtigungen vor dem Herstellen der Verbindung die Option Den Benutzer nicht fragen, neue Server oder vertrauenswürdige CAs zu autorisieren.

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

    5. Wählen Sie "Konfigurieren" aus.

      1. Wählen Sie auf diesem Computer ein Zertifikat verwenden aus.

      2. Geben Sie für die Verbindung mit diesen Servern den Hostnamen 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 aus.

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

      6. Wählen Sie "OK" aus, um geschützte EAP-Eigenschaften zu schließen.

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

  15. Schließen Sie das Fenster Netzwerkverbindungen.

  16. Wählen Sie unter "Einstellungen" contoso VPN und dann "Verbinden" aus. Die VPN-Verbindung sollte erfolgreich hergestellt werden. Sie können die Verbindung überprüfen, indem Sie das Fenster "Netzwerkverbindungen " überprüfen. Die Contoso-VPN-Verbindung sollte als verbunden angezeigt werden. Prüfen Sie, ob Sie eine Verbindung zu einer Ressource auf der anderen Seite des VPN-Tunnels herstellen können, wie zum Beispiel zu einer Dateifreigabe oder einem Webserver.

  17. Nachdem Sie überprüft haben, dass die VPN-Verbindung erfolgreich ist, trennen Sie die Verbindung.

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 Abschnitt 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.

Konvertieren der manuellen VPN-Verbindung in eine Always On VPN-Verbindung

Als Nächstes konvertieren Sie die manuelle VPN-Verbindung mit einem PowerShell-Skript in eine Always On VPN-Verbindung.

  1. Öffnen Sie Windows PowerShell ISE als derselbe Benutzer auf dem Windows-Clientgerät mit Administratorrechten.

  2. Kopieren Sie das folgende PowerShell-Skript, und fügen Sie es in das Windows PowerShell ISE Editorfenster ein, und ändern Sie dann unbedingt die acht Variablenwerte für Ihre eigenen.

    Erweitern Sie diesen Abschnitt, um das PowerShell-Skript anzuzeigen.
    # Set the variables for the VPN profile.
    $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 = "Always On VPN connection created successfully."
    Write-Host "$message"
    
  3. Führen Sie das Skript aus.

  4. Stellen Sie sicher, dass das Skript erfolgreich war, indem Sie den folgenden Befehl im Windows PowerShell ISE Editorfenster ausführen:

    Get-CimInstance -Namespace root\cimv2\mdm\dmmap -ClassName MDM_VPNv2_01
    

    Die Ausgabe sollte dem folgenden Beispiel ähneln (der ProfileXML Wert wird zur 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          : 
    
  5. Die Always On VPN-Verbindung sollte erstellt und erfolgreich hergestellt werden. Sie können die Verbindung überprüfen, indem Sie das Fenster "Netzwerkverbindungen " überprüfen. Die Contoso Always On VPN-Verbindung sollte als verbunden angezeigt werden. Prüfen Sie, ob Sie eine Verbindung zu einer Ressource auf der anderen Seite des VPN-Tunnels herstellen können, wie zum Beispiel zu einer Dateifreigabe oder einem Webserver.

Jetzt stellen Sie eine Verbindung mit dem VPN-Server mithilfe der Always On VPN-Verbindung her, hier sind einige zusätzliche Ressourcen, die Ihnen bei Ihrer Always On VPN-Bereitstellung helfen: