feat: add Redis connection diagnostics, VPN routing fixes, and Traefik middleware updates

This commit is contained in:
2025-11-02 15:58:30 +01:00
parent d5655b1456
commit 8344032fb6
12 changed files with 1380 additions and 6 deletions

View File

@@ -0,0 +1,108 @@
# Grafana VPN Access - Troubleshooting Guide
## Problem
Grafana ist nur ?ber VPN (WireGuard) erreichbar, aber auch mit VPN-Verbindung bekommt man einen 403-Fehler.
## Ursache
Traefik sieht die ?ffentliche Client-IP (z.B. `89.246.96.244`) statt der VPN-IP (z.B. `10.8.0.7`). Das bedeutet, dass der Traffic **nicht ?ber das VPN** geroutet wird.
## L?sung
### 1. VPN-Verbindung pr?fen
```bash
# Pr?fe ob WireGuard Interface aktiv ist
sudo wg show
# Pr?fe ob VPN-IP zugewiesen ist
ip addr show wg0 # oder das WireGuard Interface-Name
```
### 2. DNS-Konfiguration pr?fen
Stelle sicher, dass dein System den VPN-DNS-Server (`10.8.0.1`) verwendet:
**Windows:**
- Pr?fe in WireGuard-Client: `DNS = 10.8.0.1` sollte gesetzt sein
- Oder manuell in Windows: Netzwerk-Einstellungen ? DNS-Server auf `10.8.0.1` setzen
**Linux/Mac:**
```bash
# Pr?fe aktive DNS-Server
cat /etc/resolv.conf
# oder
resolvectl status
# Sollte 10.8.0.1 enthalten (oder automatisch ?ber VPN gesetzt)
```
### 3. DNS-Aufl?sung testen
```bash
# Teste DNS-Aufl?sung ?ber VPN-DNS
dig +short grafana.michaelschiemer.de @10.8.0.1
# Sollte zur?ckgeben: 10.8.0.1
# Teste normale DNS-Aufl?sung
dig +short grafana.michaelschiemer.de
# Falls das eine andere IP zur?ckgibt, wird der Traffic ?ber ?ffentliche Route gehen
```
### 4. Routing pr?fen
Stelle sicher, dass der Traffic f?r `10.8.0.0/24` ?ber das VPN-Interface geroutet wird:
**Windows:**
- Pr?fe in WireGuard-Client: `AllowedIPs = 10.8.0.0/24` sollte gesetzt sein
**Linux/Mac:**
```bash
# Pr?fe Routing-Tabelle
ip route | grep 10.8.0
# oder
route -n | grep 10.8.0
# Sollte zeigen: 10.8.0.0/24 via <VPN-Interface>
```
### 5. Browser-Zugriff testen
**Option A: Direkt ?ber VPN-IP**
- ?ffne im Browser: `https://10.8.0.1` (falls Traefik darauf l?uft)
- Oder: `https://grafana.michaelschiemer.de` nachdem DNS auf `10.8.0.1` aufgel?st wurde
**Option B: Hosts-Datei verwenden (tempor?r)**
```bash
# Linux/Mac
echo "10.8.0.1 grafana.michaelschiemer.de" | sudo tee -a /etc/hosts
# Windows (als Administrator)
# C:\Windows\System32\drivers\etc\hosts
# 10.8.0.1 grafana.michaelschiemer.de
```
### 6. Client-IP in Traefik-Logs pr?fen
```bash
# Pr?fe welche Client-IP Traefik sieht
ssh deploy@94.16.110.151
cd ~/deployment/stacks/traefik
tail -20 logs/access.log | grep grafana | jq '.ClientAddr'
# Sollte zeigen: 10.8.0.x (VPN-IP), nicht die ?ffentliche IP
```
## Aktuelle Konfiguration
- **Grafana Middleware:** `grafana-vpn-only@file`
- **IP Allowlist:** `10.8.0.0/24` (WireGuard VPN network)
- **Traefik Middleware:** `ipAllowList` (Traefik v3.0, nicht mehr deprecated `ipWhiteList`)
## Weitere Hilfe
Falls das Problem weiterhin besteht:
1. Pr?fe Traefik-Logs auf detaillierte Fehlermeldungen
2. Pr?fe ob WireGuard korrekt konfiguriert ist
3. Pr?fe ob der Traffic tats?chlich ?ber das VPN-Interface geht (z.B. mit `tcpdump`)

View File

