TP1 ✅ ALLNET Core-Switch finalisiert: VLAN 40→MEDIA, VLAN 50 UNTRUSTED, GE8 Trunk verifiziert

- 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 <noreply@anthropic.com>
This commit is contained in:
2026-06-15 11:33:25 +02:00
parent e15edc22d7
commit a58d419747
6 changed files with 53 additions and 20 deletions

View File

@@ -27,7 +27,7 @@ GW je VLAN = `.1` · APs: ap1=`.1`, ap2=`.2` · Switches: ALLNET=`.11`, Omada=`.
## Hardware & Zugang ## Hardware & Zugang
| Gerät | IP | 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² #1 (ap1) | 10.40.41.1 | MikroMCP (live) |
| hAP ax² #2 (ap2) | 10.40.41.2 | MikroMCP (live) | | hAP ax² #2 (ap2) | 10.40.41.2 | MikroMCP (live) |
| NAS (nas-bf) | 10.40.41.10 | SSH | | 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. - **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). - **`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. - **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). - **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. - mgmt-VLAN-Wechsel am Switch = Lockout-Risiko: VLAN muss existieren + Port muss es tragen, in einem Schritt.

View File

@@ -1,12 +1,17 @@
# Klickanleitung — ALLNET GE8 von Hybrid → Trunk (R0) # 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). **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). **Ziel:** Port **GE8** (Uplink zum Omada-Switch) wird ein sauberer Trunk — **genau wie GE1/GE2** (deine bestehenden AP-Trunks).
## Zielzustand GE8 ## Zielzustand GE8
- **Mode:** `Trunk` (aktuell noch `Hybrid`) - **Mode:** `Trunk` (✅ bereits aktiv)
- **Native / PVID:** VLAN **1** (untagged) - **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 ## Schritte
1. **Login** Web-UI `http://10.40.41.11`. 1. **Login** Web-UI `http://10.40.41.11`.

View File

@@ -1,12 +1,11 @@
# Core-Switch ALL-SG8316M — Vorbereitung & Status # Core-Switch ALL-SG8316M — Vorbereitung & Status
> Stand: **2026-06-09** — Phase A (VLAN-Vorbereitung) abgeschlossen. > 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) wartet auf die MikroTik hAP ax². > Phase B (hAP-Cutover = TP4) steht aus.
> Vollständige Übergabe/Architektur: `HANDOVER.md` im Repo-Root.
> CLI-Referenz: `switch/cli/CLI-REFERENCE.md`. > 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). 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`). Login: `claudecode` (Creds in `switch/.secrets`).
## 0. Capability-Check (verifiziert) ## 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!) | | 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 | | 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) | | 30 | IOT | 10.40.30.0/24 | — | Smart-Home (HA-managed) |
| 40 | UNTRUSTED | 10.40.40.0/24 | — | Spielekonsole, Low-Trust-Internet | | **40** | **MEDIA** | 10.40.40.0/24 | — | **Sonos, AppleTV, TV, VuPlus, Cast-Ziele** |
| 90 | GUEST | 10.40.90.0/24 | — | nur Internet (abgesetzt; 50–89 frei) | | **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 | | 99 | MGMT | 10.40.99.0/24 | Switch vorerst .239 | Switch/AP/Hypervisor-Mgmt |
| 100 | WAN | (FB-Transfer) | — | zur Fritzbox | | 100 | WAN | (FB-Transfer) | — | zur Fritzbox |
| 1 | default | — | aktuell alle Ports untagged | Lifeboat bis Cutover | | 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. > ⚠️ **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). 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) 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` 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.** 3. ✅ **VLAN-DB angelegt + benannt:** 10=MAIN, 20=INFRA, 30=IOT, 40=MEDIA, 50=UNTRUSTED, 90=GUEST, 99=MGMT, 100=WAN. Alle Static, saved.
4. ✅ **Save** (Success), `show vlan` verifiziert. - Initial (2026-06-09): VLANs 10/20/30/40/90/99/100, VLAN 40 hieß noch UNTRUSTED.
5. ✅ CLI-Reference (`switch/cli/CLI-REFERENCE.md`) mit bestätigter Syntax aktualisiert. - 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:** **Reproduzierbar:**
```bash ```bash

View File

@@ -16,10 +16,9 @@
| 99 | MGMT | 10.40.99.0/24 | Switch/AP/Hypervisor-Mgmt | | 99 | MGMT | 10.40.99.0/24 | Switch/AP/Hypervisor-Mgmt |
| 100 | WAN | (FB-Transfer) | zur FritzBox | | 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`. 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) ## 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`). 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). 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**. > ⚠️ **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 ## Teilprojekte
### TP1 — ALLNET Core-Switch finalisieren ▸ läuft ### TP1 — ALLNET Core-Switch finalisieren ▸ ✅ FERTIG (2026-06-15)
- **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. - ✅ GE8 Trunk (native vlan1, tagged 10/20/30/40/50/90/99/100) — war bereits aktiv.
- Abh.: keine. Ergebnis: Core trägt alle VLANs an P1/P2/P8. - ✅ 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 ### 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. - **Omada Software Controller als Container auf DS923 (BF)** → Switch `.12` adoptieren → Uplink/ap2-Port=Trunk(all), lokale=Access. Dann **omada-mcp** (realtydev) an Controller.

View File

@@ -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

View File

@@ -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. - ⚠️ **`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). - 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) ## Ports (gi1-16, lag1-8) — Trunk/Access (für Cutover)
``` ```