Auf Der Diskstaion

  1. "VPN Server" im Paketzentrum installieren, danach den "VPN Server" öffnen und unter "OpenVPN" den Dienst aktivieren.
    Einstellungen:
    Dynamische IP-Adresse: 10.8.0.1
    Max. Anzahl von Verbindungen: 5
    Max. Verbindungen eines Kontos: 3
    Port: 1194
    Protokoll: TCP
    Verschlüsselung: AES-256-CBC
    Authentifizierung: SHA512
    Mssfix-Optionswert: 1450
    Haken bei "Clients den Server-LAN-Zugriff erlauben"
  2. Dem entsprechenden Benutzer auf der DiskStation die Rechte geben:
    Unter "Berechntigung" einen Haken bei "OpenVPN" setzen
  3. Dann unter "OpenVPN" => "Konfigurationsdatei exportieren"

Konfigurationsdatei VPNConfig.ovpn

In der VPNConfig.ovpn die Zeile
remote YOUR_SERVER_IP 1194
anpassen in
remote 93.212.142.197 1194

In OpenVPN

Den Haken bei "Require External Certificate"entfernen.

FRITZ!Box/Router

In der FRITZ!Box/im Router eine Prtfreigabe für den Port 1194 einrichten:

Anwendung: Andere Anwendung
Bezeichnung: OpenVPN
Protokoll: TCP
Port an Gerät: 1194 bis Port 1194
Port extern gewünscht (Nur IPv4): 1194
Internetzugriff über IPv4 und IPv6

Gute Nachricht: Synology hat schon einen kostenlosen DynDNS-Dienst. Du brauchst also keinen externen Anbieter. In DSM findest du:

Systemsteuerung → Externer Zugriff → DDNS → Hinzufügen → Synology

Vorteile: Kostenlos, Zuverlässig, Sehr einfach einzurichten

Beispieladresse: andreasloewer.synology.me


Netzlaufwerke automatisch verbinden/trennen

Dieses Script unter C:\Scripts\vpn\map-drives.bat ablegen:

@echo off
setlocal EnableExtensions EnableDelayedExpansion

REM ===================== KONFIGURATION =====================

REM Script-Version (wird auch ins Log geschrieben)
set "SCRIPT_VERSION=2025-12-19.6"

REM Ziel (NAS / Server im VPN)
set "TARGET_IP=192.168.178.10"
set "DRIVE=Z:"
set "SHARE=\\192.168.178.10\Daten"

REM LOG_ENABLED: 1 = Logging aktiv, 0 = kein Logging
set "LOG_ENABLED=1"

REM LOG_VERBOSE: 1 = detaillierte Logs, 0 = nur wichtige Ereignisse
set "LOG_VERBOSE=1"

REM Log-Ziel
set "LOGDIR=C:\Scripts\vpn\log"
set "LOGFILE=%LOGDIR%\map.log"

REM =========================================================

REM ---------- Logging vorbereiten ----------
if "%LOG_ENABLED%"=="1" (
    if not exist "%LOGDIR%" mkdir "%LOGDIR%" 2>nul
)

set "TS=%date% %time%"
call :log "START Script (Version %SCRIPT_VERSION%)"

REM ---------- Ziel erreichbar? ----------
ping -n 1 "%TARGET_IP%" >nul
set "PINGRC=%ERRORLEVEL%"

if "%PINGRC%"=="0" (
    call :log "Ping OK: %TARGET_IP%"
) else (
    call :log "Ping FAIL: %TARGET_IP%"
)

REM ---------- NICHT erreichbar → Mapping trennen (robust auch bei Getrennt/Wiederverb.) ----------
if not "%PINGRC%"=="0" (

    if "%LOG_VERBOSE%"=="1" (
        call :logv "DEBUG: net use BEFORE delete"
        net use >> "%LOGFILE%" 2>&1
        call :logv "DEBUG: net use BEFORE end"
    )

    REM Immer versuchen zu löschen (auch wenn disconnected/reconnect). Wenn es nicht existiert, ist das okay.
    call :log "VPN weg -> versuche %DRIVE% zu trennen (net use /delete)"
    net use %DRIVE% /delete /y >> "%LOGFILE%" 2>&1
    set "DELRC=%ERRORLEVEL%"
    call :log "Delete versucht, ExitCode=%DELRC%"

    if "%LOG_VERBOSE%"=="1" (
        call :logv "DEBUG: net use AFTER delete"
        net use >> "%LOGFILE%" 2>&1
        call :logv "DEBUG: net use AFTER end"
    )

    REM Prüfen, ob Z: immer noch gelistet ist
    net use | findstr /I /C:" %DRIVE% " /C:"%DRIVE%        " >nul
    if "%ERRORLEVEL%"=="0" (
        call :log "WARN: %DRIVE% wird weiterhin in 'net use' gelistet (Explorer evtl. offen / Handle / Cache)."
    ) else (
        call :log "OK: %DRIVE% nicht mehr in 'net use' gelistet."
    )

    call :logv "Hinweis: Explorer ggf. aktualisieren (F5) / Fenster neu öffnen."
    goto :eof
)

