TP31: SoT-Frage beantwortet + cf-sync.py; Uebergabe nach User-Korrekturen
SoT: CF und Caddy werden NICHT synchron gehalten - die Doppelpflege faellt mit Schritt 5/6 weg. Heute stehen 19 Ingress-Regeln und 16 Caddy-Sites nebeneinander und stimmen fachlich ueberein; im Zielbild haelt CF nur noch eine Catch-all auf 10.40.20.40. Danach: Caddyfile = Name->Origin, CF = welcher Name ist oeffentlich (4), AGH = Name->IP intern. Nebeneffekt: die 12 internen Namen brauchen keinen oeffentlichen DNS mehr. caddy/cf-sync.py (read-only, Exit 1 bei Drift) findet im ersten Lauf sieben Abweichungen, alle auf CF-Seite: grafana noch im Ingress, nautobot und gateway-dw als CNAME ohne Ingress (Quelle der 302), drei *.bf-CNAMEs auf den zerstoerten NPM, dazu die Wildcard-Access-App, die alles maskiert. Uebergabe korrigiert nach User-Einwand und Gegenmessung: - Rewrites sind veraltet, nicht wertlos - Hosts leben auf VLAN20 weiter, also Ziele umbiegen statt Namen loeschen. - Die Redundanz existiert doch, reziprok ueber die Standorte: FM antwortet auf 10.101.0.16/.17 (DS415+) - und beide liefern fuer nas.bf die tote VLAN1-Adresse. Ein Rewrite-Satz nur im neuen BF-Paar erzeugt standortabhaengig verschiedene Antworten. - Vorratsregel auf .16 wird gestrichen statt erweitert (User-Entscheid). - Cave: emsenhuber.net ist die Domain, bf.lan nur der DHCP-Suffix. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1509,6 +1509,43 @@ Der `http:`-Block ist eingetragen (`use_x_forwarded_for: true` + `trusted_proxie
|
||||
⚠️ **Preis, offen benannt:** mit Split-Horizon greift **Access innerhalb des Netzes nicht mehr**; dort
|
||||
tragen TP5-Segmentierung und die App-eigene Auth.
|
||||
|
||||
#### 🧭 Wo liegt die Source of Truth? — beantwortet 2026-08-26
|
||||
> **User-Frage:** „schaffen wir es mit überschaubarem aufwand cf und caddy synchron zu halten? wo
|
||||
> liegt die sot?"
|
||||
|
||||
**Antwort: gar nicht synchron halten — die Doppelpflege fällt mit Schritt 5/6 von selbst weg.**
|
||||
Heute steht dieselbe Zuordnung *Name → Origin* an **zwei** Orten: im CF-Ingress (19 Regeln über drei
|
||||
bf-Tunnel) und im `caddy/Caddyfile` (16 Sites). Der Vergleich am 08-26 zeigt: **sie stimmen fachlich
|
||||
überein** — jeder gemeinsame Name zeigt auf **dasselbe** Origin. Es gibt also nichts zu versöhnen,
|
||||
nur etwas abzuschaffen.
|
||||
|
||||
Im Zielbild hat der Tunnel `bf-public` **eine einzige Catch-all-Regel auf `10.40.20.40`**. Damit hält
|
||||
Cloudflare **keine** Host→Origin-Zuordnung mehr, und die SoT ist eindeutig:
|
||||
|
||||
| Was | SoT | wo gepflegt |
|
||||
|---|---|---|
|
||||
| Name → Origin (alle Dienste) | **`caddy/Caddyfile`** (Git) | dieses Repo |
|
||||
| Welcher Name ist öffentlich | **CNAME + Access-App** (4 Namen) | Cloudflare |
|
||||
| Name → IP **intern** | **AdGuard-Rewrites** (TP23 Stufe 2) | AGH-Paar |
|
||||
|
||||
⇒ Zu pflegen bleiben **vier** öffentliche Namen statt neunzehn Ingress-Regeln. Und die zwölf internen
|
||||
Namen brauchen dann **gar keinen öffentlichen DNS-Eintrag mehr** — heute ist z. B. `pve.emsenhuber.net`
|
||||
öffentlich auflösbar (hinter Access), danach ist es von außen schlicht unbekannt. **Das ist ein
|
||||
Sicherheitsgewinn, kein Nebeneffekt.**
|
||||
|
||||
🛠️ **Werkzeug dafür: [`caddy/cf-sync.py`](../caddy/cf-sync.py)** — read-only, liest CF-Ingress, Zonen-DNS
|
||||
und Access-Apps und stellt sie gegen den Caddyfile; Exit 1 bei Drift (cron-/CI-tauglich). Erster Lauf
|
||||
2026-08-26 fand **7 echte Abweichungen**, alle in Cloudflare, keine in Caddy:
|
||||
- **`grafana` steht noch im Ingress** (`bf-nas → 10.40.20.109:3000`) — ein Origin, das es nie gab.
|
||||
- **`nautobot` hat noch seinen CNAME**, aber seit TP16.3 keine Ingress-Regel ⇒ läuft in die Catch-all;
|
||||
**das** ist die Quelle des 302, das man leicht für „lebt noch" hält. Dasselbe bei `gateway-dw`.
|
||||
- **Drei `*.bf`-CNAMEs zeigen auf `nginx.bf`** — den heute zerstörten NPM (`phpmyadmin`, `speedtest`,
|
||||
`z2m25`).
|
||||
- Eine **Wildcard-Access-App `*.emsenhuber.net`** deckt die ganze Zone ab — sie ist der Grund, warum
|
||||
jeder FQDN ein sauberes 302 liefert, auch wenn dahinter nichts läuft.
|
||||
🔑 **Merkregel daraus:** *ein Eintrag ohne Gegenstück ist unsichtbar, solange etwas davor antwortet.*
|
||||
Der Drift-Check muss deshalb **beide** Richtungen prüfen — Ingress ohne Site **und** CNAME ohne Ingress.
|
||||
|
||||
#### HA-Ausblick (nicht Teil der Umsetzung)
|
||||
**Es bleibt bei Caddy** — zustandslos bis auf den Zertifikatsspeicher, identisches Caddyfile je Instanz,
|
||||
versionierbar; NPM hätte eine Datenbank, die man mitreplizieren müsste.
|
||||
|
||||
Reference in New Issue
Block a user