TP5 Etappe 2 ausgerollt + TP25/TP16.3 angelegt, TP25 Schritte 1-3 durch
TP5 Etappe 2: 11 Whitelist-Regeln auf crs326-core, abgeleitet aus 43.027
Logzeilen (21 h) statt geraten. D1 = MAIN->INFRA pauschal, D4 = MGMT named
sources (HA:8728, Nautobot:22, MAIN, cf-mesh), D5 = 8123 + MQTT.
Log-Regel ist im Moment des Deploys verstummt; Zaehler steht. Etappe 3 bleibt
gated auf ein mehrtaegiges stilles Fenster + D2 (iPhone aus dem IOT-SSID).
TP25 neu — WLAN-Stabilisierung, Sammel-TP fuer Christophs Beobachtungen 1-6.
Schritte 1-3 durch, alles am Geraet gegengeprueft:
- w2-iot trug einen channel.*-Override auf einem Slave-VAP (auf ap1 sogar
2ghz-n gegen einen 2ghz-ax-Master) -> Mechanismus hinter "-iot mal da,
mal nicht". Danach auf beiden APs BR/running.
- 2,4 GHz lief auf 40 MHz, obwohl ch-2g width=20mhz sagt: ein Inline-Override
auf wifi2 gewinnt gegen das Profil. Jetzt 20 MHz, ap1 ch1 / ap2 ch11.
- ap2s 5-GHz-Radio sendete mit 9 dBm, jetzt 18. Beide APs 40 MHz,
ueberlappungsfrei (5170-5210 / 5210-5250).
Drei Korrekturen an eigenen Annahmen:
- Die 9 dBm sind NICHT das ETSI-Band C. Der Wechsel ins Indoor-Band liess sie
bei 9; erst die Breite brachte 18. "80 MHz generell" traegt auch nicht,
ap1 fuhr 80 MHz mit 18. Mechanismus offen, Hypothese + Test in TP25.
- `!channel` loescht Inline-Overrides nicht, nur !channel.width einzeln.
- Frequenz vor Breite zu aendern hat ap2 kurzzeitig in denselben 80-MHz-Block
wie ap1 geschoben. Breite VOR Frequenz.
Die ch149-Notiz ist bis 03f328f (2026-06-18) zurueckverfolgt: geloest wurde
Co-Channel, nicht DFS. "non-DFS" war nachtraeglich mitgeschriebene Begruendung
fuer das FCC-Standardpaar 36/149, keine geprueft Anforderung. Und
skip-dfs-channels=10min-cac schliesst DFS gar nicht aus, nur das
Wetterradar-Band -> 5500-5700 liegt als Reservekanalraum brach.
TP16.3 neu — cloudflared-Reduktion: der Mesh IST schon der private Datenpfad
(137 Zeilen im TP5-Log belegen es), Container braucht nur der oeffentliche
Ingress. Mesh-Hostname-Routes fuer public hostnames sind Egress, nicht
Publishing — Verwechslungsfalle.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
35
routeros/tp25-schritt1-3-ap1.rsc
Normal file
35
routeros/tp25-schritt1-3-ap1.rsc
Normal file
@@ -0,0 +1,35 @@
|
||||
# TP25 Schritt 1-3 auf ap1 — identisch zu ap2, mit der auf ap2 verifizierten Syntax.
|
||||
#
|
||||
# Reihenfolge bewusst: ap2 war zuerst (weniger kritisch), dort ist die Syntax
|
||||
# am Geraet belegt. ap1 folgt erst jetzt.
|
||||
#
|
||||
# ⚠️ ap1 MUSS mit, sonst bleibt die Ueberlappung: ap1 auf 5180 mit 80 MHz
|
||||
# belegt 5170-5250 und damit auch ap2s neue 40-MHz-Zelle bei 5220.
|
||||
# Ziel: ap1 = 5180/Ce (ch36+40, 5170-5210), ap2 = 5220/Ce (ch44+48,
|
||||
# 5210-5250). Benachbart, ueberlappungsfrei, beide 18 dBm.
|
||||
#
|
||||
# ap1-Besonderheit: w2-iot traegt hier ZUSAETZLICH channel.band=2ghz-n gegen
|
||||
# einen 2ghz-ax-Master — der eigentliche Fund D. Deshalb !channel.band mit dabei.
|
||||
#
|
||||
# Push: python3 nautobot/gc-manual-plan.py --device ap1 \
|
||||
# --commands-file routeros/tp25-schritt1-3-ap1.rsc \
|
||||
# --change-id TP25-Funkparameter-ap1 --deploy
|
||||
# Backup davor: ap1-pre-tp25-20260817.backup
|
||||
|
||||
# --- Schritt 3 zuerst: Profil auf Sollwert, damit das Leeren unten direkt greift
|
||||
:do { /interface/wifi/channel/set [find name=ch-5g] frequency=5180 width=20/40mhz } on-error={ :log info "tp25a1: 01 ch-5g warf" }
|
||||
:do { /interface/wifi/channel/set [find name=ch-2g] frequency=2412 width=20mhz } on-error={ :log info "tp25a1: 02 ch-2g warf" }
|
||||
|
||||
# --- Schritt 2: Inline-Overrides einzeln leeren (!channel allein tut NICHTS) -
|
||||
:do { /interface/wifi/set [find default-name=wifi1] !channel.width } on-error={ :log info "tp25a1: 03 wifi1 !width warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi1] !channel.band } on-error={ :log info "tp25a1: 04 wifi1 !band warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi1] !channel.skip-dfs-channels } on-error={ :log info "tp25a1: 05 wifi1 !skipdfs warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi2] !channel.width } on-error={ :log info "tp25a1: 06 wifi2 !width warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi2] !channel.band } on-error={ :log info "tp25a1: 07 wifi2 !band warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi2] !channel.skip-dfs-channels } on-error={ :log info "tp25a1: 08 wifi2 !skipdfs warf" }
|
||||
|
||||
# --- Schritt 1: Fund D — Slave-VAP-Override weg -----------------------------
|
||||
:do { /interface/wifi/set [find name=w2-iot] !channel.width } on-error={ :log info "tp25a1: 09 w2-iot !width warf" }
|
||||
:do { /interface/wifi/set [find name=w2-iot] !channel.band } on-error={ :log info "tp25a1: 10 w2-iot !band warf" }
|
||||
|
||||
:log info ("tp25a1: wifi1-width=" . [:tostr [/interface/wifi/get [find default-name=wifi1] channel.width]] . " wifi2-width=" . [:tostr [/interface/wifi/get [find default-name=wifi2] channel.width]] . " w2iot-band=" . [:tostr [/interface/wifi/get [find name=w2-iot] channel.band]])
|
||||
43
routeros/tp25-schritt1-3-ap2.rsc
Normal file
43
routeros/tp25-schritt1-3-ap2.rsc
Normal file
@@ -0,0 +1,43 @@
|
||||
# TP25 Schritt 1-3 auf ap2 — Funkparameter nach Manual statt Bauchgefuehl.
|
||||
#
|
||||
# Schritt 1: unzulaessigen channel.*-Override von w2-iot entfernen (Slave-VAP
|
||||
# kann keinen eigenen Kanal haben; auf ap1 erzwang er sogar 2ghz-n
|
||||
# gegen einen 2ghz-ax-Master).
|
||||
# Schritt 2: Inline-channel.*-Overrides auf wifi1/wifi2 leeren, damit die
|
||||
# verlinkten Profile ch-5g/ch-2g ueberhaupt greifen. Das Override
|
||||
# gewinnt sonst — deshalb lief 2,4 GHz auf 40 MHz, obwohl ch-2g
|
||||
# width=20mhz sagt.
|
||||
# Schritt 3: ch-5g auf 20/40mhz + Frequenz 5220 (Indoor-Band, statt 5745
|
||||
# ETSI-Band-C mit gedrosselter Leistung -> Messung s.u.).
|
||||
#
|
||||
# MESSZWECK: nach dem Deploy tx-power auf wifi1 lesen. Erwartung 18 dBm statt 9.
|
||||
# Bestaetigt oder widerlegt die Diagnose "ch149 kostet 9 dB" AM GERAET.
|
||||
#
|
||||
# Push: python3 nautobot/gc-manual-plan.py --device ap2 \
|
||||
# --commands-file routeros/tp25-schritt1-3-ap2.rsc \
|
||||
# --change-id TP25-Funkparameter-ap2 --deploy
|
||||
# Backup davor: ap2-pre-tp25-20260817.backup
|
||||
#
|
||||
# ⚠️ Wirft alle Clients kurz raus (Channel-/VAP-Re-Apply, bei TP3.3 gemessen).
|
||||
|
||||
# --- Schritt 1: w2-iot Slave-Override weg -----------------------------------
|
||||
:do { /interface/wifi/set [find name=w2-iot] !channel } on-error={ :log info "tp25: 01 w2-iot !channel warf" }
|
||||
|
||||
# --- Schritt 2: Inline-Overrides auf den Master-Radios weg ------------------
|
||||
# Nur channel.* wird geleert. configuration=/configuration.manager/.mode
|
||||
# bleiben unangetastet — die sind korrekt und tragen die SSID-Bindung.
|
||||
:do { /interface/wifi/set [find default-name=wifi1] !channel } on-error={ :log info "tp25: 02 wifi1 !channel warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi2] !channel } on-error={ :log info "tp25: 03 wifi2 !channel warf" }
|
||||
|
||||
# --- Schritt 3: Profile auf Manual-konforme Werte ---------------------------
|
||||
# 5 GHz: 80 -> 40 MHz. Kostet Spitzendurchsatz, den hier niemand braucht, und
|
||||
# gewinnt ~3 dB Randabdeckung. Erst 40 MHz macht zwei ueberlappungsfreie
|
||||
# Zellen im Indoor-Band ueberhaupt moeglich (dort liegt nur EIN 80-MHz-Block).
|
||||
:do { /interface/wifi/channel/set [find name=ch-5g] frequency=5220 width=20/40mhz } on-error={ :log info "tp25: 04 ch-5g warf" }
|
||||
|
||||
# 2,4 GHz: Profil steht schon auf 20mhz — nach Schritt 2 greift es endlich.
|
||||
# Zur Sicherheit explizit, damit der Sollzustand in der SoT eindeutig ist.
|
||||
:do { /interface/wifi/channel/set [find name=ch-2g] frequency=2462 width=20mhz } on-error={ :log info "tp25: 05 ch-2g warf" }
|
||||
|
||||
# --- Selbstprotokoll (Deploy-Job zeigt den Geraete-Output nicht) ------------
|
||||
:log info ("tp25ap2: ch-5g=" . [/interface/wifi/channel/get [find name=ch-5g] frequency] . "/" . [/interface/wifi/channel/get [find name=ch-5g] width] . " ch-2g=" . [/interface/wifi/channel/get [find name=ch-2g] frequency] . "/" . [/interface/wifi/channel/get [find name=ch-2g] width])
|
||||
42
routeros/tp25-schritt2-fix-overrides-ap2.rsc
Normal file
42
routeros/tp25-schritt2-fix-overrides-ap2.rsc
Normal file
@@ -0,0 +1,42 @@
|
||||
# TP25 Schritt 2 — KORREKTUR. Die Inline-Overrides sind noch da.
|
||||
#
|
||||
# 🔴 GOTCHA (2026-08-17 am Geraet belegt): `/interface/wifi/set <if> !channel`
|
||||
# loescht die Inline-Sub-Property-Overrides NICHT. Es wirft auch nicht — es
|
||||
# tut einfach nichts Sichtbares. Nach dem Lauf stand auf ap2 wifi1 weiterhin
|
||||
# `channel.width=20/40/80mhz`, obwohl das Profil ch-5g auf 20/40mhz steht
|
||||
# und cfg-main-5g korrekt zu 20/40mhz aufloest.
|
||||
# => Sub-Properties muessen EINZELN geleert werden: !channel.width usw.
|
||||
# Gleiches Muster wie der bekannte `!configuration.ssid !security.*`-Griff
|
||||
# aus dem TP3-Bring-up (CLAUDE.md) — dort nur nie auf channel.* angewandt.
|
||||
#
|
||||
# 🔴 DRINGLICHKEIT: weil die Breite noch auf 80 MHz stand, ist ap2 mit dem
|
||||
# Frequenzwechsel auf 5220/eeCe in DENSELBEN 80-MHz-Block wie ap1
|
||||
# (5180/Ceee) gerutscht — beide belegen ch36-48. Das ist die Co-Channel-Lage,
|
||||
# die TP3 2026-06-18 ueberhaupt erst wegkonfigurieren wollte. Diese Datei
|
||||
# stellt den ueberlappungsfreien Zustand her.
|
||||
#
|
||||
# Push: python3 nautobot/gc-manual-plan.py --device ap2 \
|
||||
# --commands-file routeros/tp25-schritt2-fix-overrides-ap2.rsc \
|
||||
# --change-id TP25-Overrides-ap2 --deploy
|
||||
# Backup: ap2-pre-tp25-20260817.backup gilt weiter.
|
||||
#
|
||||
# SOLL danach: wifi1 = 5220/ax/Ce/I (40 MHz, ch44+48), wifi2 = 2462/ax (20 MHz).
|
||||
|
||||
# --- wifi1: jede Sub-Property einzeln leeren --------------------------------
|
||||
:do { /interface/wifi/set [find default-name=wifi1] !channel.width } on-error={ :log info "tp25f: 01 wifi1 !width warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi1] !channel.band } on-error={ :log info "tp25f: 02 wifi1 !band warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi1] !channel.skip-dfs-channels } on-error={ :log info "tp25f: 03 wifi1 !skipdfs warf" }
|
||||
|
||||
# --- wifi2: dito. Danach greift ch-2g mit width=20mhz --------------------
|
||||
:do { /interface/wifi/set [find default-name=wifi2] !channel.width } on-error={ :log info "tp25f: 04 wifi2 !width warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi2] !channel.band } on-error={ :log info "tp25f: 05 wifi2 !band warf" }
|
||||
:do { /interface/wifi/set [find default-name=wifi2] !channel.skip-dfs-channels } on-error={ :log info "tp25f: 06 wifi2 !skipdfs warf" }
|
||||
|
||||
# --- w2-iot: der eigentliche Fund D ----------------------------------------
|
||||
# Ein Slave-VAP darf keinen eigenen Kanal haben. Auf ap2 ist es nur width,
|
||||
# auf ap1 zusaetzlich band=2ghz-n gegen einen 2ghz-ax-Master.
|
||||
:do { /interface/wifi/set [find name=w2-iot] !channel.width } on-error={ :log info "tp25f: 07 w2-iot !width warf" }
|
||||
:do { /interface/wifi/set [find name=w2-iot] !channel.band } on-error={ :log info "tp25f: 08 w2-iot !band warf" }
|
||||
|
||||
# --- Selbstprotokoll: die AUFGELOESTEN Interface-Werte, nicht das Profil ----
|
||||
:log info ("tp25f: wifi1-width=" . [:tostr [/interface/wifi/get [find default-name=wifi1] channel.width]] . " wifi2-width=" . [:tostr [/interface/wifi/get [find default-name=wifi2] channel.width]] . " w2iot-width=" . [:tostr [/interface/wifi/get [find name=w2-iot] channel.width]])
|
||||
Reference in New Issue
Block a user