- Gelis CGNAT ist nur v4 â ihre FB ĂŒber natives v6 erreichbar (Port offen). WARP (schon im Einsatz) liefert Christoph outbound-v6 trotz Liwest-v4-only. - PoC = ad-hoc Fernwartung; Daueform = direktes WG ap1âGeli-FB ĂŒber echtes v6 (HE-6in4, da Liwest auch mit Fiber kein v6) statt Hub-Spoke-Gymnastik. - EndgerĂ€te (Note10, Cudy) bleiben v6-agnostisch: v6 nur Ă€uĂerer Transport, LAN bleibt IPv4. Nicht fĂŒr Telefonie. - teilprojekte.md: TP10 von âž PAUSIERT auf đ żïž VERTAGT (Bridge-Cutover-BĂŒndelung). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
92 lines
7.0 KiB
Markdown
92 lines
7.0 KiB
Markdown
# TP10 â Multi-Site-VPN-Migration (2Ă AVM-S2S â 2Ă WireGuard, Hub auf ap1)
|
||
|
||
> Stand 2026-06-16 · Research: `docs/research/vpn-comparison.md` · Plan: `~/.claude/plans/pure-wibbling-graham.md`
|
||
> gated: permanenter FB-Bridge-Mode (AP4.1) hÀngt an diesem TP.
|
||
> **Reihenfolge fix: VPNs migrieren â Liwest-Anruf (Bridge) â FB wird Modem.**
|
||
|
||
> ## đ
żïž STATUS 2026-06-17: VERTAGT â gebĂŒndelt mit dem FB-Bridge-Cutover
|
||
> **Entscheidung:** TP10 nicht mehr als Parallel-Migration vorab, sondern **zusammen mit dem permanenten Bridge-
|
||
> Cutover** (VPN-auf-FB â FB-Bridge schlieĂen sich aus). Am Bridge-Tag hat ap1 die echte Public-IP â **kein
|
||
> FB-Port-Forward-Umweg** mehr; Spokes zeigen direkt auf ap1 (DDNS). **FM-PoC â
** hat den Fix bewiesen (Root Cause:
|
||
> FB masqueradet, wenn die WG-Interface-`Address` eine **Transfernetz-IP** statt der **FB-LAN-IP** ist â AVM Proxy-ARP).
|
||
> **Park-Zustand ap1:** Peers `disabled`, WG-Routen entfernt (FM/DW wieder ĂŒber die FB), `wg-hub` bleibt (Key erhalten),
|
||
> Firewall bleibt (TP5-Vorarbeit). Beide VPN vorerst ĂŒber die FB: **FM = IPsec, DW = FB-WG.**
|
||
> **Resume:** `routeros/fritzbox-wg-lanlan-klickanleitung.md` (FB-LAN-IP als Interface-Adresse, Verify gegen `10.101.0.10`).
|
||
|
||
## đĄ Variante DW/Geli â v6-direkt statt CGNAT-Spoke (Idee 2026-06-17, fĂŒr spĂ€ter)
|
||
Gelis CGNAT ist **nur v4**; ihre FritzBox hat **öffentliches natives v6** (`2a0e:7a02:31c:3000::/56`, rotiert ~30h â
|
||
MyFRITZ-DDNS) â ihre FB ist **ĂŒber v6 von auĂen erreichbar**. Der **v6-Inbound-Port auf Gelis FB ist bereits offen.**
|
||
- **Sofort/PoC (ad-hoc Fernwartung, da Geli kein Zero Trust hat):** Christophs **WARP** (schon im Einsatz) gibt ihm
|
||
outbound-v6 trotz Liwest-v4-only â `Christoph(WARP-v6) â CF-Edge â Gelis v6-FB`. CGNAT-immun, reversibel.
|
||
Nur Fernwartung â **nicht** fĂŒr Telefonie (Calls = Messenger-Relays).
|
||
- **Daueform (sauberer):** echtes v6 auf BF-Seite via **HE-6in4** (Liwest gibt voraussichtlich **auch mit Fiber kein v6**)
|
||
â **direktes WireGuard ap1âGeli-FB ĂŒber v6**, kein Cloudflare im Datenpfad, kein Tunnel-in-Tunnel (WARP ist selbst WG),
|
||
**umgeht die ganze Hub-&-Spoke-CGNAT-Gymnastik** unten (Geli mĂŒsste nicht mehr outbound zum Hub initiieren â v6âv6 ist
|
||
symmetrisch erreichbar). Siehe Memory `project-ipv6-state`.
|
||
- **EndgerĂ€te bleiben v6-agnostisch:** v6 ist **nur der Ă€uĂere Transport** zwischen FB-WAN und Christophs Endpunkt; im
|
||
Tunnel lĂ€uft Gelis LAN weiter **rein IPv4** (192.168.178.0/24). Ihre GerĂ€te (Galaxy Note 10, Cudy-APs als Bridge, NAS âŠ)
|
||
mĂŒssen **kein v6 können** â sie sehen nie ein v6-Paket. v6-EigenfĂ€higkeit eines Backend-GerĂ€ts wĂ€re nur nötig, wollte man
|
||
es **direkt ohne Tunnel** ĂŒber v6 erreichen (klobig: Freigabe pro GerĂ€t + rotierendes Prefix) â macht man nicht.
|
||
|
||
## Zielbild
|
||
- **ap1 (hAP axÂČ, 7.23.1) = WireGuard-Hub** (nativ). FM & DW = FritzBox-Spokes (hub-&-spoke, keine Zusatz-HW).
|
||
- Ablösung der **2 produktiven AVM-LAN-LAN-Tunnel** auf der BF-FB â **2Ă WireGuard auf ap1**:
|
||
- **FM** `10.101.0.0/24` (GW .254) â war **IPsec**.
|
||
- **DW/Geli** `192.168.178.0/24` (GW .1, **CGNAT**, Antennengemeinschaft GeroldsgrĂŒn) â war **WireGuard**.
|
||
|
||
## â
As-built auf ap1 (Phase A erledigt, 2026-06-16)
|
||
| Objekt | Wert |
|
||
|---|---|
|
||
| Interface `wg-hub` | Listen **UDP 51821**, MTU 1412, **keine IF-IP**, running |
|
||
| Hub-Public-Key | `P/bztIk13cAmLHbN6oHGGnWAKLZsqR5TXAbFP+NGGBk=` |
|
||
| Endpoint (fĂŒr Spokes) | **`xvbeo64jqlqd9gfo.myfritz.net:51821`** (MyFRITZ-FQDN) |
|
||
| Peer FM (`peer1`) | pub `dzRY0lnnUygijChWe5wXZmXPeNcbdALpqBptA3fyiVE=`, allowed `10.255.255.2/32,10.101.0.0/24`, Endpoint leer |
|
||
| Peer DW (`peer2`) | pub `FqYZLztQ/qME5VDie5QLGH++5299WJiE1dPpQnPbzUw=`, allowed `10.255.255.3/32,192.168.178.0/24`, Endpoint leer |
|
||
| Route | `10.101.0.0/24` â wg-hub · `192.168.178.0/24` â wg-hub (beide active) |
|
||
| Firewall | input accept udp/51821 · forward accept in/out wg-hub (TP5-Vorarbeit) |
|
||
| NAT | **keine Ănderung nötig** â masquerade ist out-interface bridge/ether1; Tunnel-Egress = wg-hub â nie NATed |
|
||
|
||
**Port 51821 (statt 51820):** Die BF-FB hĂ€lt ihren eigenen WG-Server auf 51820 fĂŒr den **noch laufenden DW-Tunnel**.
|
||
51821 fĂŒr den Hub vermeidet die Kollision wĂ€hrend der Parallelphase.
|
||
|
||
**Spoke-Configs (Private-Keys, NICHT im Git):** `routeros/.secrets/wg-fm.conf`, `routeros/.secrets/wg-dw.conf`.
|
||
|
||
## â
Vorbedingung (User erledigt)
|
||
- **FB-Portfreigabe** UDP **51821** â `10.40.41.1` (ap1) gesetzt.
|
||
|
||
## Phase B â Cutover (pro Spoke, Parallelphase) â OFFEN
|
||
> Pro Standort: neuen WG-Tunnel hochziehen, **verifizieren**, erst dann den alten AVM-Tunnel abschalten.
|
||
|
||
### B1 â FM zuerst (alter IPsec-Tunnel bleibt parallel an)
|
||
1. `routeros/.secrets/wg-fm.conf` in die **FM-FritzBox** importieren:
|
||
`Internet â Freigaben â VPN (WireGuard) â Verbindung hinzufĂŒgen â eigene Konfiguration importieren`.
|
||
- â ïž Falls FRITZ!OS keinen Import mit vorgegebenem Key erlaubt: FB-WG-Verbindung manuell anlegen, FB-**Public-Key**
|
||
ablesen und melden â wird in `peer1` auf ap1 eingetragen (`manage_wireguard_peer` set public-key).
|
||
2. **Handshake prĂŒfen:** `list_wireguard_peers` â `peer1` last-handshake aktuell, rx/tx > 0.
|
||
3. **L3-Verify (NetBIOS-Lehre, s.u.):** Ping ap1 â ein Host in `10.101.0.0/24`; Gegenrichtung FM â BF-Host (NAS);
|
||
**SMB per IP (TCP 445)** testen, **nicht** Netzwerkumgebung/Broadcast.
|
||
4. GrĂŒn â **IPsec-Tunnel** fĂŒr FM auf der BF-FB deaktivieren â erneut prĂŒfen.
|
||
|
||
### B2 â DW/Geli danach (alter FB-WG-Tunnel auf 51820 bleibt parallel an)
|
||
5. `routeros/.secrets/wg-dw.conf` in die **DW-FritzBox** importieren (CGNAT â wĂ€hlt ausgehend, Keepalive 25).
|
||
6. Handshake + L3-Verify (Ping/SMB per IP in `192.168.178.0/24` â BF).
|
||
7. GrĂŒn â alten **DW-WG-Server/Tunnel** auf der BF-FB abbauen.
|
||
|
||
## NetBIOS / Namensauflösung (FM â bekannter Stolperstein)
|
||
FrĂŒherer FM-WG-Versuch scheiterte an âNetBIOS nicht geroutet". NetBIOS-Namensauflösung lĂ€uft ĂŒber **Broadcasts
|
||
(UDP 137/138)**, die ĂŒber einen *gerouteten* Tunnel grundsĂ€tzlich nicht traversieren â kein Routing-Bug.
|
||
â **L3 zuerst per IP beweisen** (Ping + SMB/445); Namensauflösung per **IP oder DNS** lösen (statische EintrĂ€ge),
|
||
nicht ĂŒber Broadcast-Browsing. Unser Design fĂŒhrt beide Richtungen in AllowedIPs/Routes â unicast muss laufen.
|
||
|
||
## Phase C â Abschluss (nach beidseitig grĂŒn, â„1 Tag stabil)
|
||
8. TP5-Firewall auf ap1 finalisieren (WG-Regeln behalten).
|
||
9. **DDNS-Ăbergabe:** MyFRITZ lĂ€uft ĂŒber die FB, entfĂ€llt evtl. im Bridge-Mode â ap1 braucht eigenes DDNS
|
||
(`/ip cloud` mynetname / DynDNS); Spoke-Endpoints dann auf ap1-FQDN umstellen.
|
||
â ïž PrĂŒfen, ob `/ip cloud` trotz device-mode=home lĂ€uft (scheduler/fetch geblockt).
|
||
10. **Liwest-Anruf** fĂŒr FB-Bridge-Mode â FB wird Modem, ether1 = WAN, Portfreigabe entfĂ€llt.
|
||
11. Entblockt: NAS/Controller-IP-Migration (IP-Plan Phase 3) + Wegfall Double-NAT.
|
||
|
||
## RĂŒckbau (falls nötig)
|
||
- ap1-Seite vollstÀndig reversibel: Peers/Routen/Firewall via `manage_*` `action=remove`, `wg-hub` löschen.
|
||
- Alte AVM-Tunnel erst nach Verifikation abschalten â jederzeit reaktivierbar.
|