From a58d41974706bf6cc9f0770e80193d0c0a7e3dd3 Mon Sep 17 00:00:00 2001 From: Christoph Emsenhuber Date: Mon, 15 Jun 2026 11:33:25 +0200 Subject: [PATCH] =?UTF-8?q?TP1=20=E2=9C=85=20ALLNET=20Core-Switch=20finali?= =?UTF-8?q?siert:=20VLAN=2040=E2=86=92MEDIA,=20VLAN=2050=20UNTRUSTED,=20GE?= =?UTF-8?q?8=20Trunk=20verifiziert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Neues CLI-Script 04-vlan50-media-untrusted.cli ausgeführt + verifiziert: VLAN 40 umbenannt UNTRUSTED→MEDIA, VLAN 50 angelegt (UNTRUSTED), GE1/GE2 um VLAN 50 ergänzt; GE8 war bereits Trunk, VLAN 50 auto-includiert. - Docs: teilprojekte.md TP1 als FERTIG markiert, Ist-Stand aktualisiert, VLAN-Gotcha entfernt. core-switch-prep.md Phase A/TP1 Stand ergänzt, Switch-IP .239→.11 korrigiert. CLAUDE.md Gotcha aktualisiert, IP korrigiert. - CLI-REFERENCE.md: VLAN-Namen 40=MEDIA, 50=UNTRUSTED. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 4 ++-- docs/allnet-ge8-trunk-klickanleitung.md | 9 +++++++-- docs/core-switch-prep.md | 23 +++++++++++++---------- docs/teilprojekte.md | 12 +++++++----- switch/cli/04-vlan50-media-untrusted.cli | 23 +++++++++++++++++++++++ switch/cli/CLI-REFERENCE.md | 2 +- 6 files changed, 53 insertions(+), 20 deletions(-) create mode 100644 switch/cli/04-vlan50-media-untrusted.cli diff --git a/CLAUDE.md b/CLAUDE.md index 1ff6adf..13af14b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -27,7 +27,7 @@ GW je VLAN = `.1` · APs: ap1=`.1`, ap2=`.2` · Switches: ALLNET=`.11`, Omada=`. ## Hardware & Zugang | Gerät | IP | Zugang | |---|---|---| -| ALLNET Core-Switch (sw1) | 10.40.41.239 (interim) | `telnet 10.40.41.239` · User: `claudecode` · PW: `switch/.secrets` | +| ALLNET Core-Switch (sw1) | 10.40.41.11 (interim, VLAN1) | `telnet 10.40.41.11` · User: `claudecode` · PW: `switch/.secrets` | | hAP ax² #1 (ap1) | 10.40.41.1 | MikroMCP (live) | | hAP ax² #2 (ap2) | 10.40.41.2 | MikroMCP (live) | | NAS (nas-bf) | 10.40.41.10 | SSH | @@ -50,6 +50,6 @@ GW je VLAN = `.1` · APs: ap1=`.1`, ap2=`.2` · Switches: ALLNET=`.11`, Omada=`. - **ALLNET: nur 1 Telnet-VTY** — stale Sessions blockieren ~15 min. Sauber ausloggen (`exit exit`), nie hammern. - **`save` nicht vergessen** nach ALLNET-Änderungen (sonst nach Reboot weg). - **hAP ax² hat 128 MB Flash, kein USB** → Container NICHT auf dem Router; Container laufen auf NAS/pve. -- **ALLNET vlan40 heißt noch UNTRUSTED (alt)** — beim nächsten Switch-Schritt umbenennen zu MEDIA + vlan50 anlegen. +- **ALLNET VLAN-DB final (TP1 ✅):** 40=MEDIA, 50=UNTRUSTED; GE1/GE2/GE8 alle als Trunk mit 10/20/30/40/50/90/99/100. - **Mesh = NEIN** (beide APs haben wired Trunk-Uplink → Loop-Risiko). - mgmt-VLAN-Wechsel am Switch = Lockout-Risiko: VLAN muss existieren + Port muss es tragen, in einem Schritt. diff --git a/docs/allnet-ge8-trunk-klickanleitung.md b/docs/allnet-ge8-trunk-klickanleitung.md index 1691d14..4fff971 100644 --- a/docs/allnet-ge8-trunk-klickanleitung.md +++ b/docs/allnet-ge8-trunk-klickanleitung.md @@ -1,12 +1,17 @@ # Klickanleitung — ALLNET GE8 von Hybrid → Trunk (R0) +> ✅ **STATUS (TP1 abgeschlossen 2026-06-15):** GE8 ist bereits als Trunk konfiguriert. +> Erkennbar daran, dass neue VLANs (50) automatisch auf gi8 erscheinen, wenn sie angelegt werden — +> typisches Trunk-Verhalten auf diesem Switch. VLAN-Liste 10/20/30/40/50/90/99/100 tagged, native VLAN 1. +> Diese Anleitung bleibt als Referenz/Verifikation erhalten. + **Gerät:** ALLNET ALL-SG8316M, `http://10.40.41.11` (FW 2.2.1). **Du klickst** (deine Creds). **Ziel:** Port **GE8** (Uplink zum Omada-Switch) wird ein sauberer Trunk — **genau wie GE1/GE2** (deine bestehenden AP-Trunks). ## Zielzustand GE8 -- **Mode:** `Trunk` (aktuell noch `Hybrid`) +- **Mode:** `Trunk` (✅ bereits aktiv) - **Native / PVID:** VLAN **1** (untagged) -- **Tagged VLANs:** **10, 20, 30, 40, 90, 99, 100** +- **Tagged VLANs:** **10, 20, 30, 40, 50, 90, 99, 100** ## Schritte 1. **Login** Web-UI `http://10.40.41.11`. diff --git a/docs/core-switch-prep.md b/docs/core-switch-prep.md index 7c9207b..71e1674 100644 --- a/docs/core-switch-prep.md +++ b/docs/core-switch-prep.md @@ -1,12 +1,11 @@ # Core-Switch ALL-SG8316M — Vorbereitung & Status -> Stand: **2026-06-09** — Phase A (VLAN-Vorbereitung) abgeschlossen. -> Phase B (hAP-Cutover) wartet auf die MikroTik hAP ax². -> Vollständige Übergabe/Architektur: `HANDOVER.md` im Repo-Root. +> Stand: **2026-06-15** — TP1 abgeschlossen: VLAN-DB komplett (inkl. 40=MEDIA, 50=UNTRUSTED), GE1/GE2/GE8 Trunk mit allen VLANs. +> Phase B (hAP-Cutover = TP4) steht aus. > CLI-Referenz: `switch/cli/CLI-REFERENCE.md`. Switch: **ALLNET ALL-SG8316M**, 16× Gigabit, Smart-Managed. **FW 2.2.1.2956** (geflasht am 2026-06-08 von 1.0/2014). -Mgmt-IP: **10.40.41.239** (statisch, im MAIN-Subnetz bis zum Cutover → wandert nach vlan99/10.40.99.2). +Mgmt-IP: **10.40.41.11** (statisch, VLAN1, interim bis Cutover → wandert nach vlan99/10.40.99.11). Login: `claudecode` (Creds in `switch/.secrets`). ## 0. Capability-Check (verifiziert) @@ -33,8 +32,9 @@ Siehe `docs/vlan-plan.md` für die ausführliche Version mit Begründungen. | 10 | MAIN | 10.40.10.0/24 | **10.40.41.0/24** | Trusted-Clients + Media (Discovery!) | | 20 | INFRA | 10.40.20.0/24 | 172.x | Server, VMs, Docker, NAS, HA | | 30 | IOT | 10.40.30.0/24 | — | Smart-Home (HA-managed) | -| 40 | UNTRUSTED | 10.40.40.0/24 | — | Spielekonsole, Low-Trust-Internet | -| 90 | GUEST | 10.40.90.0/24 | — | nur Internet (abgesetzt; 50–89 frei) | +| **40** | **MEDIA** | 10.40.40.0/24 | — | **Sonos, AppleTV, TV, VuPlus, Cast-Ziele** | +| **50** | **UNTRUSTED** | 10.40.50.0/24 | — | **Spielekonsole, eBook-Reader, Low-Trust** | +| 90 | GUEST | 10.40.90.0/24 | — | nur Internet (abgesetzt) | | 99 | MGMT | 10.40.99.0/24 | Switch vorerst .239 | Switch/AP/Hypervisor-Mgmt | | 100 | WAN | (FB-Transfer) | — | zur Fritzbox | | 1 | default | — | aktuell alle Ports untagged | Lifeboat bis Cutover | @@ -62,15 +62,18 @@ Siehe `docs/vlan-plan.md` für die ausführliche Version mit Begründungen. > ⚠️ **Port-Map noch nicht final** — wird beim Cutover ausgefüllt, abhängig von hAP-Standorten. -## 3. Phase A (VLAN-Vorbereitung) — ✅ ABGESCHLOSSEN 2026-06-09 +## 3. Phase A (VLAN-Vorbereitung) — ✅ ABGESCHLOSSEN 2026-06-09 | TP1 ergänzt 2026-06-15 Alles hier änderte **nichts** am laufenden Flach-Netz (FB blieb Gateway, alle Live-Ports blieben VLAN1 untagged). 1. ✅ **Config-Backup:** `show running-config` → `switch/cli/running-PRE.txt` (Netzmasken-Syntax `mask 255.255.255.0` bestätigt) 2. ✅ **Firmware-Update:** 1.0 (2014) → 2.2.1.2956 (2018). Details: `docs/firmware-flash-runbook.md` -3. ✅ **VLAN-DB angelegt + benannt:** 10=MAIN, 20=INFRA, 30=IOT, 40=UNTRUSTED, 90=GUEST, 99=MGMT, 100=WAN. **Alle Static, keine Port-Membership → null Disruption.** -4. ✅ **Save** (Success), `show vlan` verifiziert. -5. ✅ CLI-Reference (`switch/cli/CLI-REFERENCE.md`) mit bestätigter Syntax aktualisiert. +3. ✅ **VLAN-DB angelegt + benannt:** 10=MAIN, 20=INFRA, 30=IOT, 40=MEDIA, 50=UNTRUSTED, 90=GUEST, 99=MGMT, 100=WAN. Alle Static, saved. + - Initial (2026-06-09): VLANs 10/20/30/40/90/99/100, VLAN 40 hieß noch UNTRUSTED. + - TP1 (2026-06-15, `switch/cli/04-vlan50-media-untrusted.cli`): VLAN 40 → MEDIA, VLAN 50 UNTRUSTED angelegt, GE1/GE2 um VLAN 50 ergänzt. +4. ✅ **GE1/GE2 (AP-Trunks):** Trunk native vlan1, tagged 10/20/30/40/50/90/99/100. CLI `03-trunk-ap-ports.cli` (initial) + `04-vlan50-media-untrusted.cli` (VLAN 50 add). +5. ✅ **GE8 (Omada-Uplink):** Trunk native vlan1, tagged 10/20/30/40/50/90/99/100. Bereits aktiv; VLAN 50 automatisch includiert (Trunk-Behavior). Klickanleitung: `docs/allnet-ge8-trunk-klickanleitung.md`. +6. ✅ **Save** (Success), `show vlan` verifiziert. CLI-Reference aktualisiert. **Reproduzierbar:** ```bash diff --git a/docs/teilprojekte.md b/docs/teilprojekte.md index 7c7033c..d8aad9b 100644 --- a/docs/teilprojekte.md +++ b/docs/teilprojekte.md @@ -16,10 +16,9 @@ | 99 | MGMT | 10.40.99.0/24 | Switch/AP/Hypervisor-Mgmt | | 100 | WAN | (FB-Transfer) | zur FritzBox | IP-Blöcke: `.1–10` Router/APs (ap1=.1, ap2=.2) · `.11–20` Switches (ALLNET=.11, Omada=.12). GW je VLAN = `.1`. -⚠️ Switch-VLAN-DB trägt noch **40=UNTRUSTED** (alt) und **kein 50** → beim Switch-Schritt umbenennen + vlan50 anlegen. ## Ist-Stand (Kurz) -ALLNET-Core `.11` (FW2.2.1, VLANs 10/20/30/40/90/99/100 benannt; GE8→Trunk in Arbeit). Omada-Switch `.12` (Standalone, Creds `omada/.secrets`). +ALLNET-Core `.11` (FW2.2.1, VLANs 10/20/30/40/50/90/99/100; GE1/GE2/GE8 Trunk; **TP1 ✅ 2026-06-15**). Omada-Switch `.12` (Standalone, Creds `omada/.secrets`). 2× hAP ax² (7.23.1): ap1 `.1` (Core P1), ap2 `.2` (Core P2 — **bleibt vorerst**). FB6660 = Router/Telefon (`.254`). Kontrolle: MikroMCP (MikroTik) live · ALLNET = Klickanleitungen (inline) · Omada → Controller (TP2). > ⚠️ **HW-Constraint hAP ax²:** 1 GB RAM, aber nur **128 MB Flash + KEIN USB** → **Container auf dem Router NICHT praktikabel**. @@ -29,9 +28,12 @@ Kontrolle: MikroMCP (MikroTik) live · ALLNET = Klickanleitungen (inline) · Oma ## Teilprojekte -### TP1 — ALLNET Core-Switch finalisieren ▸ läuft -- **GE8 Hybrid→Trunk** (Omada-Uplink): native vlan1 + tagged 10,20,30,40,90,99,100 → Klickanleitung, User klickt. Danach: vlan40 umbenennen MEDIA, **vlan50 (UNTRUSTED) anlegen**, GE8 um 50 ergänzen. -- Abh.: keine. Ergebnis: Core trägt alle VLANs an P1/P2/P8. +### TP1 — ALLNET Core-Switch finalisieren ▸ ✅ FERTIG (2026-06-15) +- ✅ GE8 Trunk (native vlan1, tagged 10/20/30/40/50/90/99/100) — war bereits aktiv. +- ✅ VLAN 40 umbenannt: UNTRUSTED → **MEDIA** (`switch/cli/04-vlan50-media-untrusted.cli`). +- ✅ VLAN 50 angelegt + benannt: **UNTRUSTED**. +- ✅ GE1/GE2 (AP-Trunks) um VLAN 50 ergänzt; GE8 auto-includiert (Trunk). +- Ergebnis: Core trägt alle VLANs (10/20/30/40/50/90/99/100) an P1/P2/P8. ### TP2 — Omada Access-Switch + Controller ▸ als Nächstes - **Omada Software Controller als Container auf DS923 (BF)** → Switch `.12` adoptieren → Uplink/ap2-Port=Trunk(all), lokale=Access. Dann **omada-mcp** (realtydev) an Controller. diff --git a/switch/cli/04-vlan50-media-untrusted.cli b/switch/cli/04-vlan50-media-untrusted.cli new file mode 100644 index 0000000..0a45341 --- /dev/null +++ b/switch/cli/04-vlan50-media-untrusted.cli @@ -0,0 +1,23 @@ +# === BF Core-Switch sw1 (ALL-SG8316M, FW 2.2.1) — VLAN 40→MEDIA + VLAN 50 UNTRUSTED === +# Reproduzierbar: . switch/.secrets && expect switch/cli/run-cli.exp switch/cli/04-vlan50-media-untrusted.cli +# NON-DISRUPTIV: +# - VLAN 40 wird nur umbenannt (kein Port-Eingriff, Membership bleibt identisch) +# - VLAN 50 wird angelegt + benannt (noch kein Port-Member → kein Traffic betroffen) +# - GE1 + GE2 (AP-Trunks) bekommen VLAN 50 als tagged hinzu (kein Gerät nutzt VLAN 50 noch) +# Ergebnis: VLAN-DB korrekt (40=MEDIA, 50=UNTRUSTED), AP-Trunks bereit für künftige UNTRUSTED-SSID. +configure +vlan 40 + name MEDIA +exit +vlan 50 + name UNTRUSTED +exit +interface gi1 + switchport trunk allowed vlan add 50 +exit +interface gi2 + switchport trunk allowed vlan add 50 +exit +end +save +show vlan diff --git a/switch/cli/CLI-REFERENCE.md b/switch/cli/CLI-REFERENCE.md index 23e05f1..82fe0ee 100644 --- a/switch/cli/CLI-REFERENCE.md +++ b/switch/cli/CLI-REFERENCE.md @@ -37,7 +37,7 @@ Tooling (macOS): `telnet` (/opt/homebrew/bin) + `expect`. Python 3.14 hat KEIN t ``` - ⚠️ **`end` aus config-vlan geht DIREKT zu sw1#** (überspringt config-Ebene) — also `exit` benutzen, nicht `end`, wenn man weitere VLANs bearbeiten will. - Befehle im config-vlan: `do` (exec-Befehle), `end`/`exit` (raus), `name` (Name setzen). - - Aktuelle Namen: 10=MAIN, 20=INFRA, 30=IOT, 40=UNTRUSTED, 90=GUEST, 99=MGMT, 100=WAN. + - Aktuelle Namen: 10=MAIN, 20=INFRA, 30=IOT, 40=MEDIA, 50=UNTRUSTED, 90=GUEST, 99=MGMT, 100=WAN. ## Ports (gi1-16, lag1-8) — Trunk/Access (für Cutover) ```