- opnsense-step-a-nat.md: genaue GUI-Schritte (warum SNAT auf 10.1.1.22 nötig, Aliase, Outbound-NAT, Firewall, Test) - horus/README.md: watchtower-Crashloop behoben (DOCKER_API_VERSION=1.40), mailcow ohne Auto-Update dokumentiert Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.1 KiB
Schritt A — LAN/VLAN → Horus per NAT (OPNsense)
Ziel: Interne Hosts (LAN/VLANs) erreichen Horus (10.1.1.1 + dort gehostete Dienste) über den OPNsense↔Horus-WireGuard-Tunnel. Horus kennt keine 192.168.x-Netze → Rückrouting ins Heimnetz ist nicht möglich (gewollt).
| Richtung | Verhalten |
|---|---|
| LAN/VLAN → Horus | ✅ via NAT (Quelle wird 10.1.1.22) |
| Horus → LAN/VLAN | ❌ nicht möglich (Horus kennt die Netze nicht) |
Horus ↔ 10.100.2.0/24 |
✅ bidirektional (Services, OPNsense-Peer) |
Horus ↔ 10.2.2.0/24 |
✅ über VM-101-Peer (10.1.1.5), nicht OPNsense |
Warum NAT zwingend ist
Horus' Peer-Eintrag für OPNsense hat AllowedIPs = 10.1.1.22/32, 10.100.2.0/24. WireGuard verwirft jedes Antwortpaket an eine Quelle, die nicht in diesen AllowedIPs steht. LAN-Traffic (192.168.x) muss daher vor dem Tunnel auf 10.1.1.22 ge-SNAT-et werden — sonst kommt von Horus nie eine Antwort zurück.
0. Voraussetzung
WireGuard-Instanz „horus" als Interface zuweisen (Interfaces → Assignments), Tunnel-Adresse 10.1.1.22/32, z. B. Name horusopnsense. Nötig für NAT-Interface + Firewallregeln.
1. Aliase (Firewall → Aliases)
HORUS_WG(Network):10.1.1.0/24(optional zusätzlich10.1.2.0/24, 10.1.3.0/24, 10.1.4.0/24, 10.8.0.0/24)LAN_VLANS(Network):192.168.10.0/24, 192.168.20.0/24, 192.168.30.0/24, 192.168.40.0/24, 192.168.50.0/24, 192.168.60.0/24
2. Falsche Static Route löschen (System → Routes → Configuration)
- Löschen: jede Route
10.1.1.0/24(bzw.10.1.2–4.0/24,10.8.0.0/24) → Gateway192.168.178.1— die kapert den Traffic am Tunnel vorbei. - Behalten:
10.2.2.0/24 → 192.168.10.10(VM) und10.100.2.0/24(Services).
3. Outbound NAT (Firewall → NAT → Outbound, Modus Hybrid)
Neue Regel (oben):
| Feld | Wert |
|---|---|
| Interface | horusopnsense (WG) |
| TCP/IP Version | IPv4 |
| Protocol | any |
| Source | LAN_VLANS |
| Destination | HORUS_WG |
| Translation / target | Interface address (= 10.1.1.22); falls Interface nicht zuweisbar: Single host 10.1.1.22 |
Nicht NATen: Ziele 10.2.2.0/24, 10.100.2.0/24 (bleiben geroutet).
4. Firewall-Pass (Firewall → Rules → LAN bzw. je VLAN)
| Action | Source | Destination |
|---|---|---|
| Pass | LAN-/VLAN-net | HORUS_WG |
Optional (defense in depth, eingehend auf horusopnsense): Source HORUS_WG → Dest LAN_VLANS = Block.
5. Test
- LAN-PC:
tracert 10.1.1.1→ Hop 1 OPNsense, dann Horus (kein192.168.178.x); dannping 10.1.1.1. - Auf Horus:
tcpdump -ni wg0 icmpmuss als Quelle10.1.1.22zeigen (NAT greift), nicht192.168.x.
⚠️ Falls es trotz korrekter Config nicht geht
Denk an OPNsenses fragilen CARP/State-Zustand (war Ursache des VM-101-Tunnel-Problems, siehe ../../issues/2026-06-28-vm101-horus-wireguard-nat.md). Auf beiden OPNsense-Knoten Sync prüfen, ggf. State-Tabelle zurücksetzen.