Files
bf-infra/routeros/tp21-core-wan-wg-restore.rsc
Christoph Emsenhuber f482aafc84 TP21.1: Core-Cutover-Recovery — crs326-core als L3-Router live
crs326-core ist jetzt der produktive L3-Router (ersetzt ap1, das
plattgemacht + getrennt wurde). Nach dem Cutover fehlten DHCP, WAN,
WG-Hub und DNS-Upstream -> aus dem letzten ap1-Backup
(ap1-pre-core-cutover-20260806-073616) wiederhergestellt.

- DHCP: 7 Server (dhcp-v10..v99) + 8 Networks + 54 Leases
  (routeros/tp21-core-dhcp-from-ap1.rsc; VLAN1-Legacy + omada-inform weg)
- WAN: dhcp-client vlan100 -> Liwest 90.146.33.177, NAT-Masquerade
  (nur WAN-Variante; disabled bridge/ether1-Regeln bewusst nicht),
  Blackhole-Selbst-Default-Route entfernt
- WG-Hub (TP10): Interface + fm/dw-Peers + Routen; Privkey aus
  gitignored ap1-wg-hub.privkey -> Hub-Pubkey unveraendert, beide
  Spokes handshaken (routeros/tp21-core-wan-wg-restore.rsc, Privkey redacted)
- DNS: allow-remote-requests=yes + plain 1.1.1.1 (core hat certs=0 ->
  DoH-Cloudflare-Gateway ist TODO); entsperrte auch FM (Hub-DNS)
- Identity ap1 -> crs326-core; routers.yaml auf Zielschema
  core .99.1 / branch .99.2 / ap1 .99.11 / ap2 .99.12
- disabled/invalid-Fallen bereinigt: WG-Forward-Regeln mit stale *1D
  Interface-ID -> wg-hub; tote gateway=""-WG-Routen entfernt

Doku: teilprojekte.md TP21.1 + CLAUDE.md HW-Tabelle nachgezogen.
Offene TODOs: DoH-Restore, Nautobot-Write-back, branch-88er-Check,
core ether4, ap1/ap2-Reprovisionierung (WLAN-Rebuild).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 17:36:45 +02:00

41 lines
3.0 KiB
Plaintext

# TP21.1 — crs326-core WAN + WG-Hub + NAT restore (2026-08-08)
#
# Kontext: Beim Core-Cutover (ap1 -> crs326-core als L3-Router) fehlten nach dem
# ap1-Plattmachen auf core noch WAN-Egress und der WG-Hub. DHCP wurde separat
# via tp21-core-dhcp-from-ap1.rsc wiederhergestellt.
# Quelle = letztes ap1-Backup routeros/ap1-pre-core-cutover-20260806-073616.rsc.
#
# WICHTIG (disabled-Falle): ap1 hatte 3 Masquerade-Regeln, davon 2 disabled=yes
# (out-interface=bridge / out-interface=ether1). Auf core NUR die WAN-Variante
# (out-interface-list=WAN, wobei WAN-Liste = vlan100). Die disabled-Regeln NICHT
# übernehmen.
#
# Der WG-Privkey ist ein Secret und steht NICHT hier -> aus routeros/ap1-wg-hub.privkey
# (gitignored) einsetzen. Der abgeleitete Hub-Pubkey bleibt identisch
# (P/bztIk13cAmLHbN6oHGGnWAKLZsqR5TXAbFP+NGGBk=), damit FM/DW-Spokes weiter matchen.
# --- WG-Hub (TP10 Multi-Site VPN) ---
:do { /interface wireguard add name=wg-hub listen-port=51821 mtu=1412 comment="TP10 Multi-Site VPN Hub (FM/DW spokes)" } on-error={}
:do { /interface wireguard set [find name=wg-hub] private-key="<aus routeros/ap1-wg-hub.privkey>" } on-error={}
:do { /interface wireguard peers add interface=wg-hub name=fm comment=fm allowed-address=10.101.0.0/24 endpoint-address=abxhutfgsid9snmy.myfritz.net endpoint-port=52476 public-key="dzRY0lnnUygijChWe5wXZmXPeNcbdALpqBptA3fyiVE=" } on-error={}
:do { /interface wireguard peers add interface=wg-hub name=dw comment=dw allowed-address=10.95.10.0/24 public-key="FqYZLztQ/qME5VDie5QLGH++5299WJiE1dPpQnPbzUw=" } on-error={}
:do { /ip route add dst-address=10.101.0.0/24 gateway=wg-hub comment="TP10: FM spoke -> wg-hub" } on-error={}
:do { /ip route add dst-address=10.95.10.0/24 gateway=wg-hub comment="TP10: DW spoke -> wg-hub" } on-error={}
# --- NAT (nur WAN-Variante; bridge/ether1-Masquerade bewusst NICHT) ---
:do { /ip firewall nat add action=accept chain=srcnat dst-address=10.40.0.0/16 comment="TP4: no-NAT inter-VLAN (LAN-internal, before masquerade)" } on-error={}
:do { /ip firewall nat add action=masquerade chain=srcnat out-interface-list=WAN ipsec-policy=out,none comment="defconf: masquerade" } on-error={}
# --- WAN dhcp-client auf vlan100 (Liwest); Blackhole-Selbst-Default-Route weg ---
:do { /ip dhcp-client add interface=vlan100 use-peer-dns=no use-peer-ntp=no comment="WAN Arris DHCP (Liwest) via vlan100" } on-error={}
:do { /ip route remove [find dst-address=0.0.0.0/0 gateway=10.40.99.1] } on-error={}
# --- DNS-Resolver (PROVISORISCH plain, DoH-TODO s.u.) ---
# core hatte allow-remote-requests=no + leeren Upstream -> Client-DNS tot + FM-Hub
# konnte myfritz nicht auflösen. Fix (plain, weil core keine CA-Certs hat -> certs=0,
# verify-doh-cert unmöglich):
:do { /ip dns set allow-remote-requests=yes servers=1.1.1.1 } on-error={}
# TODO (spätere Session, VOR/mit WLAN-Rebuild): CA-Bundle auf core importieren, dann
# DoH-Cloudflare-Gateway wie ap1 setzen:
# /ip dns set use-doh-server=https://px35ynlol3.cloudflare-gateway.com/dns-query verify-doh-cert=yes