REM ---------- Erreichbar → ggf. verbinden ----------
REM Wenn Z: schon existiert (auch 'Getrennt'), erst sauber entfernen, dann neu verbinden
net use | findstr /I /C:" %DRIVE% " /C:"%DRIVE%        " >nul
if "%ERRORLEVEL%"=="0" (
    call :logv "%DRIVE% ist in 'net use' vorhanden -> entferne vor Neuaufbau"
    net use %DRIVE% /delete /y >nul 2>&1
)

call :log "Verbinde %DRIVE% -> %SHARE%"
net use %DRIVE% "%SHARE%" /persistent:no >> "%LOGFILE%" 2>&1
set "NETRC=%ERRORLEVEL%"

if not "%NETRC%"=="0" (
    call :log "FAIL: net use ExitCode=%NETRC%"
    goto :eof
)

call :log "OK: %DRIVE% verbunden"
goto :eof

REM ===================== FUNKTIONEN =====================

:log
if "%LOG_ENABLED%"=="1" (
    echo [%TS%] %~1>> "%LOGFILE%"
)
exit /b

:logv
if "%LOG_ENABLED%"=="1" if "%LOG_VERBOSE%"=="1" (
    echo [%TS%] [VERBOSE] %~1>> "%LOGFILE%"
)
exit /b
map-drives.bat

damit sich dann später nicht jede Minute ein Fenster in in Windows zeigt (Eingabeaufforderung), diese über die Datei run-hidden.vbs aufrufen:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run Chr(34) & "C:\Scripts\vpn\map-drives.bat" & Chr(34), 0, False
run-hidden.vbs

Im Taskplaner anlegen

  1. Als Administrator anmelden
  2. Taskplaner (Aufgabenplanung) öffnen (taskschd.msc)
  3. Rechts unter Aktionen: "Aufgabe erstellen…" (nicht “Einfache Aufgabe"!)
  4. Tab "Allgemein":
    Name: VPN - Netzlaufwerke verbinden
    Beim Ausführen der Aufgaben folgendes Benutzerkonto verwenden: EntsprechendenBenutzerWählen (NICHT Admin)
    Haken bei “Nur ausführen, wenn der Benutzer angemeldet ist"
    KEIN Haken bei "Mit höchsten Privilegien ausführen"
    Tab "Trigger"
    Trigger 1
    Aufgabe starten: Bei Anmeldung
    Bestimmter Benutzer: EntsprechendenBenutzerWählen
    Haken bei “AKtiviert”
    Trigger 2
    Aufgabe starten: Bei Anmeldung
    Bestimmter Benutzer: EntsprechendenBenutzerWählen
    Wiederholen jede: 1 Minute für die Dauer von: Unbegrenzt
    Haken bei “Aktiviert”
    Tab “Aktionen”
    Aktion: Programm starten
    Programm/Script: C:\Windows\System32\wscript.exe
    Argumente hinzufügen (optional): "C:\Scripts\vpn\run-hidden.vbs"
    Starten in (optional): C:\Scripts\vpn
    Tab “Bedingungen”
    Alles nicht anhaken
    Tab “Einstellungen”
    Haken bei “Ausführung der Aufgabe bei Bedarf zulassen”
    Haken bei “Falls Aufgabe scheitert, neu starten alle: 1 Minute”
    Haken bei “Beenden der aktiven Aufgabe erzwingen, falls sie auf Aufforderung nicht beendet wird”
    Folgende Regel anwenden, falls die Aufgabe bereits ausgeführt wird: Keine neue Instanz starten

Namen der VPN-Schnittstelle ermitteln

# für die Datei map-drives.bat
Get-NetAdapter | Where-Object {$_.Status -eq "Up"}
PowerShell