TP6-Praemisse: Messrunbook + Fasttrack entschieden

Der kritische Pfad widersprach sich selbst: der Einleitungsabsatz sagte seit
dem 18. "Praemisse offen, erst messen", Punkt 2 der Liste darunter sagte
weiter "keine offenen Blocker mehr". Punkt 2 nachgezogen.

Neu: docs/tp6-praemisse-messrunbook.md. Reproduziert die Methode von
2026-06-16 (3 Flows Saettigung + 24 Pings idle/Last), damit die Zahlen
vergleichbar sind, und misst erstmals die Download-Richtung -- die wurde
damals nie gemessen und ist beim asymmetrischen Kabelanschluss die
wahrscheinlichere Problemseite. Das Abbruchkriterium steht VOR der Messung:
A/A+ heisst TP6 wird geschlossen statt gebaut.

Fasttrack (die Entscheidung, die der Handoff Christoph vorbehalten hat):
bleibt wie er ist, gilt ab jetzt aber als Absicht statt als Unfall. Bei
~10 Mbit WAN kostet der Verzicht nichts, fuer CAKE ist er sogar die
bequemere Ausgangslage. Gegenbedingung notiert: wer Inter-VLAN je auf
Gigabit will, muss vorher messen, was die Core-CPU ohne Fasttrack traegt.

Damit sind zwei offene Stellen zu -- das "Entscheidung noetig" in TP6 und
die TP21-Warnung, dass das Re-Baseline den Zustand zum Soll erklaert hat.
Die Merkregel dort bleibt: dass es diesmal gut ausging, war Glueck.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-19 15:56:22 +02:00
parent 9fdfb06c1c
commit 8b7ca8ddef
3 changed files with 260 additions and 3 deletions

View File

@@ -0,0 +1,50 @@
# TP5 Etappe 5 — MAIN -> IOT aufmachen.
#
# BEFUND (User-Meldung 2026-08-19: Brother P750W und die Shellys aus VLAN10
# nicht erreichbar). Der Deny-by-default aus Etappe 3 arbeitet korrekt — es
# gab schlicht nie eine vlan10->vlan30-Zeile. Offen waren nur MAIN->MEDIA,
# MAIN->INFRA, MAIN->MGMT; IOT fehlte in der Liste.
#
# QUELLE: /opt/tp5-syslog/log/tp5-would-drop.log auf dem Docker-LXC,
# gefiltert auf "in:vlan10 out:vlan30". Aggregiert:
# 497 ICMP (Ping auf .30.5 und die Shellys)
# 489 udp 5353 mDNS
# 489 udp 137 NetBIOS
# 237 udp 3722 Apple-Continuity -> .30.201
# 40 udp 161 SNMP -> 10.40.30.5 (Brother P750W)
# Quellen: .10.183 (1596, Subnetz-Sweep), .10.180 (118), .10.82 (38).
#
# MERKREGEL AUS DEM LOG: der Drucker faellt mit udp/161 auf, NICHT mit 631.
# macOS fragt zuerst den SNMP-Status ab und bricht ab, bevor es zu IPP kommt.
# Wer nur 631 whitelistet, repariert nichts.
#
# ENTSCHEID (User, 2026-08-19): voll einbahnig, kein Portfilter.
# - MAIN ist das vertrauenswuerdige VLAN und steht zu INFRA/MEDIA/MGMT
# ohnehin schon vollstaendig offen — INFRA haelt NAS, Proxmox und
# Nautobot, also deutlich mehr Wert als die Shellys. MAIN->IOT eng zu
# filtern waere an dieser Stelle Symbolik, kostet aber bei jedem neuen
# IoT-Geraet eine Runde Fehlersuche.
# - Der Sicherheitswert der Segmentierung sitzt in der GEGENRICHTUNG:
# IOT->MAIN bekommt bewusst KEIN accept und bleibt gedroppt. Antworten
# auf Anfragen aus MAIN laufen ueber "defconf: accept est,rel,untracked",
# dafuer braucht es keine Regel.
#
# NEBENWIRKUNG, bewusst in Kauf genommen: der Subnetz-Sweep von .10.183
# (137/5353 an alle 254 Adressen) laeuft ab jetzt durch, statt im Drop-Log
# aufzulaufen. Betriebsneutral, aber der Log wird an dieser Stelle leiser —
# nicht mit "Problem geloest" verwechseln.
#
# INPUT-KETTE: unveraendert. "TP5-E4: MAIN->core admin" und
# "TP5: mDNS in vlan30" stehen bereits, der Core braucht nichts.
#
# BLOCKIERT NICHTS: ausschliesslich action=accept.
#
# Push: python3 nautobot/gc-manual-plan.py --device crs326-core \
# --commands-file routeros/tp5-e5-main-iot.rsc \
# --change-id TP5-E5-MAIN-IOT --deploy \
# --assert '/ip/firewall/filter?comment=TP5-E5: MAIN->IOT|count=1'
# ---------------------------------------------------------------------------
# 1) MAIN -> IOT, einbahnig. place-before die Log-Regel, damit sie vor dem
# Drop greift und der Log weiter zeigt, was uebrig bleibt.
:do { :if ([:len [/ip firewall filter find comment="TP5-E5: MAIN->IOT"]] = 0) do={ /ip firewall filter add chain=forward action=accept in-interface=vlan10 out-interface=vlan30 comment="TP5-E5: MAIN->IOT" place-before=[/ip firewall filter find comment="TP5: log-only, Vorstufe zum deny-by-default"] } } on-error={ :log info "tp5e5: 01 MAIN->IOT warf" }