Files
bf-infra/docs/core-switch-prep.md

6.5 KiB
Raw Blame History

Core-Switch ALL-SG8316M — Vorbereitung & Status

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.11 (statisch, VLAN1, interim bis Cutover → wandert nach vlan99/10.40.99.11). Login: claudecode (Creds in switch/.secrets).

0. Capability-Check (verifiziert)

Anforderung ALL-SG8316M Quelle
IEEE 802.1Q VLAN tagged ✅ UM, VLAN-Kapitel
Port-Modus Trunk (1 untagged + n tagged) ✅ UM
Port-Modus Access (nur untagged) ✅ UM
Port-Modus Hybrid ✅ UM (default auf allen Ports!)
PVID je Port (1–4094) ✅ UM
STP/RSTP, LACP, Port-Mirroring, 802.3x ✅ UM
Web-UI skriptbar (FW 1.0) ✅ Realtek dispatcher.cgi
Web-UI skriptbar (FW 2.2.1) ❌ cmd-Codes geändert (cmd=2 → 404)
SSH ❌ nur Telnet (Port 23)
Telnet-VTY-Lines 1 ⚠️ reapt stale Sessions schlecht

1. VLAN-Schema (final — User-bestätigt 2026-06-09)

Siehe docs/vlan-plan.md für die ausführliche Version mit Begründungen.

VLAN Name Subnetz (Ziel) Interim Zweck
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 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

Adress-Konvention: 3. Oktet = VLAN-ID (10.40..0/24). Gateway je VLAN = .1 (hAP#1). Switch-Mgmt = 10.40.99.2 (nach Cutover).

2. Port-Map (16 Ports) — Ist vs. Soll

Ist (inventory/bf-core-ports.csv):

Port Heute
4 Wohnzimmer-Switch
8 Arbeitszimmer-Switch (.10/.167/.247)
15 pve (Mac mini)
16 FB (.246 auf FB-LAN4)

Soll (nach Phase-B-Cutover):

Port Ziel Modus
16 FB-Uplink Access untagged vlan100
2 oder 3 hAP ax² #1 (Trunk) Trunk tagged 10,20,30,40,90,100
2 oder 3 hAP ax² #2 (Trunk) Trunk tagged 10,20,30,40,90
4, 8, 15 interim MAIN Access untagged vlan10
1 oder 16 Lifeboat bis Mgmt sicher Access untagged vlan1

⚠️ Port-Map noch nicht final — wird beim Cutover ausgefüllt, abhängig von hAP-Standorten.

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=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:

cd ~/dev/bf-network-r6/switch
. ./.secrets
expect cli/02-vlan-names.exp     # benennt die VLANs (idempotent)
# ODER: manuell:
# expect cli/01-vlan-db.exp      # legt VLANs an (aus 01-vlan-db.cli)

4. Phase B (hAP-Cutover) — AUSSTEHEND (MikroTik hAP ax² bestellt, noch nicht da)

Voraussetzungen:

  • 2× MikroTik hAP ax² produktiv
  • Technitium-DNS läuft (pve + fm)
  • Switch-Phase-A abgeschlossen ✅

Schritte (geplant, Details in HANDOVER.md §5.B):

  1. Trunk-Ports (2 & 3) am Switch auf Trunk tagged 10,20,30,40,90,100 konfigurieren
  2. hAP #1 + #2 einstecken
  3. hAP #1 = Router/Gateway (10.40..1), DHCP, DNS, CAKE/SQM, CAPsMAN
  4. FB umstellen: DHCP aus, "Exposed Host" → hAP#1-WAN-IP. FB-Port (16) → Access untagged vlan100.
  5. Live-Ports (4, 8, 15) → Access untagged vlan10 (PVID 10).
  6. Switch-Mgmt → vlan99, IP 10.40.99.2.
  7. Gateway-Migration .254 → .1 via Secondary-IP auf hAP#1 (siehe Gotcha §6).

5. ⚠️ Gotchas (Cutover-kritisch)

  • Telnet-VTY-Lockout: Nur 1 VTY-Line. Stale Sessions blockieren ~15 min. Immer serialisiert, sauber ausloggen. Bei "busy" warten statt hämmern. Recovery: Switch rebooten.
  • Mgmt-VLAN-Lockout: Ziel-VLAN muss existieren UND der Mgmt-Port muss es tragen, sonst Reachability weg. Reset-Button ist einziger Fallback (kein serieller Konsolen-Port).
  • Gateway-Migration .254 → .1: Alt-Lease-Clients zeigen noch auf .254. FB verlässt aber das LAN → Clients tot. Mitigation: hAP#1 temporär Secondary-IP .254 bis alle Leases renewen.
  • CLI-Semantik: In expect-Scripts exit aus (config-vlan) benutzen, nicht end (end aus config-vlan geht DIREKT zu sw1# und überspringt die config-Ebene).
  • Web-UI skripten ist tot: FW 2.2.1 hat die Realtek-dispatcher.cgi-cmd-Codes geändert. Telnet-CLI ist der einzige automatisierbare Weg.

6. Offene Punkte

  • VLAN-Schema final (mit 90=GUEST statt 40=Guest — eigene ID für Spielekonsole als IoT-Verschärfung)
  • Firmware geflasht (1.0 → 2.2.1.2956)
  • VLAN-DB angelegt + benannt + saved
  • MikroTik hAP ax² (bestellt, Lieferung ausstehend)
  • Echte Port-Belegung finalisieren (hAP-Standorte unbekannt → Trunk-Port-Wahl offen)
  • Phase B: Trunk-Config, hAP-Bestückung, Cutover-Plan detail
  • Phase C: Firewall Least-Privilege-Regelwerk
  • Phase D: Adress-Migrationen (MAIN 10.40.41 → 10.40.10, INFRA 172.x → 10.40.20, NAS .10 → INFRA)