Clone
1
Home
admin edited this page 2026-02-04 02:00:15 -08:00

WireGuard Service Installer und VPNTray - Ausführliche Konfigurationsdokumentation

Inhaltsverzeichnis

  1. Überblick
  2. Systemvoraussetzungen
  3. Installation mit wireguard_service_installer.cmd
  4. VPNTray.ini Konfiguration
  5. Check-Typen und deren Konfiguration
  6. Verfügbare Variablen
  7. Erweiterte Konfigurationsbeispiele
  8. Troubleshooting

Überblick

Dieses Projekt von 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

wireguard_service_installer.cmd <pfad_zur_wireguard_config>

Beispiel:

wireguard_service_installer.cmd C:\Users\Username\Downloads\wg0.conf

Was das Skript macht

1. UAC-Elevation (Administratorrechte)

>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

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

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

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

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

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

"%PROGRAMFILES%\WireGuard\wireguard.exe" /installtunnelservice "%WG_CONFIG%"
  • Installiert WireGuard als Windows-Dienst
  • Dienstname: WireGuardTunnel$wg0
  • Startet automatisch beim Systemstart

9. Service-Berechtigungen anpassen

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

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

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

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

    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

[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)

#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

#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

Theme=Auto
  • Optionen:
    • Auto - Folgt Windows-Systemeinstellung (Hell/Dunkel)
    • Dark - Dunkles Design
    • Light - Helles Design
    • Custom - Benutzerdefiniert (verwendet [Theme]-Sektion)

AutoClose

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

#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

#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

#[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].

[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:

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:

[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)
  • 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.

[Check1]
Name=LAN Adapter
Data=$LAN_IP$
Type=Display

Verwendung:

  • Statische Informationsanzeige
  • Netzwerkinformationen
  • Konfigurationswerte

Beispiele:

# 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.

[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:

# 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.

[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:

$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:

[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.

[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
// speedtest.php
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="speedtest.bin"');
header('Cache-Control: no-cache');

// Generiere 10 MB Zufallsdaten
$size = 10 * 1024 * 1024; // 10 MB
$chunk = 1024 * 1024; // 1 MB Chunks

for ($i = 0; $i < $size; $i += $chunk) {
    echo str_repeat('0', min($chunk, $size - $i));
    flush();
}
?>

Beispiele:

# 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.

[Check5]
Type=Separator

Verwendung:

  • Gruppierung von Checks
  • Visuelle Strukturierung
  • Keine weiteren Parameter erforderlich

Beispiel:

# 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

$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:

[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, ...)

$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:

# Tunnel wg0
$WG0_IP$
$WG0_STATUS$

# Tunnel wg1
$WG1_IP$
$WG1_STATUS$

# Tunnel wg2
$WG2_IP$
$WG2_STATUS$

Beispiel:

[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:

$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:

[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:

[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:

[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:

[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:

[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:

[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:

[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:

[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

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:

# 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:

winget install --id Microsoft.VCRedist.2015+.x64

Ursache 2: VPNTray.exe wurde nicht korrekt kopiert

Lösung:

# 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:

# 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:

# 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:

# 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:

# 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:
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:
start "" "C:\Program Files\WireGuard\VPNTray.exe"

Problem: Custom Theme wird nicht angezeigt

Ursache: Theme-Einstellung nicht auf "Custom" gesetzt

Lösung:

[General]
Theme=Custom

[Theme]
# Ihre benutzerdefinierten Farben
WindowBackgroundBrush=#FF252525
...

Problem: AutoDisconnect funktioniert nicht

Ursache: Falsche Syntax oder Netzwerk-Erkennung fehlerhaft

Lösung:

# 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:

[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

# Event Viewer öffnen
eventvwr.msc

# Navigieren zu:
# Windows-Protokolle > Anwendung
# Nach "WireGuard" filtern

WireGuardMon-Status prüfen

# 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:

# 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:

# 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

# 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

[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

# 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

# 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


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