# WireGuard Service Installer und VPNTray - Ausführliche Konfigurationsdokumentation ## Inhaltsverzeichnis 1. [Überblick](#überblick) 2. [Systemvoraussetzungen](#systemvoraussetzungen) 3. [Installation mit wireguard_service_installer.cmd](#installation-mit-wireguard_service_installercmd) 4. [VPNTray.ini Konfiguration](#vpntrayini-konfiguration) 5. [Check-Typen und deren Konfiguration](#check-typen-und-deren-konfiguration) 6. [Verfügbare Variablen](#verfügbare-variablen) 7. [Erweiterte Konfigurationsbeispiele](#erweiterte-konfigurationsbeispiele) 8. [Troubleshooting](#troubleshooting) --- ## Überblick Dieses Projekt von [bashclub/Wireguard-Installer-and-Tray](https://github.com/bashclub/Wireguard-Installer-and-Tray) bietet eine vollständige Lösung zur Installation und Verwaltung von WireGuard VPN-Verbindungen unter Windows mit folgenden Komponenten: - **wireguard_service_installer.cmd**: Automatisiertes Installationsskript - **WireGuardMon**: Überwachungsdienst für WireGuard-Tunnel - **VPNTray**: System-Tray-Anwendung mit Statusanzeige und Verbindungstests - **VPNTray.ini**: Konfigurationsdatei für das Tray-Icon und Checks --- ## Systemvoraussetzungen - **Betriebssystem**: Windows 10/11 - **Rechte**: Administratorrechte erforderlich - **Software**: - winget (Windows Package Manager) - WireGuard (wird automatisch installiert) - Microsoft Visual C++ Redistributable 2015+ (wird automatisch installiert) --- ## Installation mit wireguard_service_installer.cmd ### Funktionsweise des Installers Das Skript `wireguard_service_installer.cmd` automatisiert die komplette Installation und Konfiguration von WireGuard als Windows-Dienst. ### Verwendung ```cmd wireguard_service_installer.cmd ``` **Beispiel:** ```cmd wireguard_service_installer.cmd C:\Users\Username\Downloads\wg0.conf ``` ### Was das Skript macht #### 1. **UAC-Elevation (Administratorrechte)** ```batch >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" ``` - Prüft, ob das Skript mit Administratorrechten läuft - Fordert bei Bedarf automatisch erhöhte Rechte an - Erstellt temporäres VBScript für UAC-Prompt #### 2. **Parameter-Validierung** - Prüft, ob eine WireGuard-Konfigurationsdatei als Parameter übergeben wurde - Validiert, ob die angegebene Datei existiert - Bricht mit Fehlermeldung ab, wenn Parameter fehlen oder ungültig sind #### 3. **WireGuard Installation** ```batch winget install --id WireGuard.WireGuard --silent --accept-package-agreements --accept-source-agreements ``` - Installiert WireGuard über winget - Verwendet Silent-Installation (keine Benutzerinteraktion) - Akzeptiert automatisch alle Lizenzbedingungen #### 4. **Visual C++ Redistributable Installation** ```batch winget install --id Microsoft.VCRedist.2015+.x64 --accept-package-agreements --accept-source-agreements ``` - Installiert erforderliche Runtime-Bibliotheken - Notwendig für VPNTray und WireGuardMon #### 5. **Konfigurationsverzeichnis erstellen** ```batch set "CONFIG_DIR=%PROGRAMFILES%\WireGuard\config" mkdir "%CONFIG_DIR%" ``` - Erstellt Verzeichnis: `C:\Program Files\WireGuard\config` - Hier wird die WireGuard-Konfiguration gespeichert #### 6. **Sicherheitsberechtigungen setzen** ```batch icacls "%CONFIG_DIR%" /inheritance:d icacls "%CONFIG_DIR%" /grant:r "Administratoren:(OI)(CI)F" icacls "%CONFIG_DIR%" /grant:r "SYSTEM:(OI)(CI)F" icacls "%CONFIG_DIR%" /remove "Benutzer" icacls "%CONFIG_DIR%" /remove "Authentifizierte Benutzer" ``` - **Entfernt Vererbung** von übergeordneten Ordnern - **Gewährt Vollzugriff** nur für: - Administratoren - SYSTEM-Konto - **Entfernt Zugriff** für: - Normale Benutzer - Authentifizierte Benutzer - **Flags**: - `(OI)` = Object Inherit (Objekt-Vererbung) - `(CI)` = Container Inherit (Container-Vererbung) - `F` = Full Control (Vollzugriff) #### 7. **Konfigurationsdatei kopieren** ```batch copy "%CONFIG_FILE%" "%WG_CONFIG%" ``` - Kopiert die übergebene WireGuard-Konfiguration nach: - `C:\Program Files\WireGuard\config\wg0.conf` - Der Name `wg0.conf` definiert den Tunnel-Namen als `wg0` #### 8. **WireGuard Tunnel Service installieren** ```batch "%PROGRAMFILES%\WireGuard\wireguard.exe" /installtunnelservice "%WG_CONFIG%" ``` - Installiert WireGuard als Windows-Dienst - Dienstname: `WireGuardTunnel$wg0` - Startet automatisch beim Systemstart #### 9. **Service-Berechtigungen anpassen** ```batch sc sdset "WireGuardTunnel$wg0" "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;RPWPDTRCWD;;;AU)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)" ``` - Setzt SDDL (Security Descriptor Definition Language) für den Dienst - Erlaubt authentifizierten Benutzern, den Dienst zu starten/stoppen #### 10. **Zusätzliche Dateien kopieren** ```batch copy "%SCRIPT_DIR%wireguardmon.exe" "%WG_DIR%\" copy "%SCRIPT_DIR%VPNTray.exe" "%WG_DIR%\" copy "%SCRIPT_DIR%VPNTray.ini" "%WG_DIR%\" ``` - Kopiert alle Komponenten nach `C:\Program Files\WireGuard\` #### 11. **WireGuardMon installieren und starten** ```batch wireguardmon.exe --install net start wireguardmon ``` - Installiert WireGuardMon als Windows-Dienst - Startet den Überwachungsdienst - Erstellt ITC-Datei (Inter-Thread Communication) für VPNTray #### 12. **Autostart für VPNTray einrichten** ```batch reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "VPNTray" /t REG_SZ /d "\"%WG_DIR%\VPNTray.exe\"" /f ``` - Fügt Registry-Eintrag hinzu - VPNTray startet automatisch bei Benutzeranmeldung - Startet VPNTray sofort nach Installation ### Installationsablauf - Schritt für Schritt 1. **Vorbereitung** - WireGuard-Konfigurationsdatei (`.conf`) bereitstellen - Als Administrator anmelden oder UAC-Berechtigung erteilen können 2. **Installation starten** ```cmd wireguard_service_installer.cmd C:\Pfad\zu\ihrer\config.conf ``` 3. **Bestätigung** - Skript zeigt: "Es wird ein Wireguard Service eingerichtet" - Mit `Enter` bestätigen oder mit `Strg+C` abbrechen 4. **Automatische Installation** - WireGuard wird installiert - Visual C++ Redistributable wird installiert - Konfiguration wird kopiert und gesichert - Dienste werden eingerichtet 5. **Abschluss** - VPNTray startet automatisch - Tray-Icon erscheint in der Taskleiste - WireGuard-Verbindung ist aktiv --- ## VPNTray.ini Konfiguration Die Datei `VPNTray.ini` steuert das Verhalten und Aussehen der VPNTray-Anwendung. ### Dateistruktur ```ini [General] # Allgemeine Einstellungen [Theme] # Farbschema (nur bei Theme=Custom) [Wireguardmon] # WireGuardMon-Einstellungen [CheckX] # Check-Definitionen (X = 1, 2, 3, ...) ``` ### [General] Sektion #### ITC (Inter-Thread Communication) ```ini #ITC=C:\Program Files\WireGuard\wireguardmon.itc ``` - **Zweck**: Pfad zur Statusdatei von WireGuardMon - **Standard**: Gleiches Verzeichnis wie VPNTray.exe - **Verwendung**: Nur ändern, wenn WireGuardMon an anderem Ort installiert ist #### Disabled ```ini #Disabled=wg1,wg2 ``` - **Zweck**: Schließt WireGuard-Tunnel von der Überwachung aus - **Format**: Kommagetrennte Liste von Tunnel-Namen - **Beispiel**: `Disabled=wg1,wg2,wg_backup` - **Anwendungsfall**: Wenn mehrere Tunnel konfiguriert sind, aber nur bestimmte überwacht werden sollen #### Theme ```ini Theme=Auto ``` - **Optionen**: - `Auto` - Folgt Windows-Systemeinstellung (Hell/Dunkel) - `Dark` - Dunkles Design - `Light` - Helles Design - `Custom` - Benutzerdefiniert (verwendet [Theme]-Sektion) #### AutoClose ```ini AutoClose=15 ``` - **Zweck**: Automatisches Schließen des Fensters - **Einheit**: Sekunden - **Werte**: - `0` = Deaktiviert (Fenster bleibt offen) - `>0` = Sekunden bis zum automatischen Schließen - **Empfehlung**: 10-30 Sekunden für Support-Szenarien #### AutoDisconnect ```ini #AutoDisconnect=DOMAIN #AutoDisconnect=IP:10.11.12.128/25,IP:192.168.178.0/24,DNS:mydomain.local ``` - **Zweck**: Automatisches Trennen der VPN-Verbindung bei bestimmten Netzwerken - **Optionen**: - `DOMAIN` - Trennt, wenn Computer in Domäne eingebunden ist - `IP:x.x.x.x/xx` - Trennt bei bestimmtem IP-Bereich (CIDR-Notation) - `DNS:domain.local` - Trennt bei bestimmter DNS-Suffix - **Mehrere Bedingungen**: Kommagetrennt - **Anwendungsfall**: VPN automatisch deaktivieren, wenn im Firmennetzwerk #### PowerMode ```ini #PowerMode=0 ``` - **Zweck**: Aktiviert Energiespar-Checks auch bei geschlossener UI - **Werte**: - `0` = Deaktiviert - `1` = Aktiviert (Traffic-Monitoring läuft im Hintergrund) - **Hinweis**: Erhöht CPU-Last minimal ### [Wireguardmon] Sektion ```ini #[Wireguardmon] #POLL_TIME=30 #STEMP_MS=500 ``` #### POLL_TIME - **Zweck**: Intervall für Statusabfragen - **Einheit**: Sekunden - **Standard**: 30 Sekunden - **Empfehlung**: 15-60 Sekunden (niedrigere Werte = höhere CPU-Last) #### STEMP_MS - **Zweck**: Zeitstempel-Präzision - **Einheit**: Millisekunden - **Standard**: 500 ms - **Verwendung**: Für präzise Traffic-Messungen ### [Theme] Sektion Nur aktiv bei `Theme=Custom` in [General]. ```ini [Theme] WindowBackgroundBrush=#FF252525 ItemCardBackgroundBrush=#FF3C3C3C ItemHoverBackgroundBrush=#1AFFFFFF SeparatorBrush=#FF555555 PrimaryTextBrush=#FFFFFFFF SecondaryTextBrush=#FFB0B0B0 ShadowColor=Black ``` #### Farbformat - **Format**: `#AARRGGBB` (Hex) - `AA` = Alpha (Transparenz): 00 (transparent) - FF (opak) - `RR` = Rot: 00-FF - `GG` = Grün: 00-FF - `BB` = Blau: 00-FF #### Farbelemente | Element | Beschreibung | Standard (Dark) | |---------|--------------|-----------------| | `WindowBackgroundBrush` | Hauptfenster-Hintergrund | `#FF252525` (Dunkelgrau) | | `ItemCardBackgroundBrush` | Hintergrund der Check-Karten | `#FF3C3C3C` (Mittelgrau) | | `ItemHoverBackgroundBrush` | Hover-Effekt bei Mauszeiger | `#1AFFFFFF` (Leicht transparent weiß) | | `SeparatorBrush` | Trennlinien | `#FF555555` (Grau) | | `PrimaryTextBrush` | Haupttext | `#FFFFFFFF` (Weiß) | | `SecondaryTextBrush` | Sekundärtext (Details) | `#FFB0B0B0` (Hellgrau) | | `ShadowColor` | Schatten | `Black` | **Beispiel für helles Theme:** ```ini Theme=Custom [Theme] WindowBackgroundBrush=#FFFFFFFF ItemCardBackgroundBrush=#FFF0F0F0 ItemHoverBackgroundBrush=#1A000000 SeparatorBrush=#FFCCCCCC PrimaryTextBrush=#FF000000 SecondaryTextBrush=#FF666666 ShadowColor=#33000000 ``` --- ## Check-Typen und deren Konfiguration Jeder `[CheckX]`-Abschnitt definiert eine Zeile im VPNTray-Fenster. ### Allgemeine Check-Parameter Alle Check-Typen unterstützen diese Parameter: ```ini [CheckX] Name=Anzeigename Data=Daten für den Check Type=Check-Typ Hidden=True/False Click=Pfad zur Datei DblClick=Pfad zur Datei CmdArguments=Argumente für Click/DblClick ``` #### Name - **Zweck**: Angezeigter Titel in der UI - **Unterstützt**: Variablen (siehe [Verfügbare Variablen](#verfügbare-variablen)) - **Beispiel**: `Name=Router ($LAN_GW$)` #### Data - **Zweck**: Daten für den Check (IP, URL, etc.) - **Unterstützt**: Variablen - **Beispiel**: `Data=$WG0_SERVER_IP$` #### Type - **Zweck**: Definiert die Art des Checks - **Optionen**: `Display`, `Ping`, `GeoIP`, `Speedtest`, `Separator` - **Standard**: `Display` (wenn nicht angegeben) #### Hidden - **Zweck**: Versteckt den Check in der UI - **Werte**: `True` oder `False` - **Anwendungsfall**: Checks ausführen, aber nicht anzeigen #### Click / DblClick - **Zweck**: Aktion bei Klick auf den Check - **Format**: Vollständiger Pfad zur ausführbaren Datei - **Beispiel**: `DblClick=C:\Windows\System32\mstsc.exe` #### CmdArguments - **Zweck**: Argumente für Click/DblClick-Aktion - **Format**: String mit Argumenten - **Beispiel**: `CmdArguments=/v:server.local` ### Check-Typ: Display Zeigt nur Name und Data an, ohne aktive Prüfung. ```ini [Check1] Name=LAN Adapter Data=$LAN_IP$ Type=Display ``` **Verwendung:** - Statische Informationsanzeige - Netzwerkinformationen - Konfigurationswerte **Beispiele:** ```ini # LAN-Informationen [Check1] Name=$LAN_TYPE$ ($LAN_NAME$) Data=$LAN_IP$ - Gateway: $LAN_GW$ # WireGuard-Status [Check2] Name=VPN Status Data=$WG0_STATUS$ # Letzte Verbindung [Check3] Name=Last Handshake Data=$WG0_LASTHANDSHAKE$ ``` ### Check-Typ: Ping Führt einen ICMP-Ping auf das angegebene Ziel aus. ```ini [Check2] Name=Router Data=$LAN_GW$ Type=Ping ``` **Funktionsweise:** - Sendet ICMP Echo Request - Zeigt Antwortzeit in ms - Farbcodierung: - Grün: < 50ms - Gelb: 50-150ms - Rot: > 150ms oder Timeout **Beispiele:** ```ini # Lokaler Router [Check1] Name=Router Data=$LAN_GW$ Type=Ping # Internet-Konnektivität [Check2] Name=Internet (Cloudflare DNS) Data=1.1.1.1 Type=Ping # VPN-Server [Check3] Name=VPN Gateway Data=$WG0_SERVER_IP$ Type=Ping # Interner Server [Check4] Name=Fileserver Data=fileserver.company.local Type=Ping # Mit Hostname [Check5] Name=Domain Controller Data=dc01.domain.local Type=Ping ``` ### Check-Typ: GeoIP Ermittelt öffentliche IP-Adresse und geografische Informationen. ```ini [Check3] Type=GeoIP ``` **Funktionsweise:** - Ruft externe GeoIP-API auf - Zeigt öffentliche IP und Standort - Aktualisiert bei jedem Check **Angezeigte Informationen:** - Öffentliche IP-Adresse - Land - Stadt - Organisation/ISP - ASN (Autonomous System Number) **Verfügbare Variablen nach GeoIP-Check:** ```ini $GEO_IP$ # Öffentliche IP $GEO_ORG$ # Organisation/ISP $GEO_CITY$ # Stadt $GEO_COUNTRY_NAME$ # Land (vollständig) $GEO_COUNTRY_CODE$ # Ländercode (z.B. DE) $GEO_ASN$ # AS-Nummer $GEO_TIMEZONE$ # Zeitzone $GEO_VERSION$ # IP-Version (IPv4/IPv6) ``` **Beispiel mit Variablen:** ```ini [Check1] Type=GeoIP [Check2] Name=Standort Data=$GEO_CITY$, $GEO_COUNTRY_NAME$ Type=Display [Check3] Name=Provider Data=$GEO_ORG$ (AS$GEO_ASN$) Type=Display ``` ### Check-Typ: Speedtest Führt einen Geschwindigkeitstest durch. ```ini [Check10] Name=Speedtest intern Type=Speedtest Data=http://speedtest.internal.net/endpoint.php ``` **Voraussetzungen:** - Speedtest-Endpunkt (PHP-Skript) - HTTP/HTTPS-Zugriff auf Endpunkt **Funktionsweise:** - Lädt Daten vom angegebenen Endpunkt - Misst Download-Geschwindigkeit - Zeigt Ergebnis in Mbit/s **Speedtest-Endpunkt einrichten:** Die Datei `speedtest.php` ist im Repository enthalten: ```php ``` **Beispiele:** ```ini # Interner Speedtest [Check1] Name=Speedtest Firmennetz Type=Speedtest Data=http://speedtest.internal.company.local/speedtest.php # Externer Speedtest [Check2] Name=Speedtest Internet Type=Speedtest Data=https://speedtest.example.com/endpoint.php # VPN-Speedtest [Check3] Name=VPN Geschwindigkeit Type=Speedtest Data=http://10.0.0.1/speedtest.php ``` ### Check-Typ: Separator Visuelle Trennlinie zwischen Checks. ```ini [Check5] Type=Separator ``` **Verwendung:** - Gruppierung von Checks - Visuelle Strukturierung - Keine weiteren Parameter erforderlich **Beispiel:** ```ini # LAN-Informationen [Check1] Name=LAN IP Data=$LAN_IP$ [Check2] Name=Router Data=$LAN_GW$ Type=Ping # Trenner [Check3] Type=Separator # VPN-Informationen [Check4] Name=VPN IP Data=$WG0_IP$ [Check5] Name=VPN Server Data=$WG0_SERVER_IP$ Type=Ping ``` --- ## Verfügbare Variablen Variablen können in `Name=` und `Data=` Parametern verwendet werden. ### LAN-Variablen ```ini $LAN_IP$ # Lokale IP-Adresse (z.B. 192.168.1.100) $LAN_GW$ # Gateway-IP (z.B. 192.168.1.1) $LAN_DNS1$ # Primärer DNS-Server $LAN_DNS2$ # Sekundärer DNS-Server $LAN_TYPE$ # Verbindungstyp (Ethernet, WiFi) $LAN_SPEED$ # Verbindungsgeschwindigkeit (z.B. 1 Gbps) $LAN_NAME$ # Adapter-Name (z.B. "Ethernet 2") ``` **Beispiel:** ```ini [Check1] Name=$LAN_TYPE$ Adapter: $LAN_NAME$ Data=IP: $LAN_IP$ | Gateway: $LAN_GW$ | Speed: $LAN_SPEED$ ``` ### WireGuard-Variablen Format: `$WGX_VARIABLE$` wobei X die Tunnel-Nummer ist (0, 1, 2, ...) ```ini $WG0_STATUS$ # Status (Connected, Disconnected) $WG0_IP$ # Zugewiesene VPN-IP $WG0_DNS1$ # Primärer VPN-DNS $WG0_DNS2$ # Sekundärer VPN-DNS $WG0_SERVER_IP$ # VPN-Server/Peer-IP $WG0_LASTHANDSHAKE$ # Zeitpunkt des letzten Handshakes $WG0_BYTESSEND$ # Gesendete Bytes $WG0_BYTESRECV$ # Empfangene Bytes ``` **Für mehrere Tunnel:** ```ini # Tunnel wg0 $WG0_IP$ $WG0_STATUS$ # Tunnel wg1 $WG1_IP$ $WG1_STATUS$ # Tunnel wg2 $WG2_IP$ $WG2_STATUS$ ``` **Beispiel:** ```ini [Check1] Name=VPN Status: $WG0_STATUS$ Data=IP: $WG0_IP$ | Server: $WG0_SERVER_IP$ [Check2] Name=VPN Traffic Data=↑ $WG0_BYTESSEND$ | ↓ $WG0_BYTESRECV$ [Check3] Name=Last Handshake Data=$WG0_LASTHANDSHAKE$ ``` ### GeoIP-Variablen Verfügbar nach einem GeoIP-Check: ```ini $GEO_IP$ # Öffentliche IP-Adresse $GEO_ORG$ # Organisation/ISP $GEO_CITY$ # Stadt $GEO_COUNTRY_NAME$ # Land (vollständig) $GEO_COUNTRY_CODE$ # Ländercode (ISO 3166-1 alpha-2) $GEO_ASN$ # Autonomous System Number $GEO_TIMEZONE$ # Zeitzone $GEO_VERSION$ # IP-Version (4 oder 6) ``` **Beispiel:** ```ini [Check1] Type=GeoIP [Check2] Name=Standort Data=$GEO_CITY$, $GEO_COUNTRY_NAME$ ($GEO_COUNTRY_CODE$) [Check3] Name=Provider Data=$GEO_ORG$ [Check4] Name=IP-Adresse Data=$GEO_IP$ (IPv$GEO_VERSION$) ``` --- ## Erweiterte Konfigurationsbeispiele ### Beispiel 1: Minimale Konfiguration Einfache Überwachung mit grundlegenden Checks: ```ini [General] Theme=Auto AutoClose=15 [Check1] Name=LAN Data=$LAN_IP$ [Check2] Name=Internet Data=1.1.1.1 Type=Ping [Check3] Type=Separator [Check4] Name=VPN Data=$WG0_IP$ [Check5] Name=VPN Server Data=$WG0_SERVER_IP$ Type=Ping ``` ### Beispiel 2: Umfassende Überwachung Detaillierte Überwachung mit allen Informationen: ```ini [General] Theme=Dark AutoClose=20 PowerMode=1 [Wireguardmon] POLL_TIME=15 # === LAN-Informationen === [Check1] Name=$LAN_TYPE$ ($LAN_NAME$) - $LAN_SPEED$ Data=$LAN_IP$ [Check2] Name=Gateway Data=$LAN_GW$ Type=Ping [Check3] Name=DNS Server Data=$LAN_DNS1$ Type=Ping [Check4] Type=GeoIP [Check5] Name=Internet Data=1.1.1.1 Type=Ping [Check6] Type=Separator # === VPN-Informationen === [Check7] Name=VPN Status Data=$WG0_STATUS$ [Check8] Name=VPN IP Data=$WG0_IP$ Type=Ping [Check9] Name=VPN Server Data=$WG0_SERVER_IP$ Type=Ping [Check10] Name=VPN DNS Data=$WG0_DNS1$ Type=Ping [Check11] Name=Last Handshake Data=$WG0_LASTHANDSHAKE$ [Check12] Name=Traffic Data=↑ $WG0_BYTESSEND$ ↓ $WG0_BYTESRECV$ [Check13] Type=Separator # === Interne Ressourcen === [Check14] Name=Domain Controller Data=dc01.company.local Type=Ping [Check15] Name=Fileserver Data=fs01.company.local Type=Ping [Check16] Name=Speedtest Type=Speedtest Data=http://speedtest.company.local/speedtest.php ``` ### Beispiel 3: Remote Desktop Integration VPN-Überwachung mit RDP-Zugriff: ```ini [General] Theme=Auto AutoClose=10 [Check1] Name=VPN Status Data=$WG0_STATUS$ [Check2] Name=VPN Server Data=$WG0_SERVER_IP$ Type=Ping [Check3] Type=Separator [Check4] Name=Terminal Server 1 Data=ts01.company.local Type=Ping DblClick=C:\Windows\System32\mstsc.exe CmdArguments=/v:ts01.company.local [Check5] Name=Terminal Server 2 Data=ts02.company.local Type=Ping DblClick=C:\Windows\System32\mstsc.exe CmdArguments=/v:ts02.company.local [Check6] Name=Application Server Data=app01.company.local Type=Ping DblClick=C:\Windows\System32\mstsc.exe CmdArguments="C:\RDP-Configs\app01.rdp" ``` ### Beispiel 4: Multi-Tunnel Konfiguration Überwachung mehrerer WireGuard-Tunnel: ```ini [General] Theme=Auto AutoClose=15 # wg2 wird nicht überwacht Disabled=wg2 # === Tunnel wg0 (Hauptverbindung) === [Check1] Name=VPN Haupt ($WG0_STATUS$) Data=$WG0_IP$ [Check2] Name=VPN Server Haupt Data=$WG0_SERVER_IP$ Type=Ping [Check3] Type=Separator # === Tunnel wg1 (Backup) === [Check4] Name=VPN Backup ($WG1_STATUS$) Data=$WG1_IP$ [Check5] Name=VPN Server Backup Data=$WG1_SERVER_IP$ Type=Ping [Check6] Type=Separator # === Gemeinsame Checks === [Check7] Name=Internet Data=1.1.1.1 Type=Ping ``` ### Beispiel 5: Auto-Disconnect bei Firmennetzwerk Automatisches Trennen der VPN-Verbindung im Büro: ```ini [General] Theme=Auto AutoClose=15 # Trennt VPN, wenn im Firmennetzwerk (192.168.100.0/24) AutoDisconnect=IP:192.168.100.0/24,DNS:company.local [Check1] Name=Netzwerk Data=$LAN_IP$ [Check2] Name=VPN Status Data=$WG0_STATUS$ [Check3] Name=Hinweis Data=VPN wird im Firmennetzwerk automatisch getrennt ``` ### Beispiel 6: Support/Helpdesk Konfiguration Optimiert für Support-Mitarbeiter: ```ini [General] Theme=Light AutoClose=30 PowerMode=1 [Check1] Name=Computer Data=$LAN_NAME$ - $LAN_IP$ [Check2] Name=Verbindungstyp Data=$LAN_TYPE$ @ $LAN_SPEED$ [Check3] Name=Gateway Data=$LAN_GW$ Type=Ping [Check4] Type=GeoIP [Check5] Type=Separator [Check6] Name=VPN Status Data=$WG0_STATUS$ [Check7] Name=VPN IP Data=$WG0_IP$ [Check8] Name=VPN Server Data=$WG0_SERVER_IP$ Type=Ping [Check9] Name=Letzte Verbindung Data=$WG0_LASTHANDSHAKE$ [Check10] Type=Separator [Check11] Name=Helpdesk Portal Data=helpdesk.company.local Type=Ping DblClick=C:\Program Files\Mozilla Firefox\firefox.exe CmdArguments=https://helpdesk.company.local [Check12] Name=Ticket System Data=tickets.company.local Type=Ping Click=C:\Program Files\Mozilla Firefox\firefox.exe CmdArguments=https://tickets.company.local ``` ### Beispiel 7: Entwickler-Konfiguration Mit Zugriff auf Entwicklungsressourcen: ```ini [General] Theme=Dark AutoClose=0 PowerMode=1 [Check1] Name=LAN Data=$LAN_IP$ [Check2] Type=GeoIP [Check3] Type=Separator [Check4] Name=VPN Data=$WG0_IP$ ($WG0_STATUS$) [Check5] Name=VPN Gateway Data=$WG0_SERVER_IP$ Type=Ping [Check6] Type=Separator [Check7] Name=GitLab Server Data=gitlab.dev.local Type=Ping DblClick=C:\Program Files\Mozilla Firefox\firefox.exe CmdArguments=https://gitlab.dev.local [Check8] Name=Jenkins CI Data=jenkins.dev.local Type=Ping DblClick=C:\Program Files\Mozilla Firefox\firefox.exe CmdArguments=https://jenkins.dev.local [Check9] Name=Dev Database Data=db01.dev.local Type=Ping [Check10] Name=Test Server Data=test01.dev.local Type=Ping DblClick=C:\Windows\System32\mstsc.exe CmdArguments=/v:test01.dev.local [Check11] Type=Separator [Check12] Name=Speedtest Dev Network Type=Speedtest Data=http://speedtest.dev.local/speedtest.php ``` --- ## Troubleshooting ### Installation schlägt fehl #### Problem: "winget lässt sich nicht ausführen" **Ursache:** Windows Package Manager (winget) ist nicht installiert oder nicht im PATH. **Lösung:** 1. Windows 11: Sollte vorinstalliert sein 2. Windows 10: App Installer aus Microsoft Store installieren 3. Alternativ: [Winget manuell installieren](https://github.com/microsoft/winget-cli/releases) #### Problem: "Administratorrechte erforderlich" **Ursache:** Skript wurde nicht als Administrator gestartet. **Lösung:** 1. Rechtsklick auf `wireguard_service_installer.cmd` 2. "Als Administrator ausführen" wählen 3. UAC-Prompt bestätigen #### Problem: "Konfigurationsdatei nicht gefunden" **Ursache:** Falscher Pfad zur WireGuard-Konfiguration. **Lösung:** ```cmd # Vollständigen Pfad verwenden wireguard_service_installer.cmd "C:\Users\Username\Downloads\wg0.conf" # Oder relativ zum aktuellen Verzeichnis cd C:\Users\Username\Downloads wireguard_service_installer.cmd wg0.conf ``` ### VPNTray startet nicht #### Problem: VPNTray-Icon erscheint nicht in der Taskleiste **Ursache 1:** Visual C++ Redistributable fehlt **Lösung:** ```cmd winget install --id Microsoft.VCRedist.2015+.x64 ``` **Ursache 2:** VPNTray.exe wurde nicht korrekt kopiert **Lösung:** ```cmd # Prüfen ob Datei existiert dir "C:\Program Files\WireGuard\VPNTray.exe" # Manuell kopieren falls nötig copy VPNTray.exe "C:\Program Files\WireGuard\" ``` **Ursache 3:** WireGuardMon läuft nicht **Lösung:** ```cmd # Service-Status prüfen sc query wireguardmon # Service starten net start wireguardmon # Falls Service nicht existiert cd "C:\Program Files\WireGuard" wireguardmon.exe --install net start wireguardmon ``` ### Checks funktionieren nicht #### Problem: Variablen werden nicht ersetzt (z.B. $WG0_IP$ wird als Text angezeigt) **Ursache:** WireGuardMon liefert keine Daten oder ITC-Datei fehlt. **Lösung:** ```cmd # WireGuardMon-Status prüfen sc query wireguardmon # ITC-Datei prüfen dir "C:\Program Files\WireGuard\wireguardmon.itc" # WireGuardMon neu starten net stop wireguardmon net start wireguardmon ``` #### Problem: Ping-Checks zeigen immer Timeout **Ursache 1:** Firewall blockiert ICMP **Lösung:** - Windows Firewall: ICMP Echo Request erlauben - Ziel-Firewall: ICMP-Antworten erlauben **Ursache 2:** VPN-Verbindung nicht aktiv **Lösung:** ```cmd # WireGuard-Service prüfen sc query WireGuardTunnel$wg0 # Service starten net start WireGuardTunnel$wg0 ``` #### Problem: GeoIP-Check schlägt fehl **Ursache:** Keine Internetverbindung oder API nicht erreichbar **Lösung:** 1. Internetverbindung prüfen 2. Proxy-Einstellungen prüfen 3. Firewall-Regeln für VPNTray.exe prüfen #### Problem: Speedtest zeigt keine Ergebnisse **Ursache:** Speedtest-Endpunkt nicht erreichbar oder falsch konfiguriert **Lösung:** 1. URL im Browser testen 2. PHP-Skript auf Server prüfen 3. Netzwerkverbindung zum Server testen ### WireGuard-Verbindung Probleme #### Problem: WireGuard-Tunnel startet nicht automatisch **Ursache:** Service ist nicht auf "Automatisch" gestellt **Lösung:** ```cmd # Service auf automatisch setzen sc config WireGuardTunnel$wg0 start= auto # Service starten net start WireGuardTunnel$wg0 ``` #### Problem: "Last Handshake" zeigt sehr alte Zeit **Ursache:** Verbindung zum VPN-Server unterbrochen **Lösung:** 1. Internetverbindung prüfen 2. VPN-Server-Erreichbarkeit prüfen 3. WireGuard-Konfiguration prüfen 4. Service neu starten: ```cmd net stop WireGuardTunnel$wg0 net start WireGuardTunnel$wg0 ``` ### Konfigurationsprobleme #### Problem: Änderungen in VPNTray.ini werden nicht übernommen **Ursache:** VPNTray muss neu gestartet werden **Lösung:** 1. VPNTray über Tray-Icon beenden 2. VPNTray neu starten: ```cmd start "" "C:\Program Files\WireGuard\VPNTray.exe" ``` #### Problem: Custom Theme wird nicht angezeigt **Ursache:** Theme-Einstellung nicht auf "Custom" gesetzt **Lösung:** ```ini [General] Theme=Custom [Theme] # Ihre benutzerdefinierten Farben WindowBackgroundBrush=#FF252525 ... ``` #### Problem: AutoDisconnect funktioniert nicht **Ursache:** Falsche Syntax oder Netzwerk-Erkennung fehlerhaft **Lösung:** ```ini # Richtige Syntax prüfen AutoDisconnect=IP:192.168.1.0/24 # Mehrere Bedingungen AutoDisconnect=IP:192.168.1.0/24,DNS:company.local,DOMAIN # Aktuelles Netzwerk prüfen ipconfig /all ``` ### Performance-Probleme #### Problem: VPNTray verbraucht viel CPU **Ursache:** Zu häufige Checks oder PowerMode aktiviert **Lösung:** ```ini [General] PowerMode=0 [Wireguardmon] POLL_TIME=60 # Erhöhen auf 60 Sekunden ``` #### Problem: Checks dauern sehr lange **Ursache:** Timeout bei nicht erreichbaren Hosts **Lösung:** - Nicht erreichbare Checks entfernen oder auskommentieren - `Hidden=True` für nicht kritische Checks setzen ### Logs und Diagnose #### WireGuard-Logs anzeigen ```cmd # Event Viewer öffnen eventvwr.msc # Navigieren zu: # Windows-Protokolle > Anwendung # Nach "WireGuard" filtern ``` #### WireGuardMon-Status prüfen ```cmd # Service-Status sc query wireguardmon # Service-Konfiguration sc qc wireguardmon # ITC-Datei Inhalt (für Entwickler) type "C:\Program Files\WireGuard\wireguardmon.itc" ``` #### VPNTray Debug-Informationen 1. VPNTray-Fenster öffnen (Klick auf Tray-Icon) 2. Alle angezeigten Werte notieren 3. Bei Problemen: Screenshot erstellen --- ## Häufig gestellte Fragen (FAQ) ### Allgemein **F: Kann ich mehrere WireGuard-Tunnel gleichzeitig überwachen?** A: Ja, VPNTray unterstützt mehrere Tunnel. Verwenden Sie `$WG0_*$`, `$WG1_*$`, `$WG2_*$` etc. für verschiedene Tunnel. **F: Wie deinstalliere ich WireGuard und VPNTray?** A: ```cmd # VPNTray Autostart entfernen reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "VPNTray" /f # WireGuardMon deinstallieren cd "C:\Program Files\WireGuard" wireguardmon.exe --uninstall # WireGuard Tunnel Service entfernen wireguard.exe /uninstalltunnelservice wg0 # WireGuard deinstallieren winget uninstall WireGuard.WireGuard ``` **F: Kann ich VPNTray ohne WireGuardMon verwenden?** A: Nein, VPNTray benötigt WireGuardMon für die Statusabfrage und Variablen-Ersetzung. ### Konfiguration **F: Wie viele Checks kann ich definieren?** A: Theoretisch unbegrenzt. Praktisch empfohlen: 10-20 Checks für gute Performance und Übersichtlichkeit. **F: Kann ich eigene Variablen definieren?** A: Nein, nur die vordefinierten Variablen sind verfügbar. Sie können aber statische Werte verwenden. **F: Wie kann ich Checks temporär deaktivieren?** A: ```ini # Option 1: Auskommentieren #[Check5] #Name=Test #Data=test.local #Type=Ping # Option 2: Hidden verwenden [Check5] Name=Test Data=test.local Type=Ping Hidden=True ``` ### Sicherheit **F: Sind die WireGuard-Konfigurationsdateien sicher gespeichert?** A: Ja, das Installationsskript setzt restriktive NTFS-Berechtigungen: - Nur Administratoren und SYSTEM haben Zugriff - Normale Benutzer können die Konfiguration nicht lesen **F: Kann ein normaler Benutzer den VPN-Dienst steuern?** A: Ja, durch die Service-Berechtigungen können authentifizierte Benutzer den Dienst starten/stoppen, aber nicht die Konfiguration ändern. **F: Werden Passwörter in VPNTray.ini gespeichert?** A: Nein, VPNTray.ini enthält keine Passwörter. WireGuard verwendet Public-Key-Kryptographie. ### Netzwerk **F: Funktioniert VPNTray mit IPv6?** A: Ja, WireGuard und VPNTray unterstützen IPv6. GeoIP-Checks zeigen die IP-Version an. **F: Kann ich VPNTray über VPN verwenden?** A: Ja, VPNTray funktioniert auch wenn es selbst über VPN verbunden ist. Beachten Sie mögliche Routing-Probleme. **F: Wie teste ich die Konfiguration ohne VPN-Verbindung?** A: Verwenden Sie hauptsächlich LAN-Variablen und Display-Checks. Ping-Checks auf lokale Ressourcen funktionieren auch ohne VPN. --- ## Best Practices ### Konfiguration strukturieren ```ini # Kommentare für Übersichtlichkeit # === LAN-Bereich === [Check1] ... # === VPN-Bereich === [Check5] ... # === Interne Ressourcen === [Check10] ... ``` ### Sinnvolle Check-Reihenfolge 1. **LAN-Informationen** (Basis-Konnektivität) 2. **Internet-Check** (Externe Erreichbarkeit) 3. **GeoIP** (Standort-Informationen) 4. **Separator** 5. **VPN-Status** (Tunnel-Informationen) 6. **VPN-Ressourcen** (Interne Server) 7. **Separator** 8. **Anwendungs-Checks** (RDP, Web, etc.) ### Performance optimieren ```ini [General] AutoClose=15 # Fenster schließt automatisch PowerMode=0 # Nur bei geöffnetem Fenster prüfen [Wireguardmon] POLL_TIME=30 # Nicht zu häufig abfragen ``` ### Benutzerfreundlichkeit ```ini # Aussagekräftige Namen [Check1] Name=Firmen-Router (Gateway) Data=$LAN_GW$ Type=Ping # Hilfreiche Informationen kombinieren [Check2] Name=$LAN_TYPE$ @ $LAN_SPEED$ ($LAN_NAME$) Data=$LAN_IP$ # Interaktive Elemente [Check3] Name=Terminalserver (Doppelklick für RDP) Data=ts01.company.local Type=Ping DblClick=C:\Windows\System32\mstsc.exe CmdArguments=/v:ts01.company.local ``` ### Fehlerbehandlung ```ini # Kritische Checks zuerst [Check1] Name=Internet Data=1.1.1.1 Type=Ping # Optionale Checks mit Hidden [Check2] Name=Optionaler Server Data=optional.local Type=Ping Hidden=True # Wird nicht angezeigt wenn fehlschlägt ``` --- ## Weiterführende Ressourcen - **GitHub Repository**: https://github.com/bashclub/Wireguard-Installer-and-Tray - **WireGuard Dokumentation**: https://www.wireguard.com/ - **WireGuard Windows**: https://git.zx2c4.com/wireguard-windows/about/ --- ## Changelog und Versionshinweise Diese Dokumentation basiert auf der aktuellen Version des Projekts. Prüfen Sie das GitHub-Repository für Updates und neue Features. --- ## Support und Community Bei Problemen oder Fragen: 1. GitHub Issues: https://github.com/bashclub/Wireguard-Installer-and-Tray/issues 2. Dokumentation prüfen 3. Logs analysieren (Event Viewer) --- **Erstellt:** 2024 **Quelle:** https://github.com/bashclub/Wireguard-Installer-and-Tray **Lizenz:** Siehe LICENSE-Datei im Repository