Files
bf-infra/routeros
Christoph Emsenhuber 6f8ba8c8b5 sshpass -p repo-weit weg + vier TP15-Cutover-Skripte archiviert
sshpass -p schreibt das Passwort in argv, wo es in ps und jedem argv-Trace
steht -- die Klasse, an der am 2026-08-22 das Core-Passwort verbrannt ist.
Nach gc-transaktion.py (voriger Commit) jetzt auch die fuenf unter routeros/:
SSHPASS-Env + sshpass -e.

Nachweis, gemessen statt gelesen:
- alle 13 subprocess.run mit sshpass tragen env= (per AST geprueft; ohne env
  waere SSHPASS leer und alles still kaputt)
- Signaturen passen zu den Aufrufen (AST-Arity; py_compile findet das NICHT)
- echter Lauf des gepatchten Codes gegen den lebenden Core: backup-core.py
  importiert, IP zur Laufzeit auf 10.40.99.1 -> "name: crs326-core", rc=0
- Passwort in argv? nein. In ps waehrend der Verbindung? nein, 40 Stichproben
- Negativkontrolle: derselbe Test mit einem Dummy-Wert ueber die alte -p-Form
  -> 36 Treffer. Die Probe ist also nicht blind, das "nein" hat Aussagekraft

Mitgefixt, weil es im umgebauten Code lag: apply-core-cutover-l3.py griff in
run_silent auf ein pw zu, das dort gar nicht existierte -- jeder Fehlerfall
endete in einem NameError statt in der gedachten Meldung.

Fuer TP30 aendert das NICHTS: der Weg ist zu, der Wert bleibt verbrannt.
Posten #1 (MikroTik-admin) bleibt faellig. Im TP so hingeschrieben, damit es
niemand als erledigt liest.

--- Archivierung (Christoph-Entscheid) ---

Beim Fixen fiel auf, dass alle vier Cutover-Skripte auf tote Adressen zeigten:
  apply-core-cutover-l3.py  10.40.41.211    tot (VLAN41 seit 2026-08-27 weg)
  backup-core.py            10.40.41.211    tot
  restore-core.py           192.168.88.1    tot (Werks-Temp-Pfad)
  backup-ap1.py             10.40.10.1      ANTWORTET -- ist aber der CORE

backup-ap1.py war der gefaehrliche: er waere nicht gescheitert, er haette den
Core gesichert und die Datei ap1-pre-core-cutover-*.backup genannt. Wer das
spaeter zurueckspielt, spielt Core-Config auf einen AP.

Entscheid war archivieren, nicht reparieren -- der Cutover ist am 2026-08-08
durch, die Skripte haben ihre Aufgabe erfuellt. Sie liegen jetzt unter
routeros/archiv-tp15-cutover/ mit README nach dem Muster von switch/.
Die Pfad-Nebenwirkungen des Verschiebens sind ABSICHTLICH nicht repariert
(backup-core.py schriebe jetzt ins Archivverzeichnis, apply-core-cutover-l3.py
faende seine .rsc nicht mehr) -- sie zu reparieren hiesse, die Skripte wieder
lauffaehig zu machen, und das ist gerade nicht die Absicht.

Der sshpass-Fix wurde trotzdem VOR dem Verschieben gemacht: Archiv-Code wird
abgeschrieben, also soll dort das richtige Muster stehen.

import-core-rsc.py bleibt, wo es ist -- als einziges generisch nuetzlich. Sein
Default-Host ist ebenfalls tot (--host mitgeben), und in --host steckt ein
zweiter latenter Bug: sys.argv[1] wird als RSC-Pfad gelesen, bevor auf --host
geprueft wird. NICHT gefixt, eigene Runde.

Zeiger gesetzt in: CLAUDE.md (sshpass-Gotcha), teilprojekte.md (TP30),
teilprojekte-archiv.md (TP15), Handoff 2026-08-31.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 08:34:08 +02:00
..

hAP ax² Setup — CAPsMAN + VLAN (Design & Plan, REVIEW vor Apply)

Stand: beide auf RouterOS 7.23.1 + RouterBOOT 7.23.1. Namen/IPs gesetzt: ap1 = 10.40.41.1 (künftiges Gateway/Router) · ap2 = 10.40.41.2 (CAP). Default-Bridge (ether2–5+wifi, vlan-filtering aus).

