Christoph Emsenhuber f6283fd813 TP16.3 §5: die sechs AP-Drifts ins Soll, 28. Regel interface-veth
veth / ip address / ip firewall nat der drei cloudflared-Connectoren standen seit
der Vor-Ort-Session per Direkt-Write am Geraet (Runbook §3.4), waehrend /ip address
und /ip firewall unter GC-Drift-Kontrolle stehen: sechs extra-Drifts, Compliance
128/135. Sie sind inhaltlich richtig und sollen DAUERHAFT gelten -- deshalb ins
Template und nicht in eine gc-transaktion (die ist fuer befristete Versuche).
Kein Re-Baseline, kein Rueckbau, keine Zeile aufs Geraet: nur die SoT nachgezogen.

Neu ist die 28. ComplianceRule interface-veth. Vorher gab es fuer /interface veth
keine Regel -- das tragende Stueck des ganzen Aufbaus haette geloescht werden
koennen, ohne dass irgendetwas meldet.

Zwei Funde:

(a) Der veth-Export traegt zwei geraetevergebene MACs (mac-address,
    container-mac-address), auf jedem AP anders. Eine nackte Regel haette damit
    Dauer-Drift auf allen drei APs erzeugt, also genau die immer-rote Zahl, die
    niemand mehr liest. Zwei eng auf die veth-Zeile verankerte ConfigReplace-Regeln
    normalisieren sie im Backup (Lookbehind haelt container-mac-address heraus,
    [^\n]*? haelt die Regel in der Zeile; Selbsttest mit Negativfaellen im Skript).
    Bewusst mit der vorhandenen Maske <<REDACTED>> statt einer eigenen: sie ist im
    Repo zugleich die Push-Sperre (gc-configplan.py verweigert config_set damit) --
    eine Zeile mac-address=<<...>> darf nie aufs Geraet.
    Kostet Backup-Treue: die veth-MACs stehen in bf-golden-config nicht mehr im
    Klartext. Vertretbar, RouterOS vergibt sie beim Neuanlegen ohnehin neu.
    Verworfene Alternative: MACs je Geraet modellieren -- widerspricht der
    Begruendung, die fuer die VAP-MACs schon im ConfigContext-Skript steht.

(b) Der erste Compliance-Lauf meldete SUCCESS und war trotzdem unvollstaendig:
    139 statt 140 Eintraege, crs326-core/interface-veth fehlte, im Job-Log
    "RENDER COMPLIANCE TASK GROUP failed: Broken pipe". Zweiter Lauf sauber.
    Merkregel im Runbook (Falle 16): Abnahme ist die ANZAHL der Eintraege
    (Regeln x Geraete), nicht die Konformitaetsquote.

Stand danach: 139/140. Uebrig bleibt genau crs326-core/wifi-security -- die offene
Transaktion TP25-fund-e-ft-over-ds einer laufenden Messung, die bleiben muss.

Ausserdem: frischer Ingress-Snapshot von bf-public vor §5 und das geschaerfte
§5.1-Erfolgskriterium (200 mit leerem Body + server: Caddy = Strecke bewiesen,
404 = Ingress-Regel fehlt) -- am Live-System gemessen, nicht angenommen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 20:13:47 +02:00
2026-06-15 19:00:40 +02:00

bf-infra

BF-Netzwerk-Infrastruktur (Caddy, AGH, MikroTik-Konfig, Dokumentation, MCPs). Aktiver Fork von bf-network-r6 (Claude-Code-Architektur, 2025-2026), ab August 2026 unter OpenCode und anderem LLM weitergepflegt.

Master-Struktur

Repo Rolle Stand
~/dev/bf-infra/ + admin/bf-infra (Gitea) Aktiver Master Remote seit 2026-08-30, main synchron — Backup-Lücke geschlossen
admin/bf-network-r6 (Gitea) Archiv, historischer Master read-only-Header, letzte aktive Commits 2026-08-25
admin/bf-golden-config (Gitea) Bot-Master (Nautobot 2×/Tag) intended/ + backups/, nicht manuell
admin/blaueblueten-n8n (Gitea) Master für terpene-Repo aktiv, lokal synchron

Was hier lebt

  • docs/teilprojekte.md — kanonische Steuerung (Ist-Stand, offene TPs, kritischer Pffad)
  • docs/teilprojekte-archiv.md — abgeschlossene TPs (Volltext)
  • docs/handoff-*.md — Session-Übergaben
  • caddy/Caddyfile — Reverse-Proxy BF (siehe TP34 für Migration zu Nautobot/GC)
  • nautobot/ — Skripte + Jinja-Template für Golden Config
  • mcp/ — MCP-Server-Inventar (SSoT gegen „1000 MCP-Leichen")
  • inventory/ — entfernt 2026-08-27 (Pipeline seit 2025-06 stale; Live-Daten via MikroMCP/CF/Portainer)

Status (2026-08-27)

  • L3 + WAN-Edge = crs326-core, alle 4 MikroTik auf RouterOS 7.24 (TP27)
  • Firewall deny-by-default seit 2026-08-18 (TP5)
  • WLAN via CAPsMAN auf dem Core seit 2026-08-17 (TP28)
  • Compliance 104/104 grün, 0 Drifts (Golden Config, TP22)
  • AdGuard-Paar agh-bf1/agh-bf2 aufgebaut, DHCP noch nicht umgestellt (TP23 Stufe 2 / TP31 Schritt 4)
  • Caddyfile Reverse-Proxy seit 2026-08-25 (TP31), 16 Sites BF-intern
  • terpene.teilzeitladen.xyz: Worker läuft auf Mac mini (10.40.20.167:8890), kein Caddy-Block, kein CF-Tunnel — Backfill via DB-Migration blockiert (Handoff 2026-08-27)

Übergangspfad von bf-network-r6 → bf-infra

  1. README + Strukturen aktualisiert (dieses File)
  2. bf-network-r6 im Gitea auf read-only, Header mit Verweis (deine Aktion)
  3. Inventar-Pipeline gelöscht (XLSX stale, MikroMCP/CF/Portainer liefern Live)
  4. Caddyfile-Master wandert zu Nautobot/GC (TP34, siehe Handoff 2026-08-27)
  5. bf-infra bekommt Gitea-Remote (offen, „später")

Werkzeuge (Stand 2026-08-27)

  • MikroMCP (RouterOS, 4 Geräte) — ~/.claude.json + opencode.jsonc
  • pve-mcp (Proxmox, 10.40.20.173) — opencode.jsonc
  • home-assistant (HA, 10.40.20.105) — opencode.jsonc
  • cloudflare (CF-API, OAuth) — opencode.jsonc
  • gitea-mcp (FQDN) — opencode.jsonc
  • komodo-mcp (geplant, Migration von Portainer) — ~/dev/bf-infra/mcp/komodo/
  • shelly-mcp (Client-lokal Interim, 127.0.0.1:3030) — vor Migration auf zentralen Container
Description
BF-Infrastruktur (Fork von bf-network-r6): MikroTik, Caddy, AGH, Nautobot/GC, MCPs. Master seit 2026-08-27.
Readme 21 MiB
Languages
Python 57.9%
RouterOS Script 33.8%
Jinja 6.6%
Shell 1.7%