From 48cdcc0fa2af014911dc67cd6806e98391f0b27a Mon Sep 17 00:00:00 2001 From: Christoph Emsenhuber Date: Mon, 15 Jun 2026 19:24:32 +0200 Subject: [PATCH] =?UTF-8?q?TP4=20=E2=9C=85=20ap1=20ist=20L3-Router=20?= =?UTF-8?q?=E2=80=94=20VLAN-Subinterfaces,=20DHCP,=20DNS,=20NAT=20live?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bridge vlan-filtering=yes; vlan10/20/30/40/50/90/99 je mit GW .1/24, DHCP-Server (Pool .100-.200), statischen DNS-Einträgen bf.lan und srcnat masquerade →bridge. Double-NAT via FB (Interim), FB-Bridge-Mode + Omada-PVID-Fix als nächste Schritte. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 9 +++++---- docs/teilprojekte.md | 33 ++++++++++++++++++--------------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 760f5ec..92c49f1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -29,11 +29,11 @@ GW je VLAN = `.1` · APs: ap1=`.1`, ap2=`.2` · Switches: ALLNET=`.11`, Omada=`. |---|---|---| | ALLNET Core-Switch (sw1) | 10.40.41.11 (interim, VLAN1) | `telnet 10.40.41.11` · User: `claudecode` · PW: `switch/.secrets` | | Omada Access-Switch (sw2) | 10.40.41.12 | Web-UI HTTPS · Creds `omada/.secrets` · **Adoption pending** | -| hAP ax² #1 (ap1) | 10.40.41.1 | MikroMCP (live) | +| hAP ax² #1 (ap1) | 10.40.41.1 (bridge/VLAN1 Mgmt) | MikroMCP (live) · **TP4 ✅: L3-Router, GW je VLAN = .1** | | hAP ax² #2 (ap2) | 10.40.41.2 | MikroMCP (live) · **Port 2 am Omada-Switch** | | NAS (nas-bf, DS923) | 10.40.41.10 | SSH · Docker (Portainer endpointId=14) | | Omada-Controller | 10.40.41.175 | `https://10.40.41.175:8043` (macvlan auf DS923) | -| omada-mcp | 10.40.41.174 | SSE `http://10.40.41.174:3000/sse` (staged, nach Wizard) | +| omada-mcp | 10.40.41.176 | StreamableHTTP `http://10.40.41.176:3000/mcp` · MCP in Claude Code ✓ (pve-LXC) | | pve-mcp | 10.40.41.173 | SSE `http://10.40.41.173:3000/sse` · MCP in Claude Code ✓ | | Proxmox (pve) | 10.40.41.100 | kein SSH-Key konfiguriert | | Docker-LXC (auf pve) | 10.40.41.126 | Portainer CE 2.40.0 (`https://10.40.41.126:9443`) | @@ -48,8 +48,8 @@ GW je VLAN = `.1` · APs: ap1=`.1`, ap2=`.2` · Switches: ALLNET=`.11`, Omada=`. - **ALLNET-Switch:** kein MCP — nur Telnet-CLI (IOS-artig, FW 2.2.1). Runner: `cd ~/dev/bf-network-r6/switch && . ./.secrets && expect cli/run-cli.exp cli/.cli` Klickanleitungen in `switch/ui-guides/` für manuelle Schritte. -- **Omada-Switch:** Controller `https://10.40.41.175:8043` (TP2 ✅). Adoption + Port-Config: manuell im Browser. - omada-mcp nach Wizard: `mcp/omada/docker-compose.yml` deployen (endpointId=14), Claude Code eintragen. +- **Omada-Switch:** Controller `https://10.40.41.175:8043` (TP2 ✅). Adoption ✅. Port-Config: manuell im Browser. + omada-mcp live auf pve-LXC (.176, StreamableHTTP /mcp, MCP in Claude Code ✓). - **Docker-Management:** Portainer API `https://10.40.41.126:9443`, Key in `mcp/portainer/.env`. Ablösung durch Komodo (native MCP) geplant. @@ -64,3 +64,4 @@ GW je VLAN = `.1` · APs: ap1=`.1`, ap2=`.2` · Switches: ALLNET=`.11`, Omada=`. - **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. - **Omada ES208G = Easy Managed** → Controller-adoptierbar (ab 6.1.x), nur Basis-VLAN/QoS im Controller (kein ACL/Policy-Routing). +- **TP4 ✅: ap1 ist L3-Router.** Bridge mit vlan-filtering=yes; VLAN1 untagged (Mgmt/Transition); vlan10-99 Subinterfaces mit DHCP+DNS. NAT masquerade out=bridge → FB (Double-NAT bis FB-Bridge-Mode). DNS: 13 statische A-Records bf.lan, Upstream FB. Omada-PVID-Fix (→ .10/.20-Subnetze) ist nächster Schritt. diff --git a/docs/teilprojekte.md b/docs/teilprojekte.md index a3c24d7..115b5dc 100644 --- a/docs/teilprojekte.md +++ b/docs/teilprojekte.md @@ -18,11 +18,11 @@ 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` (adopted, **TP2 ✅ 2026-06-15**; Trunk-ALL auf P1+P2, Access-Profile auf P3-P8; Profile noch PVID=1 bis TP4 — siehe TP2). +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` (adopted, **TP2 ✅ 2026-06-15**; Trunk-ALL auf P1+P2, Access-Profile auf P3-P8; Profile noch PVID=1 bis Omada-PVID-Fix). Omada-Controller **`.175`** (DS923/macvlan, mbentley 6.2, 🟢 live). omada-mcp **`.176`** (pve-LXC, StreamableHTTP, 🟢 live, 84 read-Tools; Controller-API v2 intern via christoph@emsenhuber.com). -2× hAP ax² (7.23.1): ap1 `.1` (ALLNET P1), ap2 `.2` (Omada P2 — Trunk). FB6660 = Router/Telefon (`.254`). +2× hAP ax² (7.23.1): ap1 `.1` (ALLNET P1) — **TP4 ✅ 2026-06-15: L3-Router aktiv** (VLAN-Subinterfaces, DHCP, DNS, NAT). ap2 `.2` (Omada P2 — Trunk). FB6660 = Double-NAT-Upstream bis FB-Bridge-Mode (ausstehend, physisch). Kontrolle: MikroMCP (MikroTik) live · ALLNET = Klickanleitungen · Omada → Controller + omada-mcp 🟢. -**Nächster Schritt: TP4 (Router-Cutover) wird vorgezogen** — blockiert Profile-Fix und alle weiteren VLANs. +**Nächster Schritt: Omada-PVID-Fix** (MAIN→PVID10, INFRA→PVID20, untagNetworkIds bereinigen) + IP-Migration Geräte. > ⚠️ **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. @@ -78,14 +78,18 @@ Kontrolle: MikroMCP (MikroTik) live · ALLNET = Klickanleitungen · Omada → Co - **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) ▸ ⚡ VORGEZOGEN — nächstes TP -- 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-Abhängigkeit **entfällt** (TP4 vor TP3 ziehen; WLAN läuft weiterhin über FB bis TP3). -- **Ermöglicht nach TP4:** PVID-Fix in Omada-Profilen (MAIN→10, INFRA→20), untagNetworkIds-Bereinigung, - DHCP-Reservierungen für NAS/macmini/pve auf neue VLAN-Subnetze migrieren. -- Ziel: VLAN-Traffic vollständig segmentiert + Internet aller VLANs via NAT auf ap1. +### TP4 — Router-Cutover (hAP#1 = Router) ▸ ✅ L3-Infra FERTIG (2026-06-15) — FB-Bridge ausstehend +- ✅ **Bridge VLAN-Filtering aktiviert** (`vlan-filtering=yes`); VLAN-Tabelle: VLAN1 untagged bridge+ether2, VLANs 10/20/30/40/50/90/99/100 tagged bridge+ether2. +- ✅ **VLAN-Subinterfaces:** vlan10/20/30/40/50/90/99 auf bridge; je GW `.1` (10.40.10.1 … 10.40.99.1). +- ✅ **DHCP:** dhcp-v10…dhcp-v99 je auf eigenem VLAN-Interface, pools .100-.200, GW+DNS = VLAN-GW. +- ✅ **DNS:** RouterOS-nativ, allow-remote-requests=yes, Upstream 10.40.41.254 (FB, interim). Statische Einträge für alle Infra-Hosts unter `bf.lan` (13 Einträge, Transition-IPs bis PVID-Fix). + - ⚠️ Auto-Suffix `.lan` (RouterOS-Einschränkung, kann nicht auf leer gesetzt werden) — TP5-Cleanup. +- ✅ **NAT:** srcnat masquerade out-interface=bridge (ap1 → FB → Internet, Double-NAT Interim-Lösung). +- ✅ **Routing-Tabelle:** 0.0.0.0/0 via 10.40.41.254%bridge; alle 7 VLAN-Subnetze als Connected-Routes aktiv. +- ⏳ **FB-Bridge-Mode** (LAN4-Native-Bridge-Hack) ausstehend — physisch: Kabel FB LAN4 → ap1 ether1, dann ether1 als WAN konfigurieren. Bis dahin: Double-NAT via bridge (funktioniert). +- **DNS-Entscheidung** (Technitium **und** externer BIND verworfen): RouterOS-DNS als Resolver, keine DHCP→DNS-Auto-Registrierung (soweit möglich). Infra-Hosts 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. +- Abh.: TP1 ✅. TP3-Abhängigkeit entfällt (WLAN läuft weiterhin über FB bis TP3). +- **Ermöglicht jetzt:** PVID-Fix in Omada-Profilen (MAIN→PVID10, INFRA→PVID20), untagNetworkIds-Bereinigung, DHCP-Reservierungen für NAS/macmini/pve auf neue VLAN-Subnetze migrieren. ### 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. @@ -140,8 +144,7 @@ Kontrolle: MikroMCP (MikroTik) live · ALLNET = Klickanleitungen · Omada → Co ## Reihenfolge / Abhängigkeiten 1. ~~**Jetzt:** TP1 (GE8) → TP2 (Omada Controller).~~ ✅ erledigt 2026-06-15. -2. **Jetzt: TP4 (Router-Cutover)** — vorgezogen, weil Profile-Fix + VLAN-Segmentierung darauf warten. - TP3-Voraussetzung entfällt (WLAN bleibt vorerst an FB hängen). -3. **Nach TP4:** Omada-Profile finalisieren (PVID 10/20, untagNetworkIds bereinigen) + IP-Migration NAS/macmini/pve. -4. **Dann:** TP5 (Firewall) → TP6 (QoS) → TP7 (mDNS) → TP3 (WLAN/CAPsMAN). Disruptiv, aber TP4 macht den Weg frei. +2. ~~**TP4 (Router-Cutover L3-Infra).**~~ ✅ erledigt 2026-06-15. FB-Bridge-Mode noch offen (physisch). +3. **Jetzt: Omada-PVID-Fix** — Omada Access-Profile korrigieren (PVID 10/20, untagNetworkIds bereinigen, sicher P3/P5/P6 zuerst), dann IP-Migration NAS/macmini/pve auf VLAN-Subnetze + DNS-Einträge updaten. +4. **Dann:** TP5 (Firewall/Deny-by-default) → TP6 (QoS/CAKE) → TP7 (mDNS) → TP3 (WLAN/CAPsMAN). 5. **Nachgelagert/Research-getrieben:** TP8 (Access), TP9 (HA), TP10 (VPN), TP11 (Monitoring), TP12 (IPv6), TP13 (Spaß).