Files
docu/issues/2026-06-28-opnsense-horus-wireguard-lan.md
root 3783762769 Doku: OPNsense↔Horus WG produktiv (Route, Firewall, LAN/NAT).
Issue-Vorfall 2026-06-28, opnsense-step-a-nat und README mit Gateway 10.1.1.1 und wg_horus-Regeln.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 17:55:51 +02:00

128 lines
4.9 KiB
Markdown

# OPNsense ↔ Horus WireGuard — Tunnel + LAN (2026-06-28)
**Datum:** 2026-06-28
**Status:** gelöst
**Betroffen:** WireGuard OPNsense (`wg_horus` / opt10, `10.1.1.22`) ↔ Horus (`10.1.1.1`), LAN/VLAN → Horus
---
## Symptom
| Test | Ergebnis |
|------|----------|
| WireGuard-Handshake OPNsense ↔ Horus | ✅ (trotzdem wirkte Tunnel „tot“) |
| OPNsense → Horus (`ping 10.1.1.1`, Source **wg_horus**) | ❌ → später ✅ |
| Horus → OPNsense (`ping 10.1.1.22`) | ❌ → später ✅ |
| LAN/PC → `10.1.1.1` | ❌ → ✅ nach Gateway-Fix + NAT |
Typisch: **Bytes gesendet, Handshake da**, aber **Ping/Daten innen tot** — sieht aus wie „Tunnel kaputt“, ist aber oft **Routing + Firewall auf dem zugewiesenen WG-Interface**.
---
## Fehldiagnosen (Zeitfresser)
| These | Wahrheit |
|-------|----------|
| Keys/PSK auf Horus falsch (VM-Tunnel) | **Nein** — siehe [2026-06-28-vm101-horus-wireguard-nat.md](2026-06-28-vm101-horus-wireguard-nat.md) |
| Horus-Route-Skript `wg0-opnsense-routes.sh` blockiert Ping | **Nein** — betrifft nur Horus-Routing **zu** OPNsense/LAN, nicht OPNsense→Horus |
| Fritzbox / fehlende WAN-Zuweisung | **Nein** — OPNsense steht in **Fritzbox-DMZ**; Handshake beweist UDP hin+her |
| Nur LAN-Firewall fehlt | **Teilweise** — ohne funktionierenden **Tunnel innen** nützt LAN nichts |
---
## Echte Ursachen (drei Stellen)
### 1. Keine Route zu Horus auf OPNsense (`Disable routes` = an)
Mit **Disable routes** am Peer legt OPNsense **keine** Routen aus Allowed IPs an → **manuelle Static Route** nötig.
**Falsch:**
- Gateway `10.1.1.21` (existiert nicht — Tunnel-IP ist **`10.1.1.22`**, Horus **`10.1.1.1`**)
- Route `10.1.1.0/24 → 192.168.178.1` (Fritzbox statt Tunnel)
**Richtig:**
```
Network: 10.1.1.0/24
Gateway: 10.1.1.1 ← Horus-Tunnel-IP (Peer-Gegenstelle)
Interface: wg_horus (opt10)
```
**Allowed IPs** am Peer trotzdem setzen (`10.1.1.0/24, …`) — WireGuard-Crypto, unabhängig von Disable routes.
### 2. Firewall auf **`wg_horus` (opt10)** — nicht nur LAN/WAN
Handshake läuft im Kernel; **innerer Traffic** (ICMP/IP) braucht Regeln auf dem **zugewiesenen Interface**:
| Regel | Source | Destination | Zweck |
|-------|--------|-------------|--------|
| Pass | `10.1.1.0/24` | **This Firewall** | Horus → OPNsense (`ping 10.1.1.22`) |
| Pass | **This Firewall** / `10.1.1.22` | `10.1.1.0/24` | OPNsense → Horus (Diagnostics-Ping mit Source wg_horus) |
Ohne Inbound-Regel: Horus pingt, OPNsense antwortet nicht → 100 % Loss trotz Handshake.
### 3. LAN → Horus (Step A)
- **Firewall** auf LAN/VLAN: Pass → `10.1.1.0/24`
- **Outbound NAT** auf **`wg_horus`**: VLAN-Quellen → `10.1.1.0/24` → SNAT **`10.1.1.22`**
Horus-Peer kennt nur `10.1.1.22/32` + `10.100.2.0/24` — ohne NAT sieht Horus `192.168.x` und antwortet nicht sinnvoll.
**Gateway-Fix** (`10.1.1.1` statt `.21`) war der letzte Blocker für LAN.
---
## Lösung (Kurz)
1. **Interfaces → Assignments:** `wg_horus` (opt10) zugewiesen
2. **Peer horus:** Allowed IPs `10.1.1.0/24, …`, **Disable routes = an** (wegen mehrerer WG-Tunnel)
3. **Static Route:** `10.1.1.0/24 → 10.1.1.1` via **wg_horus**
4. **Firewall wg_horus:** Pass ICMP (bzw. any) von `10.1.1.0/24` → This Firewall **und** Richtung raus
5. **Firewall LAN/VLAN:** Pass → `10.1.1.0/24`
6. **Outbound NAT (Hybrid):** Interface `wg_horus`, SNAT `10.1.1.22`
7. **Listen Port** Instanz z. B. `51821` (nach NAT-State-Problemen sinnvoll; VM 101 nutzt weiter eigenen Port)
---
## Verifikation
```bash
# Auf Horus (via VM 101):
ping -c3 10.1.1.22 # ~16 ms
ping -c3 10.1.1.5 # VM-Peer Vergleich
# OPNsense GUI:
# Diagnostics → Ping, Source = wg_horus, Dest = 10.1.1.1 → ~17 ms
# LAN (pve1 / PC):
ping -c3 10.1.1.1
# Horus während LAN-Ping:
tcpdump -ni wg0 icmp and host 10.1.1.1
# Quelle muss 10.1.1.22 sein (NAT), nicht 192.168.x
```
---
## Breakpoint-Matrix (für nächstes Mal)
| Symptom | Breakpoint |
|---------|------------|
| Handshake ok, OPNsense ping 10.1.1.1 fail (ohne Source) | Route fehlt / falsches Gateway |
| OPNsense ping ok **nur** mit Source `wg_horus` | Static Route + Outbound-FW wg_horus |
| Horus ping 10.1.1.22 fail | **Inbound-FW** wg_horus (10.1.1.0/24 → This Firewall) |
| Tunnel ok, LAN fail | LAN-FW + Outbound NAT + Gateway `10.1.1.1` |
| tcpdump Horus: kein LAN-Traffic | OPNsense vor WG (Route/FW LAN) |
| tcpdump Horus: 192.168.x statt 10.1.1.22 | Outbound NAT fehlt |
---
## Referenzen
- Setup: [../shared/horus-opnsense-wireguard/README.md](../shared/horus-opnsense-wireguard/README.md)
- Step A NAT: [../shared/horus-opnsense-wireguard/opnsense-step-a-nat.md](../shared/horus-opnsense-wireguard/opnsense-step-a-nat.md)
- VM-101-NAT-Vorfall: [2026-06-28-vm101-horus-wireguard-nat.md](2026-06-28-vm101-horus-wireguard-nat.md)
**⛔ VM 104 (OPNsense) nie per Agent `qm stop/start` — siehe [../pve1/04_fallback_aktivierung.md](../pve1/04_fallback_aktivierung.md).**