177 lines
5.0 KiB
Markdown
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)
|