@@ -0,0 +1,195 @@
# VPN Routing - Client-Side Checks
## Problem
Grafana gibt 403-Fehler, obwohl VPN verbunden ist. Traefik sieht die ?ffentliche Client-IP statt der VPN-IP.
## Client-Side Diagnose
### 1. VPN-Verbindung pr?fen
**Windows:**
```powershell
# Pr?fe WireGuard Interface
wireguard.exe /show wg0
# Oder in PowerShell (als Administrator)
Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*WireGuard*"}
```
**Linux:**
```bash
# Pr?fe WireGuard Interface
sudo wg show
# Pr?fe Interface-Status
ip addr show wg0
# Sollte zeigen: inet 10.8.0.7/24
```
**Mac:**
```bash
# Pr?fe WireGuard Interface
sudo wg show
# Pr?fe Interface-Status
ifconfig utun* | grep -A 5 "inet 10.8.0"
# Sollte zeigen: inet 10.8.0.7
```
### 2. DNS-Konfiguration pr?fen
**Windows:**
- ?ffne WireGuard-Client
- Pr?fe ob `DNS = 10.8.0.1` in der Config gesetzt ist
- Oder in PowerShell:
```powershell
Get-DnsClientServerAddress | Select-Object InterfaceAlias, ServerAddresses
```
**Linux:**
```bash
# Pr?fe aktive DNS-Server
cat /etc/resolv.conf
# Oder
resolvectl status
# Sollte 10.8.0.1 enthalten
```
**Mac:**
```bash
# Pr?fe DNS-Server
scutil --dns | grep nameserver
# Oder
networksetup -getdnsservers Wi-Fi
```
### 3. DNS-Aufl?sung testen
```bash
# Teste DNS-Aufl?sung ?ber VPN-DNS
dig +short grafana.michaelschiemer.de @10.8.0.1
# Sollte zur?ckgeben: 10.8.0.1
# Teste normale DNS-Aufl?sung
dig +short grafana.michaelschiemer.de
# Falls das eine andere IP zur?ckgibt (z.B. 94.16.110.151), wird der Traffic ?ber ?ffentliche Route gehen
```
**Windows:**
```powershell
# Teste DNS-Aufl?sung
Resolve-DnsName grafana.michaelschiemer.de -Server 10.8.0.1
nslookup grafana.michaelschiemer.de 10.8.0.1
```
### 4. Routing pr?fen
**Linux:**
```bash
# Pr?fe Routing-Tabelle
ip route show | grep 10.8.0
# Sollte zeigen: 10.8.0.0/24 dev wg0
# Pr?fe Default Route
ip route show default
```
**Windows:**
```powershell
# Pr?fe Routing-Tabelle
route print | findstr "10.8.0"
```
**Mac:**
```bash
# Pr?fe Routing-Tabelle
netstat -rn | grep 10.8.0
```
### 5. AllowedIPs in WireGuard Config pr?fen
**Deine WireGuard-Config sollte enthalten:**
```
[Peer]
AllowedIPs = 10.8.0.0/24
```
**Wichtig:** Wenn `AllowedIPs = 0.0.0.0/0` ist, wird ALLER Traffic ?ber VPN geroutet. Das ist OK, aber k?nnte Probleme verursachen.
Wenn `AllowedIPs = 10.8.0.0/24` ist, wird nur Traffic f?r das VPN-Netzwerk ?ber VPN geroutet. Der Rest geht ?ber das normale Internet.
### 6. Browser-Zugriff testen
**Option A: Direkt ?ber VPN-IP**
```
https://10.8.0.1
```
(Wenn das funktioniert, ist Traefik erreichbar, aber die Host-Header-Konfiguration k?nnte ein Problem sein)
**Option B: Via Domain mit Hosts-Datei**
**Linux/Mac:**
```bash
# F?ge VPN-IP zur Hosts-Datei hinzu
echo "10.8.0.1 grafana.michaelschiemer.de" | sudo tee -a /etc/hosts
# Teste dann
curl -k -H "Host: grafana.michaelschiemer.de" https://10.8.0.1
```
**Windows:**
```
# C:\Windows\System32\drivers\etc\hosts (als Administrator bearbeiten)
10.8.0.1 grafana.michaelschiemer.de
```
**Option C: Via VPN-DNS**
- Stelle sicher, dass dein System 10.8.0.1 als DNS-Server verwendet
- Dann sollte `grafana.michaelschiemer.de` automatisch auf 10.8.0.1 aufgel?st werden
### 7. Traceroute testen
```bash
# Pr?fe welchen Weg der Traffic nimmt
traceroute 10.8.0.1
# Sollte direkt ?ber wg0 Interface gehen, nicht ?ber Gateway
# Teste Domain
traceroute grafana.michaelschiemer.de
# Wenn das ?ber ?ffentliche IPs geht, l?uft der Traffic nicht ?ber VPN
```
**Windows:**
```powershell
tracert 10.8.0.1
tracert grafana.michaelschiemer.de
```
## H?ufige Probleme
### Problem 1: DNS verwendet ?ffentliche Server
**L?sung:** Stelle sicher, dass WireGuard `DNS = 10.8.0.1` setzt, oder setze es manuell im System.
### Problem 2: AllowedIPs nicht korrekt
**L?sung:** `AllowedIPs = 10.8.0.0/24` sollte gesetzt sein f?r VPN-Zugriff.
### Problem 3: Routing geht ?ber ?ffentliche IP
**L?sung:** Pr?fe ob grafana.michaelschiemer.de ?ber ?ffentliche DNS aufgel?st wird. Falls ja, setze DNS auf 10.8.0.1 oder verwende Hosts-Datei.
### Problem 4: Browser cached alte IP
**L?sung:** Browser-Cache leeren oder Inkognito-Modus verwenden.
## Server-Side Diagnose
F?hre das Diagnose-Playbook auf dem Server aus:
```bash
cd deployment/ansible
ansible-playbook -i inventory/production.yml playbooks/diagnose-vpn-routing.yml
```
Das Playbook zeigt:
- WireGuard-Status
- Routing-Konfiguration
- Traefik Access-Logs (welche Client-IPs Traefik sieht)
- DNS-Aufl?sungstests
- Firewall-Regeln

