Doku: Horus Internet-Gateway (Handy + OPNsense LAN).
Road-Warrior-Setup mit UFW wg0→eth0 und pixel7-Config; OPNsense-LAN-Exit über HORUS_GW + Outbound-SNAT 10.1.1.22 als verifizierter Breakpoint. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -39,6 +39,7 @@ Direkter WireGuard-Tunnel zwischen **OPNsense** (lokales Netz) und **Horus** (VP
|
||||
|-------|--------|
|
||||
| [opnsense-client.conf](opnsense-client.conf) | Keys, PSK, Endpoint (OPNsense) |
|
||||
| [opnsense-step-a-nat.md](opnsense-step-a-nat.md) | **OPNsense-Setup** (Route, Firewall, NAT) |
|
||||
| [opnsense-internet-gateway.md](opnsense-internet-gateway.md) | **Optional:** LAN-Internet-Exit über Horus (GUI-only) |
|
||||
| [horus-server-peer-opnsense.conf](horus-server-peer-opnsense.conf) | Horus Peer-Block |
|
||||
| [wg0-opnsense-routes.sh](wg0-opnsense-routes.sh) | Horus Route-Script |
|
||||
| [vm101-client.conf](vm101-client.conf) / [horus-server-peer-vm101.conf](horus-server-peer-vm101.conf) | VM-Tunnel (getrennt) |
|
||||
@@ -66,6 +67,8 @@ Fritzbox: OPNsense in **DMZ** — kein extra WAN-Forwarding für WG.
|
||||
- Peer `walbWTYX…`: AllowedIPs `10.1.1.22/32`, `10.100.2.0/24`
|
||||
- `wg0-opnsense-routes.service` für Kernel-Routen zu OPNsense/Services
|
||||
- VM-Peer: `10.1.1.5/32`, `10.2.2.0/24` only
|
||||
- **Road-Warrior Internet-Gateway** (pixel7): [../../horus/wireguard-internet-gateway.md](../../horus/wireguard-internet-gateway.md)
|
||||
- **LAN-Internet über OPNsense:** [opnsense-internet-gateway.md](opnsense-internet-gateway.md) — Gateway `10.1.1.1` + **SNAT `10.1.1.22`** (verifiziert 2026-06-28)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
# OPNsense — Internet optional über Horus (LAN-Gateway)
|
||||
|
||||
**Stand:** 2026-06-28
|
||||
**Status:** **Verifiziert** — Gateway `HORUS_GW` (`10.1.1.1` auf `wg_horus`) + **Outbound SNAT** auf `10.1.1.22` · Exit-IP `207.180.222.207`
|
||||
**Agent:** kein OPNsense-Zugang — Breakpoint war fehlendes SNAT, nicht das Gateway
|
||||
|
||||
Das ist **nicht** dasselbe wie beim Handy (pixel7): Dort trägt der Client selbst `0.0.0.0/0` in WireGuard.
|
||||
Hinter OPNsense entscheidet der **Router** per Gateway/Firewall/NAT, welcher LAN-Traffic über `wg_horus` rausgeht.
|
||||
|
||||
---
|
||||
|
||||
## Wann welches Modell?
|
||||
|
||||
| Modell | Wer | Mechanismus | Doc |
|
||||
|--------|-----|-------------|-----|
|
||||
| **Road Warrior** | Handy/Laptop mit WG-App | Client-Config `AllowedIPs = …, 0.0.0.0/0` | [../../horus/wireguard-internet-gateway.md](../../horus/wireguard-internet-gateway.md) |
|
||||
| **LAN über OPNsense** | PCs hinter OPNsense | OPNsense-Gateway + Firewall + Outbound-NAT auf `wg_horus` | **dieses Doc** |
|
||||
|
||||
**Basis-Site-to-Site** (Horus-Netze, LAN→Horus) bleibt: [opnsense-step-a-nat.md](opnsense-step-a-nat.md) — **nicht** entfernen.
|
||||
|
||||
---
|
||||
|
||||
## Topologie (LAN-Internet via Horus)
|
||||
|
||||
```
|
||||
LAN-PC (192.168.x) → OPNsense → wg_horus (SNAT 10.1.1.22) → Horus → eth0/NAT → Internet
|
||||
Exit-IP im Internet: 207.180.222.207
|
||||
```
|
||||
|
||||
**Horus (bereits erledigt, 2026-06-28):**
|
||||
|
||||
- `ip_forward=1`
|
||||
- UFW route `wg0 → eth0` (+ Rückweg)
|
||||
- `MASQUERADE` auf `eth0` (alle Quellen inkl. `10.1.1.22`)
|
||||
- Routing-Test: `ip route get 8.8.8.8 from 10.1.1.22 iif wg0` → via `eth0` ✓
|
||||
|
||||
**Wichtig:** Wenn du am OPNsense testest und es wieder deaktivierst, sieht Horus **keinen** Internet-Traffic von `10.1.1.22` — tcpdump bleibt leer. Das ist normal.
|
||||
|
||||
---
|
||||
|
||||
## Empfohlen: nur bestimmte LAN-Hosts (Policy Gateway)
|
||||
|
||||
**Nicht** gleich `0.0.0.0/0` als Static Route fürs ganze OPNsense — das killt den normalen WAN-Weg über Fritzbox.
|
||||
|
||||
### 1. Gateway anlegen
|
||||
|
||||
**System → Routing → Gateways → Single → Add**
|
||||
|
||||
| Feld | Wert |
|
||||
|------|------|
|
||||
| Name | `HORUS_INET` |
|
||||
| Interface | **`wg_horus` (opt10)** |
|
||||
| Gateway | **`10.1.1.1`** ← Horus-Tunnel-IP |
|
||||
| Monitor | optional aus, oder Monitor-IP `1.1.1.1` (nur wenn du weißt was du tust) |
|
||||
| Default Gateway | **Nein** |
|
||||
|
||||
**Häufiger Fehler:** Gateway `192.168.178.1` (Fritzbox) oder `10.1.1.21` — **falsch**, Interface liegt am Tunnel.
|
||||
|
||||
### 2. Outbound NAT (Internet, nicht nur Horus-Netze) — **Pflicht**
|
||||
|
||||
Step A ([opnsense-step-a-nat.md](opnsense-step-a-nat.md)) NATet nur **LAN → `HORUS_WG`** (z. B. `10.1.1.0/24`).
|
||||
|
||||
**Ohne SNAT funktioniert es nicht**, auch wenn Gateway-Monitoring auf `10.1.1.1` grün ist: Monitoring pingt nur OPNsense→Horus; LAN-Traffic hat sonst Quelle `192.168.x` — Horus kennt den Rückweg nicht (Peer nur `10.1.1.22/32`).
|
||||
|
||||
Für **Internet** brauchst du **zusätzlich** (Hybrid-Modus, Regel **oben**):
|
||||
|
||||
| Feld | Wert |
|
||||
|------|------|
|
||||
| Interface | **`wg_horus`** |
|
||||
| Source | Alias z. B. `HORUS_INET_CLIENTS` (nur die PCs die Horus-Exit nutzen sollen) |
|
||||
| Destination | **`any`** |
|
||||
| Translation | **Interface address** → `10.1.1.22` |
|
||||
|
||||
Ohne diese Regel: Horus sieht ggf. `192.168.x` als Quelle oder verwirft/ routet falsch.
|
||||
|
||||
### 3. Firewall LAN
|
||||
|
||||
**Firewall → Rules → LAN** (Regel **über** block/deny):
|
||||
|
||||
| Feld | Wert |
|
||||
|------|------|
|
||||
| Action | Pass |
|
||||
| Source | `HORUS_INET_CLIENTS` |
|
||||
| Destination | `any` |
|
||||
| Gateway | **`HORUS_INET`** |
|
||||
| Description | `Internet via Horus WG` |
|
||||
|
||||
Rest des LANs: **kein** Gateway → normaler WAN-Weg (Fritzbox).
|
||||
|
||||
### 4. WireGuard Peer „horus“ — Allowed IPs
|
||||
|
||||
**Für Policy-Gateway reicht meist:**
|
||||
|
||||
```
|
||||
10.1.1.0/24, 10.1.2.0/24, 10.1.3.0/24, 10.1.4.0/24, 10.8.0.0/24
|
||||
```
|
||||
|
||||
**Kein** `0.0.0.0/0` nötig, wenn du nur per Firewall-Gateway routest.
|
||||
|
||||
**Disable routes** kann **an** bleiben — Static Route `10.1.1.0/24 → 10.1.1.1` via `wg_horus` (Step A) bleibt.
|
||||
|
||||
### 5. DNS
|
||||
|
||||
Clients hinter OPNsense nutzen weiter OPNsense/Unbound — **nicht** automatisch Horus-DNS.
|
||||
Wenn Browser „tot“, obwohl `ping 8.8.8.8` geht: DNS/Filter auf OPNsense prüfen, nicht Horus-NAT.
|
||||
|
||||
---
|
||||
|
||||
## Alternative (riskant): gesamtes OPNsense-Internet über Horus
|
||||
|
||||
Nur wenn bewusst gewollt (Surfshark/WAN entfällt als Default):
|
||||
|
||||
- Peer Allowed IPs um **`0.0.0.0/0`** erweitern **oder** Default-Route via `10.1.1.1` auf `wg_horus`
|
||||
- Outbound NAT auf `wg_horus` für **`any`**
|
||||
- Konflikt mit **mehreren WG-Instanzen** (Surfshark, WGServer) — „Disable routes“ und Routing-Tabelle genau prüfen
|
||||
|
||||
**Nicht empfohlen** ohne klaren Plan — schnell kein Internet mehr über Fritzbox.
|
||||
|
||||
---
|
||||
|
||||
## Tests (Reihenfolge)
|
||||
|
||||
| # | Wo | Befehl | Erwartung |
|
||||
|---|-----|--------|-----------|
|
||||
| 1 | OPNsense | Diagnostics → Ping, Source **wg_horus** → `10.1.1.1` | ok (~17 ms) |
|
||||
| 2 | Horus | `ping 10.1.1.22` | ok |
|
||||
| 3 | LAN-Test-PC (mit Gateway-Regel) | `ping 8.8.8.8` | ok |
|
||||
| 4 | LAN-Test-PC | `curl -4 ifconfig.me` | **`207.180.222.207`** |
|
||||
| 5 | Horus (während Test) | `tcpdump -ni wg0 host 10.1.1.22 and not net 10.1.0.0/16` | Traffic zu 8.8.8.8/443 |
|
||||
| 6 | Anderer LAN-PC (ohne Regel) | `curl ifconfig.me` | **Fritzbox-WAN-IP**, nicht Horus |
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting (OPNsense — Agent blind)
|
||||
|
||||
| Symptom | Erste Prüfung in OPNsense GUI |
|
||||
|---------|-------------------------------|
|
||||
| Gateway-Monitoring ok, LAN-Internet tot | **Outbound SNAT** auf `wg_horus` → `10.1.1.22`, Destination **`any`** fehlt (häufigster Fix) |
|
||||
| Gar kein Traffic auf Horus | Gateway **`10.1.1.1`**, Interface **`wg_horus`**, Firewall-Regel mit Gateway gesetzt? |
|
||||
| Handshake ok, LAN-Internet tot | Outbound NAT **`any`** auf `wg_horus`, nicht nur `HORUS_WG` |
|
||||
| Nur Horus-Netze ok | Step A ok, Step Internet-NAT fehlt (s.o.) |
|
||||
| Alles tot nach Experiment | Static Route / Allowed IPs `0.0.0.0/0` wieder entfernen, Default Gateway WAN reaktivieren |
|
||||
| Live View leer | Traffic geht noch über WAN — Gateway-Regel greift nicht (Source/Order) |
|
||||
|
||||
**Firewall → Log Files → Live View** während Test — einziger zuverlässiger Beweis ohne SSH.
|
||||
|
||||
---
|
||||
|
||||
## Deaktivieren (Rollback)
|
||||
|
||||
1. Firewall-Regel „Internet via Horus WG“ **disable/delete**
|
||||
2. Outbound-NAT-Regel `wg_horus` → **`any`** **disable/delete**
|
||||
3. Gateway `HORUS_INET` optional löschen
|
||||
4. **Nicht** Step-A-Regeln (LAN→Horus-Netze) anfassen
|
||||
|
||||
Danach tcpdump auf Horus wieder leer — erwartet.
|
||||
|
||||
---
|
||||
|
||||
## Referenzen
|
||||
|
||||
| Doc | Inhalt |
|
||||
|-----|--------|
|
||||
| [opnsense-step-a-nat.md](opnsense-step-a-nat.md) | Site-to-Site + LAN→Horus-Netze |
|
||||
| [../../horus/wireguard-internet-gateway.md](../../horus/wireguard-internet-gateway.md) | Handy/Road Warrior |
|
||||
| [../../issues/2026-06-28-opnsense-horus-wireguard-lan.md](../../issues/2026-06-28-opnsense-horus-wireguard-lan.md) | Gateway-Fehler `.21`/Fritzbox |
|
||||
Reference in New Issue
Block a user