TP16.3 §5 durch: vier Namen auf bf-public + 10-Sekunden-DNS-Fund behoben
FLIP (User-Freigabe, vorgezogen) n8n / gitea / hass / vw laufen jetzt ueber bf-public, der oeffentliche Verkehr geht damit erstmals ueber Caddy statt an ihm vorbei. Je Name einzeln geflippt und dazwischen gemessen; Antwortzeiten vorher/nachher unveraendert. Nachweise: gitea echte Gitea-Antwort, hass WebSocket 101 Switching Protocols (der Companion-App-Pfad, den das Runbook als "nur vom User pruefbar" fuehrte), vw /alive + /api/config 200 und WS-Hub 401 von Vaultwarden selbst, n8n vom User im Browser bestaetigt (von aussen nicht bis zum Origin pruefbar, s. TP14.4). Die drei Alttunnel bleiben als Rueckfallebene stehen -- §6 ist NICHT Teil davon. 10-SEKUNDEN-ZOLL AUF gitea/vw/hass -- Ursache gefunden und behoben gitea hing bei ~10% der Anfragen exakt 10,1 s, quer ueber Web-UI, /api/healthz und den Git-Pfad. MariaDB (LXC 302) hatte skip-name-resolve auskommentiert und machte bei JEDER NEUEN Verbindung einen Reverse-Lookup, waehrend ihr resolv.conf auf den toten 10.40.41.254 zeigte: 10.010 ms je Lookup, Pool-Verbindungen schnell -- daher wirkte es sporadisch. An derselben DB haengen Vaultwarden, Home Assistant und gitea (per Verbindungstabelle belegt, nicht vermutet; die erste Annahme "vaultwarden nutzt SQLite" war falsch und wurde vom User korrigiert). Fix: nameserver 10.40.20.1 + Reboot fuer fuenf LXCs (302, 102, 106, 107, 150). Nachher 21-24 ms und 0 von 25 Proben langsam. Offen: skip-name-resolve selbst -- bricht Hostname-basierte Grants, vorher mysql.user lesen (DB-Zugang fehlt). LATENT, NICHT VON DIESER SESSION VERURSACHT networking.service + ifupdown-wait-online.service sind in 101/102/106/107 failed; influxdb2 kam nach dem Reboot nicht hoch (Unit enabled, kein Startversuch im Journal). 101 wurde nie angefasst und zeigt dasselbe -- die Container liefen nur 13+ Tage ohne Neustart. RUNBOOK-KORREKTUREN §5.3 "Caddy sieht den Request" konnte nie funktionieren: im Caddyfile steht keine log-Direktive, ein erfolgreicher Request hinterlaesst nichts. Ersetzt durch die Werkzeuge, die tatsaechlich etwas beweisen -- erzwungener oeffentlicher Weg per curl --resolve (Pflicht wegen Split-Horizon), Verbindungstabelle am Core statt Firewall-Zaehler (cloudflared haelt die Origin-Verbindung offen, der Zaehler steht still obwohl alles laeuft), Antwort-Fingerabdruck, WebSocket mit --http1.1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,8 @@
|
||||
> **§1–§3 AUSGEFÜHRT 2026-08-31.** Drei Connectoren laufen, `bf-public` healthy/12.
|
||||
> §2.2, §3.4 und §3.5 sind unten **korrigiert** — die ursprüngliche Fassung war an drei
|
||||
> Stellen falsch (Flash-Budget, `docker save`-Format, `envs`-Parametername).
|
||||
> Offen bleiben **§5 (Flip)** und **§6 (Abbau)**.
|
||||
> ✅ **§5 (Flip) AUSGEFÜHRT 2026-09-01** — alle vier Namen auf `bf-public`.
|
||||
> Offen bleibt nur **§6 (Abbau)**.
|
||||
> **Löst [`tp31-schritt5-runbook.md`](tp31-schritt5-runbook.md) ab** (Stand 08-27). Jenes Dokument
|
||||
> kennt ap3 nicht, unterstellt einen Registry-Pull (geht bei `fetch: no` nicht) und enthält **eine
|
||||
> nachweislich falsche Freigabe-Behauptung** (§8 Falle 2). Es bleibt als Historie liegen, ist aber
|
||||
@@ -491,7 +492,7 @@ für die Strecke bis Caddy ist §5.1, nicht diese Zahl. Genau diese Verwechslung
|
||||
|
||||
---
|
||||
|
||||
## §5 CNAME-Flip — einzeln, mit Abnahme dazwischen
|
||||
## §5 CNAME-Flip — ✅ **AUSGEFÜHRT 2026-09-01** (einzeln, mit Abnahme dazwischen)
|
||||
|
||||
**Reihenfolge: `n8n` → `gitea` → `hass` → `vw`** (steigende Kritikalität; `vw` zuletzt).
|
||||
Zone-ID `1b5bc02fdf61b6b989afde543f3f4134`.
|
||||
@@ -540,9 +541,29 @@ curl -s -X PATCH -H "Authorization: Bearer $CF_API_TOKEN" -H "Content-Type: appl
|
||||
|
||||
- [ ] Aufruf über Mobilfunk (oder anderer Standort) → Access-Login → **200**
|
||||
- [ ] **Kein** `ERR_TOO_MANY_REDIRECTS` (das wäre Blocker A)
|
||||
- [ ] Caddy sieht den Request: `ssh root@10.40.20.100 'pct exec 130 -- journalctl -u caddy -n 20'`
|
||||
- [ ] 15 min beobachten, kein 530/1033
|
||||
|
||||
🔴 **KORRIGIERT 2026-09-01 — der frühere Punkt „Caddy sieht den Request:
|
||||
`journalctl -u caddy -n 20`" funktioniert NICHT.** Im `Caddyfile` steht keine `log`-Direktive; im
|
||||
Journal landen nur `info`/`warn`. Ein **erfolgreicher** Request hinterlässt dort **nichts**, und die
|
||||
leere Ausgabe liest sich wie „kam nie an". *(Dass der öffentliche Reverse Proxy überhaupt keine
|
||||
Requests protokolliert, ist eine eigene Lücke — gehört zu TP31/TP34.)*
|
||||
|
||||
**Was stattdessen funktioniert — und 2026-09-01 auch benutzt wurde:**
|
||||
|
||||
| Werkzeug | Beweist |
|
||||
|---|---|
|
||||
| `curl --resolve <name>:443:188.114.96.10` | Erzwingt den **öffentlichen** Weg. 🔴 **Pflicht**, denn der Haus-Resolver liefert für alle vier Namen direkt `10.40.20.40` (Split-Horizon) — ein Test von zuhause sieht Cloudflare **nie**. |
|
||||
| Verbindungstabelle am Core (`/ip firewall connection`) | Zeigt `10.40.99.x → 10.40.20.40` = ein AP-Connector redet mit Caddy. **Der Zähler der Blocker-B-Regel taugt dafür NICHT**: `cloudflared` hält die Origin-Verbindung offen, es entstehen kaum neue — der Zähler steht still, obwohl alles läuft. |
|
||||
| Antwort-Fingerabdruck | z.B. `i_like_gitea`-Cookie = echte Gitea-Antwort, nicht CF/Caddy. |
|
||||
| WebSocket-Handshake **mit `--http1.1`** | `101 Switching Protocols` = der Companion-App-Pfad steht. ⚠️ Über HTTP/2 gibt es keinen klassischen Upgrade — ein `400` ist dann der eigene Testfehler, nicht der Dienst. |
|
||||
|
||||
⚠️ **Access antwortet je nach Standort verschieden, beides gesund:** `n8n` liefert aus dem Haus
|
||||
**200** (die `bf4`-Policy trägt die WAN-IP), von außen **302** zum Login. `hass`/`vw`/`gitea` stehen
|
||||
auf **`bypass`** (App `hass, vw, gitea`, alle drei in `self_hosted_domains`) — dort kommt **nie** ein
|
||||
Login. Ein Service-Token für die Wildcard-App gibt es nicht (**TP14.4**), deshalb ist `n8n` von außen
|
||||
**nicht** bis zum Origin prüfbar — das musste der User im Browser bestätigen.
|
||||
|
||||
🔴 **WARP muss aus sein.** Mit aktivem WARP läuft der Test über den Mesh und beweist den öffentlichen
|
||||
Weg **nicht** — dieselbe Klasse Fehldiagnose wie beim ICMP-Fall 2026-08-13.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user