View File

@@ -0,0 +1,120 @@
# VPN Routing Fix f?r Grafana - Schritt-f?r-Schritt
## Problem
Grafana gibt 403-Fehler, obwohl VPN verbunden ist. Traefik sieht ?ffentliche Client-IP (`89.246.96.244`) statt VPN-IP (`10.8.0.7`).
## L?sung: DNS auf VPN-DNS setzen
### Schritt 1: Pr?fe aktuelle DNS-Konfiguration
**Windows:**
```powershell
# In PowerShell (als Administrator)
Get-DnsClientServerAddress | Select-Object InterfaceAlias, ServerAddresses
```
**Linux:**
```bash
cat /etc/resolv.conf
# oder
resolvectl status
```
**Mac:**
```bash
scutil --dns | grep nameserver
```
### Schritt 2: DNS-Test
```bash
# Teste DNS-Aufl?sung
dig +short grafana.michaelschiemer.de
# Oder
nslookup grafana.michaelschiemer.de
# Falls das 94.16.110.151 zur?ckgibt (?ffentliche IP) ? Problem!
# Sollte 10.8.0.1 zur?ckgeben (VPN-IP) ? OK!
```
### Schritt 3: WireGuard Config pr?fen
?ffne deine WireGuard-Config und pr?fe:
```
[Interface]
DNS = 10.8.0.1
[Peer]
AllowedIPs = 10.8.0.0/24
```
**Wichtig:** `DNS = 10.8.0.1` MUSS gesetzt sein!
### Schritt 4: WireGuard-Verbindung neu starten
1. Trenne die VPN-Verbindung
2. Starte sie neu
3. Pr?fe ob DNS jetzt 10.8.0.1 ist
### Schritt 5: DNS erneut testen
```bash
dig +short grafana.michaelschiemer.de @10.8.0.1
# Sollte zur?ckgeben: 10.8.0.1
```
### Schritt 6: Browser testen
1. **Browser-Cache leeren** (oder Inkognito-Modus verwenden)
2. ?ffne: `https://grafana.michaelschiemer.de`
3. Sollte jetzt funktionieren!
## Alternative: Hosts-Datei verwenden (tempor?r)
Falls DNS nicht automatisch funktioniert:
**Linux/Mac:**
```bash
sudo sh -c 'echo "10.8.0.1 grafana.michaelschiemer.de" >> /etc/hosts'
```
**Windows:**
```
# Als Administrator: C:\Windows\System32\drivers\etc\hosts
10.8.0.1 grafana.michaelschiemer.de
```
## Pr?fen ob es funktioniert
Nach dem Fix solltest du:
1. VPN verbunden haben
2. DNS zeigt 10.8.0.1 f?r grafana.michaelschiemer.de
3. Browser zeigt Grafana-Login statt 403-Fehler
## Server-Side Pr?fung
Auf dem Server kannst du pr?fen, welche Client-IP Traefik jetzt sieht:
```bash
ssh deploy@94.16.110.151
cd ~/deployment/stacks/traefik
tail -5 logs/access.log | grep grafana
```
**Vor dem Fix:** `ClientAddr: 89.246.96.244` (?ffentliche IP)
**Nach dem Fix:** `ClientAddr: 10.8.0.7` (VPN-IP)
## Warum funktioniert das?
- Wenn DNS auf `10.8.0.1` zeigt, wird `grafana.michaelschiemer.de` auf `10.8.0.1` aufgel?st
- Der Browser sendet die Anfrage an `10.8.0.1` (VPN-Server)
- Der Traffic geht ?ber das VPN-Interface
- Traefik sieht die VPN-Client-IP (`10.8.0.7`)
- IP-Allowlist erlaubt Zugriff ?
- Wenn DNS auf ?ffentliche DNS zeigt, wird `grafana.michaelschiemer.de` auf `94.16.110.151` aufgel?st
- Der Browser sendet die Anfrage direkt an die ?ffentliche IP
- Der Traffic geht NICHT ?ber VPN
- Traefik sieht die ?ffentliche Client-IP (`89.246.96.244`)
- IP-Allowlist blockiert Zugriff ? (403)