In Teil 1 dieser Serie habe ich die Infrastruktur für mein Always On VPN-Lab vorgestellt. Anschließend habe ich in Teil 2 die automatische Registrierung der Computer- und VPN Benutzerzertifikate mittels Gruppenrichtlinien konfiguriert, die empfohlenen AD-Gruppen und Zertifikatsvorlagen erstellt. Das Zertifikat für NPS Serverauthentifizierung, das IKEv2-Zertifikat und das SSL-Zertifikat für SSTP am VPN Server habe ich in Teil 3 installiert. In Teil 4 habe ich den Remote Access Server für Always on VPN installiert und konfiguriert. Die Konfiguration des NPS Servers kann man in Teil 5 nachlesen. In Teil 6 habe ich auf CLIENT01 eine VPN-Verbindung mit dem Namen Template erstellt. Augrund dieser Vorlage habe ich in Teil 7 das Always On VPN – VPN-Profil erstellt. Zum Abschluss werde ich noch den Always On VPN – Device Tunnel konfigurieren.
Mit Windows 10 1709 hat Microsoft den Device Tunnel für Always On VPN eingeführt. Damit bietet diese Lösung die gleichen Features wie DirectAccess. Der Geräte- oder Device Tunnel stellt eine Verbindung zur Domäne her, bevor sich ein Benutzer anmeldet. Das hat den Vorteil, dass keine gespeicherten Anmeldeinformationen vorhanden sein müssen. Mehr Infos zum Device Tunnel gibt es bei hier.
Voraussetzung für den Gerätetunnel ist ein Computerzertifikat mit der erweiterten Schlüsselverwendung Clientauthentifizierung (1.3.6.1.5.5.7.3.2).
Die passende Zertifikatsvorlage und die automatische Verteilung der Zertifikate habe ich in Teil 2 beschrieben.
Computerzertifikats-Authentifizierung am VPN-Server aktivieren
- Als Administrator an VPN01 anmelden
- PowerShell als Administrator starten
- Mit folgenden Befehlen die Computerzertifikats-Authentifizierung aktivieren
$VPNRootCertAuthority = "Einfaches-Netzwerk Root CA" $RootCACert = Get-ChildItem -Path cert:LocalMachine\root | Where-Object {$_.Subject -Like "*$VPNRootCertAuthority*" }) Set-VpnAuthProtocol -UserAuthProtocolAccepted Certificate, EAP -RootCertificateNameToAccept $RootCACert -PassThru
- Das Authentifizierungsprotokoll wurde erfolgreich konfiguriert
- Von VPN01 abmelden
Das Gerätetunnel VPN-Profil erstellen
USER01 ist immer noch in der lokalen Admininstratoren-Gruppen von CLIENT01.
- Als USER01 an CLIENT01 anmelden
- Sample VPN profileXML von hier nach C:\Temp\VPN_Profile_Device.xml kopieren
- Für intern.einfaches-netzwerk.at habe ich die XML-Datei wie folgt konfiguriert:
<VPNProfile> <NativeProfile> <DnsSuffix>intern.einfaches-netzwerk.at</DnsSuffix> <Servers>vpn.einfaches-netzwerk.at</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> <Route> <Address>192.168.100.0</Address> <PrefixSize>24</PrefixSize> </Route> <!-- traffic filters for the routes specified above so that only this traffic can go over the device tunnel --> <TrafficFilter> <RemoteAddressRanges>192.168.100.1-192.168.100.10</RemoteAddressRanges> </TrafficFilter> <!-- inside/outside detection --> <TrustedNetworkDetection>intern.einfaches-netzwerk.at</TrustedNetworkDetection> <!-- 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> <DomainNameInformation> <DomainName>.intern.einfaches-netzwerk.at</DomainName> <DnsServers>192.168.100.1</DnsServers> </DomainNameInformation> </VPNProfile>
- VPN_Profile_Device.ps1 von hier nach C:\Temp\VPN_Profile_Device.ps1 kopieren
Hinweis: Die beste Hilfe bei der Erstellung des Profils war für mich hier zu finden.
Das Gerätetunnel VPN-Profil installieren
- PsTools von hier herunterladen und nach C:\Temp\PsTools entpacken
- PowerShell als Administrator starten
- Mit folgendem Befehl PowerShell als SYSTEM starten
C:\Temp\PSTools\PsExec.exe -i -s C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- Die Softwarelizenz akzeptieren
- Ein weiteres PowerShell-Fenster im System-Kontext öffnet sich
- Mit folgendem Befehl das Gerätetunnel VPN-Profil installieren
cd c:\Temp .\VPN_Profile_Device.ps1 -xmlFilePath .\VPN_Profile_Device.xml -ProfilName "DeviceTunnel"
- Mit folgendem Befehl die Erstellung des Profils überprüfen
Get-VpnConnection -AllUserConnection
- Das Profil wurde erfolgreich installiert
- Der VPN Device-Tunnel ist in den Einstellungen nicht sichtbar
- Auf Adapteroptionen ändern klicken
- Hier ist auch der Device-Tunnel sichtbar
Device-Tunnel testen
- Rechner vom Intranet ins Internet verschieben
- Etwa 3 – 5 sekunden später werden beide Tunnel aufgebaut
- Wiederum der Zugriff auf interne Ressourcen
- Gruppenrichtlinienabruf
- Der Device-Tunnel hat sich in DNS registriert
- Jeder Tunnel baut für sich eine Verbindung auf, es werden zwei IP Adressen vergeben
Einen Benutzer ohne zwischengespeicherte Anmeldeinformationen testen
Der Geräte-Tunnel wird dafür benötigt, damit sich Benutzer ohne zwischengespeicherte Anmeldeinformationen über VPN anmelden können. Dafür habe ich USER02 zur AD-Gruppe VPN Benutzer hinzugefügt (siehe Teil 2).
- CLIENT01 herunterfahren und neu starten
Hinweis: Ein Neustart alleine hat nicht funktioniert. Der Rechner musste heruntergefahren und neu gestartet werden. - Als USER02 and CLIENT01 anmelden, während dieser mit dem Internet verbunden ist…
- Auch diese Verbindung funktioniert, obwohl für diesen Benutzer der UserTunnel nicht konfiguriert wurde…
In diesem Beitrag habe ich den Always On VPN – Device Tunnel konfigruiert. Das hat nicht gleich funktioniert. Am meisten beschäftigt hat mich die richtige Formatierung der VPN_Profile_Device.xml. Ich musste eine Menge recherchieren, bis der Benutzer- und Geräte-Tunnel funktioniert haben.
Leider kann der Device-Tunnel „nur“ IKEv2 ohne Fallback auf SSTP, was in Hotel-, Schnellimbiss- oder Kaffeehaus-WLANs blockiert sein könnte. Für IKEv2:
-
- IP Protocol Type=UDP, UDP Port Number=500 > Used by IKEv2 (IPSec control path)
- IP Protocol Type=UDP, UDP Port Number=4500 > Used by IKEv2 (IPSec control path)
- IP Protocol Type=ESP (value 50) > Used by IPSec data path
Der Benutzer-Tunnel dürfte kein Problem sein, weil dieser einen Fallback auf SSTP (SSL) macht. Für SSTP:
- IP Protocol=TCP, TCP Port number=443 > Used by SSTP control and data path
Always On VPN-Serie
- Teil 1: Always On VPN – Überblick
- Teil 2: Always On VPN – Verwaltung der Zertifikate
- Teil 3: Always On VPN – Serverzertifikate installieren
- Teil 4: Always On VPN – Remote Access Server konfigurieren
- Teil 5: Always On VPN – NPS Server konfigurieren
- Teil 6: Always On VPN – Windows 10 Client konfigurieren
- Teil 7: Always On VPN – VPN-Profil erstellen
- Teil 8: Always On VPN – Device Tunnel konfigurieren
Hallo Dietmar
Ich bin auf dein Blog aufmerksam geworden durch einen Kurs den wir in der Schweiz organisieren. https://www.realstuff.ch/en/always-on-vpn
„Allways On VPN mit Richard Hicks“ Kurs ist für den Sommer geplant und ich wollte wissen ob du oder vielleicht Personen aus deinem Umfeld Interesse an diesem Kurs haben könnten. Wir hätten natürlich noch Kickbacks für unsere Kurs weiter empfehlung. Lass mich doch wisse ob du Interesse hast.
Hallo Dietmar,
erstmal: Großes Dankeschön & Kompliment; – Du teilst hier dein (exaktes) Wissen so nachvollziehbar und anschaulich.
Ich hab‘ mal eine – wahrscheinlich etwas komische – Nachfrage.
Ist es nach deiner Kenntnis möglich, eine sozusagen zweistufige Always On VPN-Verbindung einzurichten?
Erst einen Device-Tunnel, und anschließend einen per NPS gesteuerten User-Tunnel?
Hintergrund: einmal soll der Windows-Client eben immer gleich im Ao-Tunnel sein, dann aber der jeweilige User mit jeweiligen Berechtigungen und Routen.