- teilprojekte.md: TP2 als IN ARBEIT markiert, offene Schritte präzisiert (omada-mcp deployen â Claude Code eintragen â VLANs anlegen â .12 adoptieren) - INVENTORY.md: omada-controller đ˘ (Wizard done), omada-mcp đ´ (Container pending) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
122 lines
10 KiB
Markdown
122 lines
10 KiB
Markdown
# BF-Netzwerk â Teilprojekte (kanonische Steuerung, Stand 2026-06-10)
|
||
|
||
> **Zweck:** Das groĂe Netz-Projekt in **einzeln durchziehbare Teilprojekte (TP)** zerlegt â jedes mit klarem Scope,
|
||
> aktuellen Entscheidungen, Abhängigkeiten und Status. Jedes TP ist so geschnitten, dass es eine frische Session
|
||
> **mit sauberem Kontext** straight abarbeiten kann. Architektur/Historie: `~/.claude/plans/ich-will-das-delegieren-atomic-sunrise.md`.
|
||
|
||
## Kanonisches VLAN-Modell (gĂźltig â Ăźberschreibt ältere Tabellen)
|
||
| VLAN | Name | Subnetz (Ziel) | Zweck |
|
||
|---|---|---|---|
|
||
| 10 | MAIN | 10.40.10.0/24 | Trusted (Handy/Laptop/Apple Watch) |
|
||
| 20 | INFRA | 10.40.20.0/24 | NAS/VMs/Docker/HA |
|
||
| 30 | IOT | 10.40.30.0/24 | Smart-Home (HA-managed), Waage, Fitness-Tracker |
|
||
| **40** | **MEDIA** | 10.40.40.0/24 | **Sonos, AppleTV, TV, VuPlus, Cast-Ziele** (getauscht ggĂź. frĂźher) |
|
||
| **50** | **UNTRUSTED** | 10.40.50.0/24 | **Spielekonsole, eBook-Reader, Low-Trust-Internet** |
|
||
| 90 | GUEST | 10.40.90.0/24 | nur Internet |
|
||
| 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`.
|
||
|
||
## Ist-Stand (Kurz)
|
||
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â**adopted erwartet, TP2 â
2026-06-15**).
|
||
Omada-Controller **`.175`** (DS923/macvlan, mbentley 6.2, đ˘ live). omada-mcp `.174` (staged, wartet auf Wizard-Passwort).
|
||
2Ă hAP ax² (7.23.1): ap1 `.1` (ALLNET P1), ap2 `.2` (Omada P2 â Trunk). FB6660 = Router/Telefon (`.254`).
|
||
Kontrolle: MikroMCP (MikroTik) live ¡ ALLNET = Klickanleitungen (inline) ¡ Omada â Controller + omada-mcp (nach Wizard).
|
||
> â ď¸ **HW-Constraint hAP ax²:** 1 GB RAM, aber nur **128 MB Flash + KEIN USB** â **Container auf dem Router NICHT praktikabel**.
|
||
> Folge: **native RouterOS-Features bevorzugen** (z.B. Built-in-mDNS statt Container); Container (mDNS-Reflector, BIND9-DNS, Omada-Controller) laufen auf **NAS/pve**, nicht am hAP.
|
||
|
||
---
|
||
|
||
## Teilprojekte
|
||
|
||
### 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 ⸠đ IN ARBEIT (2026-06-15)
|
||
- â
Omada Controller 6.2.10.17 auf DS923 (macvlan `.175`): `omada/docker-compose.yml`, Stack via Portainer endpointId=14. **Wizard abgeschlossen** (configured=true), Creds in `mcp/omada/.env`.
|
||
- â
pve-mcp (samik081) in Claude Code eingetragen (`~/.claude/settings.json`, SSE `.173:3000`).
|
||
- â
omada-mcp staged: `mcp/omada/` (compose + .env fertig befĂźllt), macvlan `.174`.
|
||
**Noch offen (Reihenfolge):**
|
||
1. omada-mcp Container deployen (Portainer endpointId=14, `mcp/omada/docker-compose.yml`)
|
||
2. `~/.claude/settings.json` â `"omada-mcp": {"url": "http://10.40.41.174:3000/sse"}` eintragen
|
||
3. Claude Code neu starten â omada-mcp Tools verfĂźgbar
|
||
4. VLANs 10/20/30/40/50/90/99/100 im Controller anlegen
|
||
5. `.12` adoptieren â Port 2 (ap2) + Uplink-Port â Trunk-All, Restports â Access VLAN10
|
||
- â
Port-Plan: Omada-Switch Port 2 = ap2 (Trunk all), Uplink-Port (â ALLNET GE8) = Trunk all.
|
||
- â
Portainer-AblĂśsung: **Komodo** empfohlen (einzige Option mit nativem MCP `mcp-server-komodo`). Eigener Task.
|
||
- Abh. erfĂźllt: TP1 (GE8 Trunk â
).
|
||
|
||
### TP3 â WLAN / CAPsMAN ⸠teilweise blockiert
|
||
- **`bound`-Problem** sauber lĂśsen (MikroMCP, doku-gegrĂźndet) â Test-WLAN âBF-Main" â SSIDâVLAN-Datapaths.
|
||
- **DoH-Upstream auf APs = Cloudflare** (`/ip dns use-doh-server=https://cloudflare-dns.com/dns-query verify-doh-cert=yes`). Rest der AP-Config noch ~default.
|
||
- **SSID-Strategie (Entscheid):** NICHT naiv 1 SSID je VLAN + MAC-Filter. Besser: **eine 802.1X-SSID mit dynamischer VLAN-Zuweisung** (RADIUS, â TP8) fĂźr fähige Geräte; **PSK-SSIDs** fĂźr IoT/Guest/Media (Geräte ohne 802.1X). Einheitliche Nomenklatur `BF-âŚ`. Hidden â Sicherheit (nur Obscurity); MAC-Filter = schwaches Minimum, **EAP-TLS/Zert deutlich besser** (TP8).
|
||
- **Mesh = NEIN** (beide APs wired-trunk â Loop-Risiko via Router/LAN; Mesh nur sinnvoll ohne wired backhaul). Research bestätigt in TP-R.
|
||
- Abh.: TP8 (fĂźr 802.1X). research: CAPsMAN-bound, mesh.
|
||
|
||
### TP4 â Router-Cutover (hAP#1 = Router) ⸠disruptiv, geplant
|
||
- Per-VLAN L3-Interface `.1`, **DHCP** (RouterOS), **DNS = RouterOS-nativ + nur statische Records**, **NAT**, FBâ**Bridge-Mode/Exposed-Host**.
|
||
- **DNS-Entscheidung** (Technitium **und** externer BIND verworfen â Vorgabe: kein Container auĂer am Router, keine NAS/pve-Abhängigkeit; hAP kann praktikabel keinen DNS-Container hosten): RouterOS-DNS als Resolver, **keine DHCPâDNS-Auto-Registrierung**. Infra-Hosts (haben eh DHCP-Reservierungen) als statische `/ip dns static`-Einträge unter `bf.lan`; dynamische Clients bewusst ohne Namen. Filtering/DNSSEC via DoH-Upstream (TP3). HA: 2. Resolver auf ap2, statische Einträge beidseitig pflegen. BegrĂźndung/parkierte Variante A: `docs/research/dns-registration-options.md`.
|
||
- **FB-Bridge testen** (LAN4-Native-Bridge-Hack) â kein Double-NAT; sonst Exposed-Host-Fallback.
|
||
- Abh.: TP1, TP3. Ziel: VLAN-SSILs nutzbar + Telefonie-Fix aktiv.
|
||
|
||
### TP5 â Firewall & Inter-VLAN-Policy
|
||
- **Deny-by-default + least-privilege.** MAINâINFRA nur Whitelist-Dienste; MAINâMEDIA allow (+mDNS); UNTRUSTED/GUEST nur Internet; MGMT isoliert; Router-input gehärtet.
|
||
- **IoTâINFRA-RĂźckmeldung (deine Frage):** IoT darf **aktiv** zu INFRA-Diensten initiieren â Firewall-Allow IoTâINFRA NUR auf **MQTT (1883/8883), HA-API, InfluxDB (8086)** o.ä.; Antworten via established/related; IoTâMAIN bleibt deny. So pusht ein Sensor Daten an HA/MQTT/Influx, ohne dass IoT âfrei" ist.
|
||
- Abh.: TP4.
|
||
|
||
### TP6 â QoS/CAKE + Call-Quality-A/B-Test ⸠DAS Ziel
|
||
- **CAKE am WAN-Upload** (~85â95 % Linerate) â Bufferbloat weg. Verifikation waveform.com â A/A+.
|
||
- â ď¸ **Vor âErfolg":** A/B-Test, denn Kollegen-Befund sagt DE-Calls = **internat. Pfad ATâDE**, nicht Heimnetz â ggf. **WARP** statt/zusätzlich CAKE. Nicht am einen Telefonat festmachen.
|
||
- Abh.: TP4.
|
||
|
||
### TP7 â Media-Discovery (mDNS) fĂźr VLAN 40
|
||
- **Built-in mDNS-Repeater** (7.16+) MAINâMEDIA; Cast/SSDP optional via <10MB-Container. Firewall-Holes (TP5).
|
||
- Abh.: TP4, TP5.
|
||
|
||
### TP8 â Identity & Access-Control ⸠research-gated
|
||
- **RADIUS = FreeRADIUS auf der NAS** (âď¸ User-Manager v5 kann **KEIN LDAP** â openldap nur via FreeRADIUS anbindbar).
|
||
- **EAP-TLS (Zert) je Gerät + dynamische VLAN-Zuweisung** (RADIUS-Attribut `Tunnel-Private-Group-ID`). **Einfachste Heim-Alternative:** pro VLAN eine SSID mit **WPA3-PSK** (kein RADIUS) â Abwägung Komfort vs. Admin-Aufwand.
|
||
- Abh.: TP3. (Research erledigt, s. TP-R.)
|
||
|
||
### TP9 â Gateway-/Router-HA ⸠research-gated
|
||
- **âWas, wenn ap1 ausfällt?"** â **VRRP** lĂśst Gateway-Failover je VLAN ~gratis (kreuzweise Master/Backup).
|
||
â ď¸ **Haken (nicht Last):** DHCP/Firewall/NAT/DNS mĂźssen auf **BEIDEN** APs **identisch** gepflegt sein, sonst âGateway up, Internet tot".
|
||
**Empfehlung:** VRRP nur fĂźr **MAIN/INFRA**, sonst ap2 als **Kalt-Ersatz** + Backup. DHCP/DNS schon redundant (Split + 2 Resolver).
|
||
- Abh.: TP4. (Research erledigt, s. TP-R + Config-Skizze im Report.)
|
||
|
||
### TP10 â Multi-Site VPN ⸠Research fertig (`docs/research/vpn-comparison.md`)
|
||
- **Empfehlung:** **Hybrid** â **WireGuard Site-to-Site-Backbone** (BF/hAP = WG-**Hub**, FM/DW = FritzBox-**Spokes**, hub&spoke, **KEINE Zusatz-HW**) **+ WARP fĂźr Remote-User** (ergänzt, ersetzt nicht).
|
||
- **WARP kann FBs NICHT direkt** ansprechen â bräuchte Connector-Host hinter der FB (an reinen-FB-Standorten FM/DW unattraktiv).
|
||
- **Vorab-Check (User, entscheidend):** WAN je Standort â **public/dynamisch (OK: DynDNS/MyFRITZ) vs. CGNAT/DS-Lite am BF-Hub (= K.O. â dann CF/WARP-Pfad, CGNAT-immun)**.
|
||
- WG-Gotchas: keine IP aufs WG-IF (MikroTik), AllowedIPs=Tunnel+LAN-CIDRs, MTU 1412, Keepalive 25. ap1 hat noch KEIN WG (Neuaufbau).
|
||
- Abh.: WAN-Check; Hub sinnvoll nach TP4 (Router-Cutover).
|
||
|
||
### TP11 â Monitoring & Mgmt-Control-Plane ⸠research-gated
|
||
- MikroMCP + omada-mcp + **SNMP/icinga-mikrotik**, RoMON, NTP, **E-Mail-Alerts**, Netwatch. â Teil von `docs/research/routeros-capabilities.md`.
|
||
|
||
### TP12 â IPv6 (intern + extern, 3 Standorte) ⸠research-gated
|
||
- Konzept fĂźr FM/BF/DW. â TP-R.
|
||
|
||
### TP13 â âBotschafts-WLANs" ⸠fun, low-prio
|
||
- Nutzlose SSIDs mit Botschaft (âKanal 500 bitte nicht nutzen"), offenes WLAN mit Captive-Portal das auf **statische Info-HTML** zeigt (Nachbarschafts-WLAN-Tuning, Auto-Kanalwechsel). Idee: wer's sieht, kann auch stĂśren â Infoseite = beste Adresse. â ď¸ **Recht prĂźfen** (Impressum/TMG, StĂśrerhaftung bei offenem WLAN â User privat). RouterOS-Hotspot/Captive-Portal kann das.
|
||
|
||
### TP-R â Router-Capabilities-Sweep ⸠FERTIG (`docs/research/routeros-capabilities.md`)
|
||
- **Leitsatz: nativ vor Container, NAS vor Router** (128MB-Flash-Limit).
|
||
- **Sofort nativ (~0 RAM):** RoMON ¡ Netwatch ¡ Scheduler + Auto-Backup/Mail ¡ SNMPâexternes Monitoring ¡ **mDNS-Repeater** ¡ spectral-scan ¡ **CAPsMAN + 802.11r/k/v (Fast-Roaming statt Mesh)** ¡ Back-to-Home/WireGuard.
|
||
- **Auf NAS:** FreeRADIUS(+LDAP) ¡ NPM ¡ icinga/Grafana ¡ CF-Tunnel.
|
||
- **Weglassen:** LoRa (keine HW) ¡ OpenFlow ¡ CALEA ¡ **ZeroTier (CPU-Fresser bis ~60 % â WireGuard)** ¡ lokales `dude`.
|
||
- âď¸ **Korrektur Reverse-Proxy:** RouterOS **7.22+ HAT** einen nativen (`/ip/reverse-proxy`, ACME/SNI) â aber **ersetzt NPM NICHT** (kein WebSocket/gRPC/Sticky, nur IPv4-Backends, TLS frisst Router-CPU) â NPM bleibt auf NAS.
|
||
- Speist TP8/9/11/12.
|
||
|
||
---
|
||
|
||
## Reihenfolge / Abhängigkeiten
|
||
1. **Jetzt:** TP1 (GE8) â TP2 (Omada Controller). Parallel: Research (TP-R, TP10) laufen.
|
||
2. **Dann:** TP3 (WLAN-bound + DoH) â 802.1X-Teil wartet auf TP8/Research.
|
||
3. **Cutover-Block:** TP4 (Router) â TP5 (Firewall) â TP6 (QoS) â TP7 (mDNS). Disruptiv, geplant.
|
||
4. **Nachgelagert/Research-getrieben:** TP8 (Access), TP9 (HA), TP10 (VPN), TP11 (Monitoring), TP12 (IPv6), TP13 (SpaĂ).
|