Seite wählen

VPN-Einrichtung leicht gemacht

von | Dez 18, 2020 | NETWAYS

Ziel des IT Service Managements ist es, Nutzer*innen durch automatisierte Prozesse möglichst viel Arbeit abzunehmen. NETWAYS hat bereits vor geraumer Zeit auf die aktuelle Corona-Situation reagiert und alle Mitarbeitenden ins Home Office geschickt.

Um auch Zuhause weiterhin auf firmeninterne Adressen zugreifen zu können, ist ein VPN (Virtuelles Privates Netzwerk) nötig und die Mehrheit nutzt eine „openVPN“-Lösung, welche aufgrund unserer Netzgegebenheiten aber weniger leistungsstark, als ein „L2TP“ abschneiden kann. Um den Kolleg*innen den Umstieg von openVPN auf L2TP zu erleichtern, haben wir es uns zum Ziel gesetzt, einen automatisierten Ablauf zu schaffen, welcher dem*r User*in im Grunde genommen ermöglicht, den VPN-Zugang lediglich per „Knopfdruck“ auf dem eigenen Windows-Gerät zu installieren.

 

Die Umsetzung

Da wir uns auf einer Windows-Plattform bewegen, stand außer Frage, dass ein Powershell-Script benötigt wird, um unsere VPN-Verbindung in das System einzubinden. Microsoft bietet unter “docs.microsoft.com” eine wundervolle Dokumentation zum Thema Powershell an. Unter anderem kann man dort nach einzelnen “tags” suchen und sich die dazu passenden Funktionen samt Syntax anzeigen lassen. Und so habe ich nach kurzer Suche die Funktion “Add-VpnConnection” gefunden!

Schnell wurde mir klar, dass ich fast mein gesamtes Konzept in einer Zeile Powershell umsetzen konnte. Es ist möglich, die Funktion mit verschiedensten Parametern zu beeinflussen. Man kann zum Beispiel den Namen, Typ des VPNs, einen Pre-Shared-Key (PSK) und noch vieles mehr einbinden. Eine besondere Erwähnung meinerseits erhält an dieser Stelle der Parameter “-SplitTunneling”, welcher erlaubt, das VPN nur dann zu nutzen, wenn die Netzwerkressourcen auch wirklich benötigt werden. Beim Verbinden zu nicht-internen Internetdiensten werden die Standardrouten des Clients und Providers genutzt. Dieses Feature war für mich bei der herkömmlichen Einrichtung eines VPNs, unter der grafischen Oberfläche von Windows, nicht ersichtlich. Nachdem man die einzelnen Routen in das Script mit aufgenommen hat, funktioniert das Ganze auch problemlos.

 

Die Herausforderung

Nachdem ich das VPN Script getestet hatte und die Einrichtung ohne Hindernisse funktionierte, stellten sich mir zwei Fragen: Wie meldet sich der*die Endbenutzer*in mit seinem AD-Account in dem VPN an und wie lässt sich ein Powershellscript ausführen ohne Powershell nutzen zu müssen?

Das Problem mit dem User-Login löste sich beim Probieren von selbst: Sobald das VPN installiert ist und der*die Nutzer*in auf “Verbinden” drückt, startet Windows eine Benutzer/Passwortabfrage. Wenn man in der Funktion noch den Parameter “-RememberCredential“ implementiert hat, werden die eingegebenen Daten automatisch gespeichert und aus dem Cache entnommen.

Bei dem Ausführen der .ps1 Powershell-Datei gab es für mich nun zwei Möglichkeiten: Es gibt eine Vielzahl an Konvertern, die eine .ps1-Datei in ein .exe Format umwandeln. Dabei könnte die Datei aber durch eventuelle Fremdsysteme laufen. Da ich einen PSK zur Authentifizierung in das Script eingebunden habe, entschied ich mich gegen diese Lösung. Dafür fiel meine Wahl auf die zweite Option, nämlich eine Batch-Datei (.bat) anzulegen, mit der man die .ps1 in Powershell ausführt.

 

