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

5.0 KiB

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

# 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

# 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

# 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

# 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

# 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

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

# 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

# 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

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