WireGuard-VPN beim Start von Windows automatisch verbinden


    Tags: ,

    WireGuardWindows-Clients bauen eine VPN-Verbindung normaler­weise manuell nach dem Anmelden des Benutzers auf. Dies wirkt sich in einer AD-Domäne nach­teilig auf Drive-Mappings und beim Wechsel von Pass­wörtern aus. WireGuard bietet als System­dienst aber die Möglich­keit, die VPN-Verbindung beim System­start automatisch herzustellen.

    Die Arbeitsschritte in diesem Beitrag müssen mit Administrator­rechten vorgenommen werden. Es gibt zwar einige Workarounds, bei denen man mit den Berechtigungen eines Standardbenutzers auskommt, aber diese funktionieren in den meisten Fällen nicht zuverlässig.

    WireGuard-Client einrichten

    Wenn man für die Installation die MSI-Datei verwendet, dann lässt sich das Setup vollständig automatisieren, zum Beispiel über PowerShell:

    Start-Process msiexec.exe -ArgumentList "/q", "/I", `
    "wireguard-amd64-0.5.4.msi" -Wait -NoNewWindow -PassThru | Out-Null

    Der standardmäßig vorhandene WireGuard Manager Service lässt sich an dieser Stelle ebenfalls gleich deinstallieren:

    Start-Process "C:\Program Files\WireGuard\wireguard.exe" `
    -ArgumentList "/uninstallmanagerservice" `
    -Wait -NoNewWindow -PassThru | Out-Null

    Danach erstellt man die Konfigurationsdatei für den Client, die man am Endgerät importiert. Anschließend kann man über die Schaltfläche Aktivieren eine Verbindung herstellen. Gelingt das, ist die Konfiguration korrekt. Das ist eine wichtige Voraussetzung, um den Verbindungsaufbau zu automatisieren.

    WireGuard hat hier nach dem Import der Konfigurationsdatei erfolgreich einen VPN-Tunnel aufgebaut.

    Parallel dazu erkennt man die erfolgreiche Verbindung am WireGuard-Icon im System-Tray. Hier wird die verwendete Konfigurationsdatei angezeigt.

    In den Einstellungen der Netzwerkadapter von Windows 10 / 11 erscheint außerdem eine neue Netzwerk­verbindung, die den Namen der WireGuard-Konfigurationsdatei trägt.

    In Windows ist nach dem Import der WireGuard-Konfigurationsdatei eine neue Netzwerkverbindung für das VPN verfügbar.

    Bei der Deaktivierung des Tunnels verschwindet die Verbindung wieder. Diese Aspekte sollte man vor der Automatisierung von VPN-Verbindungen über­prüfen.

    Die Konfigurations­datei lässt sich anschließend recht einfach über einen Text-Editor bearbeiten. Sie ist folgender­maßen aufgebaut:

    WireGuard per Script steuern: wg.exe und wireguard.exe

    Im Installations­verzeichnis von WireGuard befindet sich das Dienstprogramm wg.exe, mit dem sich WireGuard weitgehend automatisieren lässt. Beim Aufruf ohne Parameter zeigt das Tool die aktuelle Konfiguration und den Zeitpunkt der letzten Verbindung an.

    Wireguard lässt sich mit wg.exe auf der Befehlszeile und über für Scripts steuern.

    Eine ausführliche Hilfe zu allen Optionen des Utilities erhält man mit

    wg.exe --help

    Es ist aber auch möglich, wireguard.exe selbst zu automatisieren, zum Beispiel über PowerShell. Auch hier kann man alle unterstützten Schalter mit

    wireguard.exe --help

    anzeigen.

    Systemdienst für WireGuard-Verbindungen erstellen

    Um eine Konfiguration als Systemdienst zu einzurichten, führt man folgenden PowerShell-Befehl aus:

    Start-Process 'C:\Program Files\WireGuard\wireguard.exe' `
    -ArgumentList '/installtunnelservice', 'wireguard.conf' `
    -Wait -NoNewWindow -PassThru | Out-Null

    Start-Process sc.exe -ArgumentList 'config', `
    'WireGuardTunnel$wireguard',start= delayed-auto' `
    -Wait -NoNewWindow -PassThru | Out-Null

    Start-Service -Name WireGuardTunnel$wireguard `
    -ErrorAction SilentlyContinue

    Dabei erzeugt WireGuard einen Systemdienst mit der Bezeichnung "WireGuard Tunnel:<Name>". Der Name entspricht der Konfigurations­datei ohne die Endung *.conf. Er kann je nach Umgebung verschieden sein.

    Autostart von WireGuard-VPNs über den Aufgabenplaner

    Um eine Verbindung vor der Anmeldung eines Benutzers aufzubauen, startet man ein WireGuard-VPN über den Aufgabenplaner. Dort kann man die Anmeldedaten für einen administrativen Nutzer hinterlegen.

    Dazu öffnet man taskschd.msc und startet den Assistenten über Einfache Aufgabe erstellen. Als Name für die Aufgabe wählt man zum Beispiel WireGuard-VPN.

    Einfache Aufgabe für das Erstellen eines WireGuard-Systemdienstes erstellen

    Als Auslöser für die Aufgabe nimmt man die Option Beim Start des Computers. Für Aktion wählt man Programm starten aus und als Programm trägt man

    "C:\Programme\WireGuard\Wireguard.exe"

    ein. Bei Argumente hinzufügen gibt man die folgende Zeile ein:

    /installtunnelservice "C:\Programm\Wireguard\vpn2.conf"

    Pfad und Name hängen natürlich von der tatsächlich verwendeten Datei ab.

    Konfigurieren einer geplanten Aufgabe für den automatischen Start von WireGuard

    Vor dem Speichern der Aufgabe aktiviert man noch die Option Beim Klicken auf "Fertig stellen", die Eigenschaften für diese Aufgabe öffnen.

    Fertigstellen der Aufgabe zum automatischen Start von WireGuard beim Booten von Windows 10 / 11

    Damit die geplante Aufgabe funktioniert, muss in ihren Einstellungen die Option Mit höchsten Privilegien aktiviert sein.

    Aufgabe für den automatischen Start von WireGuard auf einem PC oder Server anpassen.

    Nach einem Neustart sollte der Systemdienst vorhanden sein und automatisch starten.

    Zusammenfassung

    Anstatt den VPN-Tunnel manuell durch den Benutzer aufbauen zu lassen, kann man Wireguard als Systemdienst einrichten und die Verbindung über eine geplante Aufgabe automatisch bei Systemstart herstellen.

    Dies bietet bei Rechnern, die Mitglied in einer Domäne sind, erhebliche Vorteile bei der zentralen Verwaltung, etwa bei der Zuordnung von Netzlaufwerken oder der Ausführung von Login-Scripts. Außerdem kann man die üblichen VPN-Schwierigkeiten bei abgelaufenen Passwörtern vermeiden.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Thomas Joos

    Thomas Joos ist Consultant für mittlere und große Unternehmen im Bereich Security, Active Directory, Cloud und KI.

    Er hat über 100 Fachbücher zu IT-Themen für verschiedene Verlage geschrieben und veröffentlicht regelmäßig bei verschiedenen Portalen und Zeitschriften wie IT-Administrator, Computerwoche, Heise und vielen weiteren.

    Darüber hinaus ist er als Trainer für LinkedIn Learning tätig.

    // Kontakt: Web, E-Mail, Twitter //

    Verwandte Beiträge

    Weitere Links

    7 Kommentare

    Hallo zusammmen,

    sind Sie sicher, dass die Einstellung im vorletzten Screenshot "Nur ausführen, wenn Benutzer angemeldet ist" korrekt ist?

    Viele Grüße,
    Armin

    Bild von Thomas Joos

    Hallo Armin,

    Du kannst auch die andere Einstellung verwenden, dass die Anmeldung komplett ohne Benutzer stattfinden. Das hängt von der jeweiligen Umgebung ab.

    Gruss

    Thomas Joos

    Bild von Wolfgang Sommergut

    Wie kann die VPN-Verbindung vor der Anmeldung des Benutzers aufgebaut werden, wenn die Aufgabe im Kontext des Users laufen muss?

    Bild von Thomas Joos

    Der Fokus dabei ist vor allem, dass der Verbindungsaufbau automatisiert stattfindet, nicht unbedingt, dass kein Benutzer angemeldet ist. Der Benutzer hat dann eine funktionierende Netzwerkverbindung, ohne dass er etwas konfigurieren oder starten muss. 

    Ich konnte Wireguard so automatisieren. Leider muss ich dies wieder Rückgängig machen. Somit Aufgabe aus der Aufgabenplanung gelöscht. Trotzdem startet Wireguard automatisch weiterhin bei jedem start von windows den VPN Tunnel. Was kann ich tun ?

    Hallo ans Team,
    mit Freude bin ich auf dieses Thema gestoßen. Ich habe auch gleich meine VPN an mein privates Netzwerk als Dienst nach dem obigen Script installiert.
    Doch leider muss ich das wieder rückgängig machen, da ein anderer User am PC eine andere VPN mittels anderer Software aufbauen muss um remote arbeiten zu können.
    Daher nun meine Frage: welches Script muss ich in PowerShell eingeben um den Wireguard-Dienst wieder zu löschen / deinstallieren???
    Vielen Dank vorab für Eure ausführliche Antwort.
    Herzliche Grüße
    Jörg

    Bild von Wolfgang Sommergut

    Diese zwei PowerShell-Befehle sollten den Service anhalten und deaktivieren:

    Stop-Service -Name 'WireGuardTunnel$wireguard' -Force

    Set-Service -StartupType Disabled `
    -Name 'WireGuardTunnel$wireguard'

    Man muss sie in einer Session mit erhöhten Rechten ausführen.