# WireGuard Windows Firewall - Pr?fung und Fix

## Problem

Traffic kommt NICHT ?ber VPN, obwohl WireGuard verbunden ist. Windows Firewall k?nnte VPN-Traffic blockieren.

## Schritt 1: Aktuelle Firewall-Regeln pr?fen

**Als Administrator in PowerShell:**

```powershell
# Pr?fe ob WireGuard-Regeln vorhanden sind
Get-NetFirewallRule | Where-Object {$_.DisplayName -like "*WireGuard*" -or $_.DisplayName -like "*VPN*"} | Select-Object DisplayName, Enabled, Direction, Action

# Pr?fe alle ausgehenden Regeln
Get-NetFirewallRule -Direction Outbound | Where-Object {$_.Enabled -eq $true} | Select-Object DisplayName, Direction, Action | Format-Table -AutoSize

# Pr?fe Firewall-Status
Get-NetFirewallProfile | Select-Object Name, Enabled
```

## Schritt 2: Pr?fe ob WireGuard-Programm-Regeln vorhanden sind

```powershell
# Suche nach WireGuard-Programm-Regeln
Get-NetFirewallApplicationFilter | Where-Object {$_.Program -like "*WireGuard*"} | Select-Object Program

# Oder pr?fe alle Programm-Regeln
Get-NetFirewallRule | Where-Object {$_.Program -like "*WireGuard*"} | Select-Object DisplayName, Enabled, Direction, Action, Program
```

## Schritt 3: Erstelle Firewall-Regeln f?r WireGuard

**Falls keine Regeln vorhanden sind:**

```powershell
# Als Administrator

# Erlaube WireGuard-Programm (TCP und UDP)
$wgPath = "C:\Program Files\WireGuard\wireguard.exe"
if (Test-Path $wgPath) {
    New-NetFirewallRule -DisplayName "WireGuard VPN - Allow TCP" -Direction Outbound -Program $wgPath -Protocol TCP -Action Allow -Enabled True
    New-NetFirewallRule -DisplayName "WireGuard VPN - Allow UDP" -Direction Outbound -Program $wgPath -Protocol UDP -Action Allow -Enabled True
    New-NetFirewallRule -DisplayName "WireGuard VPN - Allow Inbound TCP" -Direction Inbound -Program $wgPath -Protocol TCP -Action Allow -Enabled True
    New-NetFirewallRule -DisplayName "WireGuard VPN - Allow Inbound UDP" -Direction Inbound -Program $wgPath -Protocol UDP -Action Allow -Enabled True
    Write-Host "WireGuard Firewall-Regeln erstellt"
} else {
    Write-Host "WireGuard-Programm nicht gefunden in: $wgPath"
    Write-Host "Bitte pr?fe den Pfad und passe ihn an"
}

# Alternative: Erlaube WireGuard-Interface (falls bekannt)
# Get-NetAdapter | Where-Object {$_.Name -like "*WireGuard*" -or $_.Name -like "*grafana-test*"} | ForEach-Object {
#     $ifIndex = $_.InterfaceIndex
#     New-NetFirewallRule -DisplayName "WireGuard Interface $($_.Name) - Allow Outbound" -Direction Outbound -InterfaceIndex $ifIndex -Action Allow -Enabled True
#     New-NetFirewallRule -DisplayName "WireGuard Interface $($_.Name) - Allow Inbound" -Direction Inbound -InterfaceIndex $ifIndex -Action Allow -Enabled True
# }
```

## Schritt 4: Pr?fe Interface-basierte Regeln

```powershell
# Finde WireGuard Interface
$wgInterface = Get-NetAdapter | Where-Object {$_.Name -like "*grafana-test*" -or $_.Name -like "*WireGuard*"}
if ($wgInterface) {
    Write-Host "WireGuard Interface gefunden: $($wgInterface.Name), Index: $($wgInterface.InterfaceIndex)"
    
    # Pr?fe Interface-basierte Firewall-Regeln
    Get-NetFirewallRule | Where-Object {$_.InterfaceIndex -eq $wgInterface.InterfaceIndex} | Select-Object DisplayName, Enabled, Direction, Action
}
```