⚠️ Status: NUR PLAN. An den Geräten bisher nur: Firmware 7.23.1, Identity ap1/ap2, Stray-IP weg, Mgmt-IP→.1/.2. Exakte 7.23-Syntax (wifi/capsman/provisioning/scheduler) wird vor Apply gegen das Gerät validiert.

Hardware-Realität

  • WiFi 6 (ax), dual-band 2,4+5 GHz. MLO ist NICHT verfügbar (MLO = WiFi 7/802.11be → bräuchte hAP be³). „MLO wenn möglich" entfällt.

Rollen

  • ap1 = CAPsMAN-Manager + AP (später zusätzlich Router — L3/DHCP/DNS/NAT/CAKE = separater Cutover, NICHT hier).
  • ap2 = CAP (zieht Wireless-Config von ap1 @ 10.40.41.1).

⚠️ Topologie / Verkabelung (Klärungsbedarf)

  • ap1 → Core-Switch Port 2 (direkt). ✓ Guter Trunk-Kandidat.
  • ap2 → hinter TP-Link TL-SG108E → Core-Switch Port 8. Damit ap2 die VLANs getaggt bekommt, müsste auch der TP-Link trunken (kann 802.1Q, aber fummelige UI). Empfehlung: ap2 im Wartungsfenster direkt an einen freien Core-Port (z.B. Port 3) → sauberer Trunk, keine TP-Link-VLAN-Config.
  • ether1 = WAN — Achtung: Für ap1 (Router) ist ether1 = WAN zur FB (Internet); der LAN-Trunk zum Core bleibt ether2 → ap1 braucht 2 Kabel. Für ap2 (reiner AP) gibt es kein WAN; ein Uplink (Trunk) genügt. → Den LAN-Trunk auf ether1 zu legen wäre für den Router falsch. Finale Verkabelung bitte bestätigen.

Bridge-VLAN-Layout (beide APs)

  • Uplink ether2 = Trunk: tagged 10,20,30,40,90,99,100 + native/untagged vlan1 (= aktuelles Mgmt-Netz, .1/.2).
  • Mgmt bleibt erreichbar (untagged vlan1), solange der Switch-Port native vlan1 untagged bleibt.
  • vlan-filtering=yes zuletzt — mit Auto-Rollback (5 min) gegen Lockout.

WLAN (SSID → VLAN via CAPsMAN-Datapath)

SSID VLAN Security
BF-Main 10 (MAIN) WPA3-only
BF-IoT 30 (IOT) WPA2/WPA3-PSK
BF-Guest 90 (GUEST) WPA2/WPA3-PSK
Beide Bänder (2,4+5 GHz ax). Temp-Passphrase (Platzhalter BFtest-2026-tmp) — User setzt echte in Ruhe.

VLAN-SSIDs bekommen erst nach dem Router-Cutover DHCP/Gateway. Sofort-Test optional via Temp-SSID auf native vlan1 (FB-DHCP).

Apply-Reihenfolge (wenn freigegeben)

  1. Switch: AP-Uplink-Port(s) → Trunk (tagged 10,20,30,40,90,99,100 + native vlan1). [ap2 erst sinnvoll, wenn direkt am Core ODER TP-Link trunkt]
  2. ap1: Bridge-VLAN → CAPsMAN-Manager → (Auto-Rollback) vlan-filtering=yes.
  3. ap2: Bridge-VLAN → CAP enable (manager=10.40.41.1).
  4. Verifizieren: ap2 im Manager; SSIDs auf beiden Radios; Mgmt erreichbar. Rollback canceln.

Safety — Auto-Rollback

/system scheduler add name=vlan-rollback interval=5m \
  on-event="/interface bridge set [find name=bridge] vlan-filtering=no; /system scheduler remove vlan-rollback"

Offene Punkte (User)

  • Finale Verkabelung bestätigen (ap1: ether1→FB-WAN, ether2→Core-Trunk; ap2: direkt an Core vs. TP-Link trunken).
  • Switch-Mgmt-IP: .3 oder .239 (da .2 jetzt = ap2).
  • Echte WLAN-Passphrasen (später).

Dateien

  • routeros/ap1-manager.rsc · routeros/ap2-cap.rsc