In der .bat-Datei selbst befinden sich drei Komponenten

Der Pfad zu Powershell, in dem unsere Datei ausgeführt werden soll:

  • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Ein Kommando zum Ausführen:

  • executionpolicy bypass

Und dieser kryptische Name:

  • %~dp0%~n0.ps1

 

Diese Bezeichnung macht das Batch-Script zu einem dynamischen Script, welches, unabhängig von Location, ausgeführt werden kann ohne im eigentlichen Script etwas ändern zu müssen.

Wir haben zwei Batch-Variablen, die wir uns dafür zu Nutze machen. Mit “%~dp0 “ sucht man im aktuellen Pfad, in welchem die Batch ausgeführt wurde, nach dem Namen, den die Batch-Datei trägt (“%~n0”) . Da ich aber nicht die Batch-Datei selber öffnen möchte, nutze ich das “.ps1 “ Anhängsel unserer Powershell-Datei.

# Batch-Script zum Ausführen
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass %~dp0%~n0.ps1

Und damit kommen wir zu den Voraussetzungen, die erfüllt sein müssen, damit die Batch- und Powershell-Datei funktionieren: Beide müssen denselben Namen tragen und sich im selben Verzeichnis befinden!

Fast geschafft! Am Ende lässt sich das Script einfach ausführen und kann – ohne weitere Eingaben in die Powershell/CMD – den VPN-Zugang anlegen. Die beiden Dateien müssten sich – wie oben beschrieben – nur im selben Pfad befinden und die Batch-Datei ausgeführt werden.

 

Das Script

#Add VPN

Add-VpnConnection -Name "L2TP-VPN" -Server_Address "Server_adresse" -TunnelType "L2tp" -EncryptionLevel "Required" -L2tpPsk "Generic_Key" -Force -RememberCredential -PassThru

#Setting Name
$MyVPNName = "L2TP-VPN"

#Call VPN via Name + SplitTunneling
Set-VpnConnection -Name $MyVPNName -SplitTunneling $TRUE;

#Routes
Add-VpnConnectionRoute -ConnectionName $MyVPNName -PassThru -DestinationPrefix IP.IP.IP.IP/Netzanteil #Beispiel-Route
André Paskowski
André Paskowski
Systems Engineer

Als Fachinformatiker für Systemintegration bei NETWAYS kann André seine Leidenschaft für Technologie voll ausleben. Vor seiner Ausbildung hat er bereits im sozialen Bereich gearbeitet und dort wertvolle Erfahrungen gesammelt. Sein beruflicher Werdegang hat ihn nicht davon abgehalten, seine großen Leidenschaften neben der Arbeit zu verfolgen: Als begeisterter Gamer findet André Entspannung und Herausforderung in virtuellen Welten, während er sich in seiner restlichen Freizeit gerne in strategischen Tabletop-Spielen verliert. Aber seine Interessen beschränken sich nicht nur auf digitale und physische Spiele. Als stolzer Besitzer von Reptilien als Haustieren ist er fasziniert von der exotischen Tierwelt und investiert viel Zeit und Sorgfalt...

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema NETWAYS

OSMC 2023 | Will ChatGPT Take Over My Job?

One of the talks at OSMC 2023 was "Will ChatGPT take over my job?" by Philipp Krenn. It explored the changing role of artificial intelligence in our lives, raising important questions about its use in software development.   The Rise of AI in Software...

Monthly Snap Februar 2024

Der Februar war ein ereignisreicher Monat bei NETWAYS! Neben dem normalen Alltag gab es auch unser Jahresmeeting, ein Spieleabend im Büro, und viele Kollegen waren auf Konferenzen und der Jobmesse in Nürnberg unterwegs. Und natürlich wurden viele Blogposts zu...