PSK-Befund dokumentiert: Wert ist live, Historie bleibt, Rotation bleibt nachgelagert
Ergebnis der read-only-Recherche-Session, hier gegengeprueft und in die kanonische Doku uebernommen. Der PSK in docs/teilprojekte-archiv.md (TP17) ist NOCH der live konfigurierte -- verifiziert am Manager per Fingerprint (Laenge + drei Zeichenpaare) statt im Klartext, damit der Wert nicht ein zweites Mal in einem Transkript landet. Das ist zugleich die Merkregel: Uebereinstimmung prueft man mit Stichproben, nicht durch Ausgeben. User-Entscheid: Historie belassen, im Nachtrag dokumentieren -- kein filter-repo. Traegt, weil es genau eine getrackte Fundstelle gibt, drei Commits, Remote nur gitea.emsenhuber.net und einen einzigen lokalen Klon; der Wert hat die eigene Infrastruktur nie verlassen. Der wirksame Schritt ist die Rotation, und die bleibt hinter TP17.1. Blast radius selbst nachgemessen (crs326-core, read-only), Peer-Zahlen bestaetigt: 26 der 27 WLAN-Clients des gesamten Netzes haengen auf dirtyvader-iot (main 1, media/untrusted/guest je 0), VLAN30 fuehrt 41 Leases/Reservierungen (5 bound). Neben den ~26 Shellys: P750W, Airfryer, SwitchBot, Twinkly, DTUBI, SONOFF-NSPanelPro, ein iPhone. Damit praezisiert sich TP17.1: nach zehn migrierten Gen4 blieben grob 16 Geraete auf dem IoT-SSID, nicht 12 -- der Funkruhe-Effekt ist real (-38 % Clients), der PSK-Effekt nur halb. Die Reihenfolge-Entscheidung bleibt richtig, ihre Begruendung wird ehrlicher. Zwei Umsetzungshinweise fuers spaetere Rotations-Paket festgehalten: migrate.py hat kein Rotate-Kommando, und ein Flag-Day ist vermeidbar ueber Passphrase-Overrides je MAC in /interface wifi access-list -- was dem TP25-Befund "keine access-list" nebenbei einen Zweck gibt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -879,6 +879,19 @@ FT kaschierte das bisher als „Roaming" statt „schwache Abdeckung".
|
|||||||
ist real und in der Übergabe ausgeführt.
|
ist real und in der Übergabe ausgeführt.
|
||||||
- 📊 **Bestandszahl, live 2026-08-23:** 22 der 26 Shellys erreichbar — **12 Gen4**, 8 Gen3, 2 Gen2.
|
- 📊 **Bestandszahl, live 2026-08-23:** 22 der 26 Shellys erreichbar — **12 Gen4**, 8 Gen3, 2 Gen2.
|
||||||
Die „~11 Gen4" aus der Schätzung von 2026-07-11 waren also nah dran.
|
Die „~11 Gen4" aus der Schätzung von 2026-07-11 waren also nah dran.
|
||||||
|
- 🔑 **Nachtrag 2026-08-23 — der IOT-PSK steht in der „Ziel"-Zeile oben im KLARTEXT, und das bleibt
|
||||||
|
vorerst so (User-Entscheid).** Der Wert ist am selben Tag gegen den Manager geprüft worden und ist
|
||||||
|
**noch der live konfigurierte**. Bewusst **nicht** redigiert und **keine** History-Rewrite:
|
||||||
|
- Redigieren allein hilft nicht — die Zeile liegt seit `e76289c` (2026-07-11) in der Historie.
|
||||||
|
- Ein `git filter-repo` wäre hier Aufwand ohne Gegenwert: **eine** getrackte Fundstelle, drei
|
||||||
|
Commits, Remote **nur** `gitea.emsenhuber.net` (kein GitHub), **ein** lokaler Klon — der Wert hat
|
||||||
|
die eigene Infrastruktur nie verlassen.
|
||||||
|
- **Der wirksame Schritt ist die Rotation**, und die kostet heute ~26 Geräte. Sie ist deshalb
|
||||||
|
bewusst **hinter TP17.1** eingereiht (Gen4 → Thread), s. Follow-ups in
|
||||||
|
[`teilprojekte.md`](teilprojekte.md).
|
||||||
|
⚠️ **Wer diesen Abschnitt liest, behandelt den Wert als aktives Geheimnis** — nicht zitieren, nicht
|
||||||
|
in Transkripte, nicht in Tickets. Zum Abgleich reicht ein Fingerprint (Länge + Stichproben),
|
||||||
|
genau so ist er am 08-23 verifiziert worden.
|
||||||
|
|
||||||
<a id="tp19"></a>
|
<a id="tp19"></a>
|
||||||
|
|
||||||
|
|||||||
@@ -396,9 +396,14 @@ nachmessen und dann entscheiden**. Blocker gibt es keine mehr. TP5 ist in der Na
|
|||||||
Projekt (`hencou/shelly_gen4_matter_module`) deckt 1/1 Mini/1PM/2PM Gen4 ab = **10 der 12** Geräte;
|
Projekt (`hencou/shelly_gen4_matter_module`) deckt 1/1 Mini/1PM/2PM Gen4 ab = **10 der 12** Geräte;
|
||||||
die zwei **Plug S Gen4 fallen raus**. Preis: Garantie und Shelly-Cloud weg, Rückweg nur mit
|
die zwei **Plug S Gen4 fallen raus**. Preis: Garantie und Shelly-Cloud weg, Rückweg nur mit
|
||||||
**UART-Vollbackup je Gerät**, PM-Kalibrierung zunächst Platzhalter.
|
**UART-Vollbackup je Gerät**, PM-Kalibrierung zunächst Platzhalter.
|
||||||
⇒ **Selbst bei vollem Erfolg blieben 12 Geräte im WLAN** (8 Gen3 + 2 Gen2 + 2 Plug S + die 4
|
⇒ **Selbst bei vollem Erfolg blieben 12 Shellys im WLAN** (8 Gen3 + 2 Gen2 + 2 Plug S + die 4
|
||||||
ausgesteckten). Die Rotation wird **kleiner, nicht überflüssig** — und Gen3 kann nie folgen, dort
|
ausgesteckten). Die Rotation wird **kleiner, nicht überflüssig** — und Gen3 kann nie folgen, dort
|
||||||
fehlt 802.15.4. **Das ist Christophs Abwägung vor dem ersten Flash, nicht die des Umsetzenden.**
|
fehlt 802.15.4. **Das ist Christophs Abwägung vor dem ersten Flash, nicht die des Umsetzenden.**
|
||||||
|
- 📊 **Und die Rechnung ist noch etwas ungünstiger, als „Shellys" nahelegt** (live 2026-08-23):
|
||||||
|
auf `dirtyvader-iot` hängen **26 der 27 WLAN-Clients des ganzen Netzes** — darunter Drucker
|
||||||
|
(P750W), Airfryer, SwitchBot, Twinkly, DTUBI und ein SONOFF-NSPanelPro, die von Thread **nichts**
|
||||||
|
haben. Nach zehn migrierten Gen4 blieben also grob **16 Geräte** auf dem IoT-SSID, nicht 12.
|
||||||
|
Der WLAN-Ruhe-Effekt ist real (−38 % Clients), der PSK-Effekt ist es **halb**.
|
||||||
- ✅ **Was netzseitig schon steht und nicht nochmal gebaut werden muss:** Thread-Border-Router läuft
|
- ✅ **Was netzseitig schon steht und nicht nochmal gebaut werden muss:** Thread-Border-Router läuft
|
||||||
mit ~30 produktiven Matter-Knoten; der **Commissioning-Weg ist erprobt** — temporäre SSID
|
mit ~30 produktiven Matter-Knoten; der **Commissioning-Weg ist erprobt** — temporäre SSID
|
||||||
`dirtyvader-infra` (VLAN20) nach [`matter-pairing-infra-ssid-runbook.md`](matter-pairing-infra-ssid-runbook.md),
|
`dirtyvader-infra` (VLAN20) nach [`matter-pairing-infra-ssid-runbook.md`](matter-pairing-infra-ssid-runbook.md),
|
||||||
@@ -794,6 +799,36 @@ den Weg, über den man den Fehler zurücknehmen wollte.
|
|||||||
Weg: `manage_user set-password` (⚠️ `/user set*` ist per Deny-Policy blockiert), danach
|
Weg: `manage_user set-password` (⚠️ `/user set*` ist per Deny-Policy blockiert), danach
|
||||||
`~/.secrets/credentials.env` (`ROUTER_*_PASS`/`CRS326_*_PASS`) und `~/.claude.json` nachziehen.
|
`~/.secrets/credentials.env` (`ROUTER_*_PASS`/`CRS326_*_PASS`) und `~/.claude.json` nachziehen.
|
||||||
Es ist **ein** Passwort für alle vier Geräte — die „Überlebensversicherung" aus CLAUDE.md.
|
Es ist **ein** Passwort für alle vier Geräte — die „Überlebensversicherung" aus CLAUDE.md.
|
||||||
|
- 🔎 **Nachtrag 2026-08-23 (Recherche-Session, read-only — kein Eingriff): der PSK in der Doku ist
|
||||||
|
noch der LIVE konfigurierte.** Gegengeprüft am Manager `crs326-core` (`/interface wifi security`,
|
||||||
|
Profil `sec-iot` → `cfg-iot` → SSID `dirtyvader-iot`, `datapath.vlan-id=30`,
|
||||||
|
`wpa2-psk,wpa3-psk`) — und zwar **per Fingerprint statt Klartext** (Länge + drei Zeichenpaare),
|
||||||
|
damit der Wert nicht ein zweites Mal in ein Transkript wandert. **Diese Methode ist die Merkregel
|
||||||
|
daraus:** einen Verdacht auf Übereinstimmung prüft man mit Stichproben, nicht durch Ausgeben.
|
||||||
|
- ✅ **User-Entscheid 2026-08-23 zur Git-Historie: belassen, im Nachtrag dokumentieren** — **kein**
|
||||||
|
`git filter-repo`. Begründung trägt: genau **eine** getrackte Fundstelle
|
||||||
|
([Archiv](teilprojekte-archiv.md#tp17)), drei Commits (`e76289c` Ersteintrag 2026-07-11,
|
||||||
|
`f0d1ff9` 08-08, `7ee64b5` Doku-Split 08-23), Remote **ausschließlich** `gitea.emsenhuber.net`,
|
||||||
|
**ein** lokaler Klon. Eine History-Rewrite hätte hier also nichts gerettet, was nicht ohnehin nur
|
||||||
|
auf der eigenen Infrastruktur liegt — und den Preis (alle Hashes neu) für nichts bezahlt.
|
||||||
|
- 📊 **Warum die Rotation heute teuer ist — live gemessen 2026-08-23:** **26 der 27 WLAN-Clients des
|
||||||
|
gesamten Netzes hängen auf `dirtyvader-iot`** (`dirtyvader-main` 1, MEDIA/UNTRUSTED/GUEST je 0).
|
||||||
|
VLAN30 führt **41 Leases/Reservierungen** (5 aktuell `bound`, der Rest sind statische
|
||||||
|
Reservierungen ausgeschalteter Geräte). Neben den ~26 Shellys hängen dort **P750W** (Drucker),
|
||||||
|
**Airfryer** (`espressif`, `.180`), **SwitchBot floor-lamp**, **Twinkly** `.228`, **DTUBI** `.8`,
|
||||||
|
**SONOFF-NSPanelPro** und ein **iPhone** `.177`. ⇒ Ein Passwortwechsel ist heute eine
|
||||||
|
Batch-Aktion über ~26 Geräte, und **das ist genau die Rechnung, die TP17.1 verkleinert.**
|
||||||
|
- 🔧 **Zwei Umsetzungshinweise fürs spätere Rotations-Paket:**
|
||||||
|
**(a)** `mcp/shelly/migrate.py` hat **kein** Rotate-Kommando (nur `migrate`/`deanchor`/`auth`/
|
||||||
|
`table`) — es bräuchte eine kleine Variante über denselben `set_sta`-Pfad.
|
||||||
|
**(b) Ein Flag-Day ist vermeidbar:** RouterOS 7 kann in `/interface wifi access-list`
|
||||||
|
**Passphrase-Overrides je MAC**. Also neuer PSK aufs Profil, Altgeräte übergangsweise per MAC mit
|
||||||
|
dem alten weiter, danach die Liste leeren. 💡 Nebeneffekt: der TP25-Befund „keine `access-list`"
|
||||||
|
bekäme damit endlich einen Zweck — und seit dem 08-23 gibt es die ComplianceRule
|
||||||
|
`wifi-access-list`, die Einträge dort auch sichtbar macht.
|
||||||
|
- **Mitzuziehen bei der Rotation** (legitime, gitignorete Ablagen desselben Werts):
|
||||||
|
`~/.secrets/credentials.env` (+ `.bak-20260808`), `routeros/.secrets/wlan-psks.env`,
|
||||||
|
`mcp/shelly/.env`.
|
||||||
- **TP14.4 —** CF-Access-Service-Token rotieren.
|
- **TP14.4 —** CF-Access-Service-Token rotieren.
|
||||||
- ~~**Doku-Aufräumen** (`docs/doku-cleanup-session.md`)~~ ✅ **abgeschlossen 2026-08-23.** Punkte A–D
|
- ~~**Doku-Aufräumen** (`docs/doku-cleanup-session.md`)~~ ✅ **abgeschlossen 2026-08-23.** Punkte A–D
|
||||||
(08-16), E (08-18/19) und **F — der Split** (08-23) sind durch: abgeschlossene TPs liegen jetzt in
|
(08-16), E (08-18/19) und **F — der Split** (08-23) sind durch: abgeschlossene TPs liegen jetzt in
|
||||||
|
|||||||
Reference in New Issue
Block a user