Files
WireGuard-Service-Installer/KONFIGURATION_DOKUMENTATION.md

1549 lines
32 KiB
Markdown
Raw Permalink Normal View History

2026-02-04 08:38:46 +01:00
# 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 <pfad_zur_wireguard_config>
```
**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
<?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:**
```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