Files
michaelschiemer/docs/deployment/WIREGUARD-WINDOWS-ROUTE-GATEWAY-FIX.md

177 lines
5.0 KiB
Markdown

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