# WireGuard Windows - Route explizit mit Gateway setzen ## Problem best?tigt Trotz Firewall-Regeln kommt Traffic **NICHT ?ber VPN**: - Traefik sieht: `ClientHost: 89.246.96.244` (?ffentliche IP) ? - Erwartet: `ClientHost: 10.8.0.7` (VPN-IP) ? ## Was wir bereits probiert haben ? **WireGuard verbunden**: Aktive Verbindung ? **Route vorhanden**: `10.8.0.0/24` Route in Windows Route-Tabelle ? **Ping funktioniert**: `ping 10.8.0.1` erfolgreich ? **AllowedIPs korrekt**: `10.8.0.0/24` in Client-Config ? **Interface-Metrik angepasst**: Metrik 1 (h?chste Priorit?t) ? **Firewall-Regeln erstellt**: VPN-Netzwerk-Regeln f?r 10.8.0.0/24 ? **HTTP/HTTPS-Traffic kommt NICHT ?ber VPN**: Windows sendet Traffic ?ber Standard-Interface ## L?sung: Route explizit mit Gateway setzen Windows k?nnte die Route nicht korrekt nutzen, weil sie als "Auf Verbindung" (On-link) markiert ist. Setzen wir die Route explizit mit Gateway. ### Schritt 1: Finde WireGuard Interface-Index ```powershell # Als Administrator Get-NetAdapter | Where-Object {$_.Name -like "*grafana-test*" -or $_.Name -like "*WireGuard*"} | Select-Object Name, InterfaceIndex ``` **Beispiel-Output:** ``` Name InterfaceIndex ---- -------------- grafana-test 18 ``` ### Schritt 2: Entferne alte Route ```powershell # Als Administrator route delete 10.8.0.0 MASK 255.255.255.0 ``` **Falls Fehler:** Das ist OK, die Route existiert vielleicht nicht mehr oder hat eine andere Form. ### Schritt 3: Setze Route explizit mit Gateway ```powershell # Als Administrator # Ersetze 18 mit dem Interface-Index aus Schritt 1 route add 10.8.0.0 MASK 255.255.255.0 10.8.0.1 METRIC 1 IF 18 ``` **Erkl?rung:** - `10.8.0.0` = Ziel-Netzwerk (VPN-Netzwerk) - `MASK 255.255.255.0` = Subnetzmaske (/24) - `10.8.0.1` = Gateway (VPN-Server-IP) - `METRIC 1` = H?chste Priorit?t (niedrigste Zahl = h?chste Priorit?t) - `IF 18` = Interface-Index von WireGuard ### Schritt 4: Pr?fe ob Route korrekt gesetzt wurde ```powershell # Als Administrator route print | findstr "10.8" ``` **Erwartetes Ergebnis:** ``` 10.8.0.0 255.255.255.0 10.8.0.1 18 1 ``` **Wichtig:** Gateway sollte `10.8.0.1` sein (nicht "Auf Verbindung" oder deine Client-IP `10.8.0.7`). ### Schritt 5: WireGuard neu verbinden 1. **Disconnect** WireGuard-Verbindung 2. **Warte 5 Sekunden** 3. **Connect** WireGuard-Verbindung neu 4. **Pr?fe Route erneut**: `route print | findstr "10.8"` ### Schritt 6: Teste ```powershell # Pr?fe Route route print | findstr "10.8" # Teste Ping ping 10.8.0.1 # Teste Grafana im Browser # https://grafana.michaelschiemer.de ``` ### Schritt 7: Logs pr?fen Nach dem Test sage mir Bescheid, dann pr?fe ich die Traefik-Logs: - ? Wenn `ClientHost: 10.8.0.7` ? Traffic kommt ?ber VPN! - ? Wenn `ClientHost: 89.246.96.244` ? Traffic kommt NICHT ?ber VPN ## Falls Route nicht korrekt bleibt Die Route k?nnte nach dem Disconnect/Connect wieder auf "Auf Verbindung" wechseln. In diesem Fall: ### Option A: Route persistieren ```powershell # Als Administrator # Entferne alte Route route delete 10.8.0.0 MASK 255.255.255.0 # Setze Route mit -p Flag (persistent) route add 10.8.0.0 MASK 255.255.255.0 10.8.0.1 METRIC 1 IF 18 -p ``` Das `-p` Flag macht die Route persistent ?ber System-Neustarts. ### Option B: Route ?ber WireGuard selbst setzen Manchmal setzt WireGuard die Route automatisch auf "Auf Verbindung". Versuche die Route nach dem Verbinden erneut zu setzen: ```powershell # Nachdem WireGuard verbunden ist, erneut ausf?hren: route delete 10.8.0.0 MASK 255.255.255.0 route add 10.8.0.0 MASK 255.255.255.0 10.8.0.1 METRIC 1 IF 18 ``` ## Troubleshooting ### Route wird nicht gesetzt ```powershell # Pr?fe ob Interface-Index korrekt ist Get-NetAdapter | Where-Object {$_.Name -like "*grafana-test*"} # Pr?fe ob Gateway erreichbar ist ping 10.8.0.1 ``` ### Route wird wieder gel?scht Windows k?nnte die Route automatisch zur?cksetzen. In diesem Fall: 1. Setze Route nach jedem WireGuard-Connect neu 2. Oder erstelle ein Script, das die Route automatisch setzt ## Alternative: PowerShell-Script f?r automatische Route-Setzung ```powershell # Als Administrator # Finde Interface-Index $wgInterface = Get-NetAdapter | Where-Object {$_.Name -like "*grafana-test*" -or $_.Name -like "*WireGuard*"} if ($wgInterface) { $ifIndex = $wgInterface.InterfaceIndex Write-Host "WireGuard Interface gefunden: $($wgInterface.Name), Index: $ifIndex" # Entferne alte Route route delete 10.8.0.0 MASK 255.255.255.0 2>&1 | Out-Null # Setze Route explizit mit Gateway route add 10.8.0.0 MASK 255.255.255.0 10.8.0.1 METRIC 1 IF $ifIndex # Pr?fe ob es funktioniert hat route print | findstr "10.8" } else { Write-Host "WireGuard Interface nicht gefunden" } ``` ## N?chste Schritte Nach dem Setzen der Route: 1. ? Route explizit mit Gateway gesetzt 2. ? WireGuard neu verbinden 3. ? Route erneut pr?fen (sollte Gateway `10.8.0.1` zeigen) 4. ? Teste Grafana-Zugriff 5. ? Pr?fe Traefik-Logs (ich pr?fe dann, ob `ClientHost: 10.8.0.7` erscheint)