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