## Schritt 5: Erlaube Traffic f?r VPN-Netzwerk

```powershell
# Als Administrator

# Erlaube ausgehenden Traffic zu VPN-Netzwerk (10.8.0.0/24)
New-NetFirewallRule -DisplayName "WireGuard VPN Network - Allow Outbound" `
    -Direction Outbound `
    -RemoteAddress "10.8.0.0/24" `
    -Protocol TCP `
    -Action Allow `
    -Enabled True

New-NetFirewallRule -DisplayName "WireGuard VPN Network - Allow Outbound UDP" `
    -Direction Outbound `
    -RemoteAddress "10.8.0.0/24" `
    -Protocol UDP `
    -Action Allow `
    -Enabled True

New-NetFirewallRule -DisplayName "WireGuard VPN Network - Allow Inbound" `
    -Direction Inbound `
    -RemoteAddress "10.8.0.0/24" `
    -Protocol TCP `
    -Action Allow `
    -Enabled True

New-NetFirewallRule -DisplayName "WireGuard VPN Network - Allow Inbound UDP" `
    -Direction Inbound `
    -RemoteAddress "10.8.0.0/24" `
    -Protocol UDP `
    -Action Allow `
    -Enabled True

Write-Host "VPN-Netzwerk Firewall-Regeln erstellt"
```

## Schritt 6: Teste nach Firewall-?nderungen

```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: Pr?fe Logs

Nach den ?nderungen:
1. **WireGuard neu verbinden** (Disconnect ? Connect)
2. **Teste Grafana**: `https://grafana.michaelschiemer.de`
3. **Warte 5 Sekunden**
4. Dann pr?fe ich die Traefik-Logs, ob `ClientHost: 10.8.0.7` erscheint

## Troubleshooting

### Firewall-Regeln werden nicht angewendet

```powershell
# Pr?fe ob Firewall aktiv ist
Get-NetFirewallProfile | Select-Object Name, Enabled

# Falls Firewall deaktiviert ist, aktiviere sie (falls gew?nscht)
# Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
```

### WireGuard-Programm-Pfad ist anders

```powershell
# Finde WireGuard-Installationspfad
Get-ChildItem "C:\Program Files" -Recurse -Filter "wireguard.exe" -ErrorAction SilentlyContinue
Get-ChildItem "C:\Program Files (x86)" -Recurse -Filter "wireguard.exe" -ErrorAction SilentlyContinue

# Oder suche in allen Programmen
Get-ChildItem "C:\" -Recurse -Filter "wireguard.exe" -ErrorAction SilentlyContinue | Select-Object FullName
```

### Tempor?re Firewall-Regeln zum Testen

Falls du schnell testen m?chtest, ohne spezifische Regeln:

```powershell
# Als Administrator - ERLAUBE ALLEN AUSGEHENDEN TRAFFIC TEMPOR?R (NUR ZUM TESTEN!)
# WARNUNG: Diese Regel erlaubt ALLEN ausgehenden Traffic - nur zum Testen verwenden!

New-NetFirewallRule -DisplayName "TEST - Allow All Outbound (TEMPORARY)" `
    -Direction Outbound `
    -Action Allow `
    -Enabled True

# Teste dann Grafana
# Falls es funktioniert: L?sche diese Regel und erstelle spezifische Regeln
# Remove-NetFirewallRule -DisplayName "TEST - Allow All Outbound (TEMPORARY)"
```

## N?chste Schritte

Nach dem Erstellen der Firewall-Regeln:

1. ? Firewall-Regeln erstellt
2. ? WireGuard neu verbinden
3. ? Teste Grafana-Zugriff
4. ? Pr?fe Traefik-Logs (ich pr?fe dann, ob `ClientHost: 10.8.0.7` erscheint)

## Wichtige Hinweise

- **Firewall-Regeln sollten spezifisch sein** (nicht "Allow All")
- **Programm-Regeln sind sicherer** als allgemeine Regeln
- **Interface-Regeln k?nnen helfen**, wenn Programm-Regeln nicht funktionieren
- **VPN-Netzwerk-Regeln** sind am spezifischsten
