Wireguard und RDP-Skript
Hallo in die Runde,
einige werden jetzt lachen - aber ich gstell mich mal wieder a wegn, (auch) was Skripte und dergleichen angeht. Ich bin dafür ganz offenbar etwas "zu schludrig"
Vielleicht wollt Ihr mir ja trotzdem helfen:
Situation:
Windows 10 Laptop als
Wireguard-Client mit
RDP-Zugriff
Nutzer ist kein Admin(!)
Ziel:
"Butten" auf dem Desktop, welcher "gleichzeitig" VPN und die RDP-Verbindung nach einem Doppelklick aufbaut.
Bisher hatte ich das mit einer L2TP-Verbindung und dem folgenden Script recht userfreundlich hinbekommen:
Allerdings ist ja Wireguard nicht im Windows-VPN-Setup hinterlegt und außerdem scheint es Zugriffsprobleme zu geben, weil sich die Wireguard-Verbindung nur als Admin herstellen lässt?!
Könnte man das Skript für diese Umstände modifizieren? Und wenn ja, wie ;)
Vielen DANK im Voraus!
einige werden jetzt lachen - aber ich gstell mich mal wieder a wegn, (auch) was Skripte und dergleichen angeht. Ich bin dafür ganz offenbar etwas "zu schludrig"
Vielleicht wollt Ihr mir ja trotzdem helfen:
Situation:
Windows 10 Laptop als
Wireguard-Client mit
RDP-Zugriff
Nutzer ist kein Admin(!)
Ziel:
"Butten" auf dem Desktop, welcher "gleichzeitig" VPN und die RDP-Verbindung nach einem Doppelklick aufbaut.
Bisher hatte ich das mit einer L2TP-Verbindung und dem folgenden Script recht userfreundlich hinbekommen:
@echo off
:: Connecting to VPN...
rasdial "Strato_xyz" user pass
echo Running RDP...
"C:\Users\xxx\Documents\Remote\Strato.rdp"
echo Finished - disconnecting from VPN...
rasdial "Strato_xyz" /disconnect
Allerdings ist ja Wireguard nicht im Windows-VPN-Setup hinterlegt und außerdem scheint es Zugriffsprobleme zu geben, weil sich die Wireguard-Verbindung nur als Admin herstellen lässt?!
Könnte man das Skript für diese Umstände modifizieren? Und wenn ja, wie ;)
Vielen DANK im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 603185
Url: https://administrator.de/contentid/603185
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
9 Kommentare
Neuester Kommentar
Installiere den Wireguard-Tunnel mit der gewünschten CONF Datei als Dienst (s. Kommandozeilenoptionen), in einer administrativen CMD
Stelle die Startart des Dienstes dann auf "manuell". Dann vergibst du dem User Rechte zum Starten und Stoppen des Dienstes, und schon kannst du mit einem niedrig privilegierten User den Dienst via
Wie man Rechte granular an User für Dienste vergibt kannst du hier nachlesen
Windows 2019 Server Berechtigungen für das starten und stoppen von Diensten vergeben
wireguard /installtunnelservice "D:\Pfad\mytunnel.conf"
net start WireguardTunnel$mytunnel
starten und auch stoppen net stop WireguardTunnel$mytunnel
.Wie man Rechte granular an User für Dienste vergibt kannst du hier nachlesen
Windows 2019 Server Berechtigungen für das starten und stoppen von Diensten vergeben
Servus,
so wie @145916 es erwähnt hat habe ich das auch schon ein paar mal durchgeführt. Habe dir mal schnell eine Batch-Datei zum Einrichten des Tunnel-Dienstes geschrieben die du einmalig als Admin ausführst. Der Pfad für eine *.conf Datei deines Tunnels fragt dich die Batch ab. Die Config-Datei darf dabei nicht die verschlüsselte Variante aus dem Programm-Verzeichnis sein sondern eine Klartext-Config die man in irgendeinem einem Verzeichnis seiner Wahl platziert. Diese darf anschließend auch nicht gelöscht werden da der Dienst auf diesen Pfad verweist und darauf angewiesen ist.
Danach kannst du als normaler User auf dem Rechner mit (Tunnelname ist per Default der Basename der Configdatei, bei einer Datei namens "MeinTunnel.conf" also "MeinTunnel")
den Tunnel starten und mit
den Tunnel wieder stoppen und diese Befehle in deine Batchdatei oben einbauen.
Um den Tunneldienst wieder zu löschen einfach folgenden Befehl in einer elevated CMD absetzen (Tunnelname wieder anpassen):
Grüße Uwe
so wie @145916 es erwähnt hat habe ich das auch schon ein paar mal durchgeführt. Habe dir mal schnell eine Batch-Datei zum Einrichten des Tunnel-Dienstes geschrieben die du einmalig als Admin ausführst. Der Pfad für eine *.conf Datei deines Tunnels fragt dich die Batch ab. Die Config-Datei darf dabei nicht die verschlüsselte Variante aus dem Programm-Verzeichnis sein sondern eine Klartext-Config die man in irgendeinem einem Verzeichnis seiner Wahl platziert. Diese darf anschließend auch nicht gelöscht werden da der Dienst auf diesen Pfad verweist und darauf angewiesen ist.
@echo off
:: restart elevated if needed
net session >nul 2>&1 || (powershell -EP Bypass -NoP -C start "%~0" -verb runas &exit /b)
:: read config path from user
set /p "tunnelconfig=Please enter the absolute path to the wireguard *.conf file: "
:: check path existance
if not exist "%tunnelconfig%" (
echo ERROR Invalid path to config file!
timeout /t 3
exit /b 1
)
:: get tunnel name from config file name, filename without extension
for /f "delims=" %%a in ("%tunnelconfig%") do set "tunnelname=%%~na"
echo Creating tunnel service with name "WireguardTunnel$%tunnelname%"
"C:\Program Files\wireguard\wireguard.exe" /installtunnelservice "%tunnelconfig%"
echo Setting service permissions for local "Users" group to allow service start/stop
sc sdset "WireguardTunnel$%tunnelname%" "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CRRPRCWPDT;;;BU)"
echo Setting service start mode to manual
sc config "WireguardTunnel$%tunnelname%" start= demand
echo.
timeout /t 3
net start WireguardTunnel$tunnelname
den Tunnel starten und mit
net stop WireguardTunnel$tunnelname
den Tunnel wieder stoppen und diese Befehle in deine Batchdatei oben einbauen.
Um den Tunneldienst wieder zu löschen einfach folgenden Befehl in einer elevated CMD absetzen (Tunnelname wieder anpassen):
"C:\Program Files\wireguard\wireguard.exe" /uninstalltunnelservice <TUNNELNAME>
Grüße Uwe
Servus @ZappBrannigen!
Nur zur Info: Nach dem Einrichten ist der Tunnel nicht in der GUI sichtbar! Dieser ist dann nur als Dienst verwendbar/start-/stopbar und läuft unsichtbar im Hintergrund. Automatische Start und Stop kann dann über die Dienste-Verwaltung eingestellt werden.
Btw. eine generelle Aussage wie "funktioniert nicht" ohne irgendwelche handfesten Fehlermeldungen oder eigene Vorgehensweise wie übergebene Parameter etc. zu nennen ist ehrlich gesagt eine Schande wenn man sowas in einem Admin-Forum postet .
Grüße Uwe
Zitat von @ZappBrannigen:
Ich krame das mal raus: leider funktioniert das Skript so nicht (mehr), weder auf Windows 10 prof. noch 11 prof.
Hat sich hier etwas geändert?
Gerade nochmal verifiziert, läuft unter Windows 10 und 11 einwandfrei mit der aktuellen Wireguard Version v0.5.3!Ich krame das mal raus: leider funktioniert das Skript so nicht (mehr), weder auf Windows 10 prof. noch 11 prof.
Hat sich hier etwas geändert?
Nur zur Info: Nach dem Einrichten ist der Tunnel nicht in der GUI sichtbar! Dieser ist dann nur als Dienst verwendbar/start-/stopbar und läuft unsichtbar im Hintergrund. Automatische Start und Stop kann dann über die Dienste-Verwaltung eingestellt werden.
Btw. eine generelle Aussage wie "funktioniert nicht" ohne irgendwelche handfesten Fehlermeldungen oder eigene Vorgehensweise wie übergebene Parameter etc. zu nennen ist ehrlich gesagt eine Schande wenn man sowas in einem Admin-Forum postet .
Grüße Uwe
Okay, Schande über mich. Ich hatte damit gerechnet: "Ja, das funktioniert nicht mehr aus dem und dem Grund seit Windows-Update XXXX".
Ich habe es auf verschiedenen Rechnern probiert.
Mal lief das Skript erfolgreich durch, mal mit dieser Meldung:
C:\temp\ file:WG-Startup.conf
Creating tunnel service with name "WireguardTunnel$WG-Startup"
Setting service permissions for local "Users" group to allow service start/stop
[SC] SetServiceObjectSecurity ERFOLG
Setting service start mode to manual
[SC] OpenService FEHLER 1060:
Der angegebene Dienst ist kein installierter Dienst.
Drücken Sie eine beliebige Taste . . .
Wenn ich den Dienst starten will, bekomme ich diesen Fehler:
C:\Users\Administrator\Documents>net start WireguardTunnel$WG-Startup
WireGuard Tunnel: WG-Startup wird gestartet.
WireGuard Tunnel: WG-Startup konnte nicht gestartet werden.
Ein dienstspezifischer Fehler ist aufgetreten: 2.
Sie erhalten weitere Hilfe, wenn Sie NET HELPMSG 3547 eingeben.
C:\Users\Administrator\Documents>Pause
Drücken Sie eine beliebige Taste . . .
Ich habe es auf verschiedenen Rechnern probiert.
Mal lief das Skript erfolgreich durch, mal mit dieser Meldung:
C:\temp\ file:WG-Startup.conf
Creating tunnel service with name "WireguardTunnel$WG-Startup"
Setting service permissions for local "Users" group to allow service start/stop
[SC] SetServiceObjectSecurity ERFOLG
Setting service start mode to manual
[SC] OpenService FEHLER 1060:
Der angegebene Dienst ist kein installierter Dienst.
Drücken Sie eine beliebige Taste . . .
Wenn ich den Dienst starten will, bekomme ich diesen Fehler:
C:\Users\Administrator\Documents>net start WireguardTunnel$WG-Startup
WireGuard Tunnel: WG-Startup wird gestartet.
WireGuard Tunnel: WG-Startup konnte nicht gestartet werden.
Ein dienstspezifischer Fehler ist aufgetreten: 2.
Sie erhalten weitere Hilfe, wenn Sie NET HELPMSG 3547 eingeben.
C:\Users\Administrator\Documents>Pause
Drücken Sie eine beliebige Taste . . .
C:\temp\ file:WG-Startup.conf
Das ist kein vollständiger absoluter Pfad, das ist aber zwingend Voraussetzung.Genauso darf das File nicht nur temporär abgelegt werden sondern in einem Pfad der für den Dienst immer erreichbar sein muss! Denn fehlt die CONF-Datei an dem angegebenen Pfad startet der Dienst nicht mehr!
Die conf liegt nachwievor im Ordner, aber stimmt, optimal ist der nicht.
Jetzt muss ich aber mal blöd fragen, wie genau ich den Pfad dort eingeben muss.
Ich hatte es mit Pfad+Dateiname mit Endung zuerst probiert, da ging gar nichts. Da dachte ich wenn "file:" erscheint muss ich den Filenamen eintippen und bestätigen.
Heißt das, ich gebe den Pfad mit Datei an und muss den Dateiname danach nochmal eintippen?
Jetzt muss ich aber mal blöd fragen, wie genau ich den Pfad dort eingeben muss.
Ich hatte es mit Pfad+Dateiname mit Endung zuerst probiert, da ging gar nichts. Da dachte ich wenn "file:" erscheint muss ich den Filenamen eintippen und bestätigen.
Heißt das, ich gebe den Pfad mit Datei an und muss den Dateiname danach nochmal eintippen?
Zitat von @ZappBrannigen:
Jetzt muss ich aber mal blöd fragen, wie genau ich den Pfad dort eingeben muss.
Ich hatte es mit Pfad+Dateiname mit Endung zuerst probiert, da ging gar nichts. Da dachte ich wenn "file:" erscheint muss ich den Filenamen eintippen und bestätigen.
Dem kompletten absoluten Pfad zur Config-Datei, also bspw.Jetzt muss ich aber mal blöd fragen, wie genau ich den Pfad dort eingeben muss.
Ich hatte es mit Pfad+Dateiname mit Endung zuerst probiert, da ging gar nichts. Da dachte ich wenn "file:" erscheint muss ich den Filenamen eintippen und bestätigen.
C:\configs\myTunnel.conf
Heißt das, ich gebe den Pfad mit Datei an und muss den Dateiname danach nochmal eintippen?
Willst du keine manuelle Abfrage vom Skript kannst du die Abfrage auch einfach durch eine feste Definition des Pfades ersetzen in dem du Zeile 5 des Skriptes hiermit ersetzt
set "tunnelconfig=C:\configs\myTunnel.conf"