Table of Contents
- WireGuard Service Installer und VPNTray - Ausführliche Konfigurationsdokumentation
- Inhaltsverzeichnis
- Überblick
- Systemvoraussetzungen
- Installation mit wireguard_service_installer.cmd
- Funktionsweise des Installers
- Verwendung
- Was das Skript macht
- 1. UAC-Elevation (Administratorrechte)
- 2. Parameter-Validierung
- 3. WireGuard Installation
- 4. Visual C++ Redistributable Installation
- 5. Konfigurationsverzeichnis erstellen
- 6. Sicherheitsberechtigungen setzen
- 7. Konfigurationsdatei kopieren
- 8. WireGuard Tunnel Service installieren
- 9. Service-Berechtigungen anpassen
- 10. Zusätzliche Dateien kopieren
- 11. WireGuardMon installieren und starten
- 12. Autostart für VPNTray einrichten
- Installationsablauf - Schritt für Schritt
- VPNTray.ini Konfiguration
- Check-Typen und deren Konfiguration
- Allgemeine Check-Parameter
- Check-Typ: Display
- Check-Typ: Ping
- Check-Typ: GeoIP
- Check-Typ: Speedtest
- Check-Typ: Separator
- Verfügbare Variablen
- Erweiterte Konfigurationsbeispiele
- Beispiel 1: Minimale Konfiguration
- Beispiel 2: Umfassende Überwachung
- Beispiel 3: Remote Desktop Integration
- Beispiel 4: Multi-Tunnel Konfiguration
- Beispiel 5: Auto-Disconnect bei Firmennetzwerk
- Beispiel 6: Support/Helpdesk Konfiguration
- Beispiel 7: Entwickler-Konfiguration
- Troubleshooting
- Installation schlägt fehl
- Problem: "winget lässt sich nicht ausführen"
- Problem: "Administratorrechte erforderlich"
- Problem: "Konfigurationsdatei nicht gefunden"
- VPNTray startet nicht
- Checks funktionieren nicht
- Problem: Variablen werden nicht ersetzt (z.B. WG0_IP wird als Text angezeigt)
- Problem: Ping-Checks zeigen immer Timeout
- Problem: GeoIP-Check schlägt fehl
- Problem: Speedtest zeigt keine Ergebnisse
- WireGuard-Verbindung Probleme
- Konfigurationsprobleme
- Problem: Änderungen in VPNTray.ini werden nicht übernommen
- Problem: Custom Theme wird nicht angezeigt
- Problem: AutoDisconnect funktioniert nicht
- Performance-Probleme
- Logs und Diagnose
- Häufig gestellte Fragen (FAQ)
- Best Practices
- Konfiguration strukturieren
- Sinnvolle Check-Reihenfolge
- Performance optimieren
- Benutzerfreundlichkeit
- Fehlerbehandlung
- Weiterführende Ressourcen
- Changelog und Versionshinweise
- Support und Community
WireGuard Service Installer und VPNTray - Ausführliche Konfigurationsdokumentation
Inhaltsverzeichnis
- Überblick
- Systemvoraussetzungen
- Installation mit wireguard_service_installer.cmd
- VPNTray.ini Konfiguration
- Check-Typen und deren Konfiguration
- Verfügbare Variablen
- Erweiterte Konfigurationsbeispiele
- 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.confdefiniert den Tunnel-Namen alswg0
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
-
Vorbereitung
- WireGuard-Konfigurationsdatei (
.conf) bereitstellen - Als Administrator anmelden oder UAC-Berechtigung erteilen können
- WireGuard-Konfigurationsdatei (
-
Installation starten
wireguard_service_installer.cmd C:\Pfad\zu\ihrer\config.conf -
Bestätigung
- Skript zeigt: "Es wird ein Wireguard Service eingerichtet"
- Mit
Enterbestätigen oder mitStrg+Cabbrechen
-
Automatische Installation
- WireGuard wird installiert
- Visual C++ Redistributable wird installiert
- Konfiguration wird kopiert und gesichert
- Dienste werden eingerichtet
-
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 DesignLight- Helles DesignCustom- 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 istIP: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= Deaktiviert1= 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-FFGG= Grün: 00-FFBB= 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:
TrueoderFalse - 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:
- Windows 11: Sollte vorinstalliert sein
- Windows 10: App Installer aus Microsoft Store installieren
- Alternativ: Winget manuell installieren
Problem: "Administratorrechte erforderlich"
Ursache: Skript wurde nicht als Administrator gestartet.
Lösung:
- Rechtsklick auf
wireguard_service_installer.cmd - "Als Administrator ausführen" wählen
- 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:
- Internetverbindung prüfen
- Proxy-Einstellungen prüfen
- Firewall-Regeln für VPNTray.exe prüfen
Problem: Speedtest zeigt keine Ergebnisse
Ursache: Speedtest-Endpunkt nicht erreichbar oder falsch konfiguriert
Lösung:
- URL im Browser testen
- PHP-Skript auf Server prüfen
- 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:
- Internetverbindung prüfen
- VPN-Server-Erreichbarkeit prüfen
- WireGuard-Konfiguration prüfen
- 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:
- VPNTray über Tray-Icon beenden
- 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=Truefü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
- VPNTray-Fenster öffnen (Klick auf Tray-Icon)
- Alle angezeigten Werte notieren
- 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
- LAN-Informationen (Basis-Konnektivität)
- Internet-Check (Externe Erreichbarkeit)
- GeoIP (Standort-Informationen)
- Separator
- VPN-Status (Tunnel-Informationen)
- VPN-Ressourcen (Interne Server)
- Separator
- 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
- 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:
- GitHub Issues: https://github.com/bashclub/Wireguard-Installer-and-Tray/issues
- Dokumentation prüfen
- Logs analysieren (Event Viewer)
Erstellt: 2024 Quelle: https://github.com/bashclub/Wireguard-Installer-and-Tray Lizenz: Siehe LICENSE-Datei im Repository