Hardware-Tabelle + TP1: ALLNET Core-Switch als außer Betrieb markiert (2026-08-08, User-Bestätigung) — durch crs326-core (L3-Router + Core-Switch) physisch abgelöst. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
11 KiB
11 KiB
BF-Netzwerk — Projekt-Kontext (auto-read)
Standort BF: VLAN-segmentiertes Heimnetz auf MikroTik/RouterOS. Ziel: CAKE/QoS gegen Bufferbloat, DNS/DHCP-Ablösung, WLAN via Standalone-APs (kein CAPsMAN), Firewall Least-Privilege, Multi-Site VPN.
Für jede TP-Session: zuerst docs/teilprojekte.md lesen — enthält kanonischen Stand, Scope, Abhängigkeiten
und Reihenfolge aller Teilprojekte. Kein anderer Kontext nötig.
VLAN-Modell (kanonisch)
| VLAN | Name | Subnetz | Zweck |
|---|---|---|---|
| 10 | MAIN | 10.40.10.0/24 | Trusted (Handy/Laptop) |
| 20 | INFRA | 10.40.20.0/24 | NAS/VMs/Docker/HA |
| 30 | IOT | 10.40.30.0/24 | Smart-Home |
| 40 | MEDIA | 10.40.40.0/24 | Sonos/AppleTV/TV/Cast |
| 50 | UNTRUSTED | 10.40.50.0/24 | Konsole/Low-Trust |
| 90 | GUEST | 10.40.90.0/24 | nur Internet |
| 99 | MGMT | 10.40.99.0/24 | Switch/AP/Hypervisor-Mgmt |
| 100 | WAN | (Arris-Transfer) | zum Arris-Kabelmodem (Liwest, Public-IP) |
GW je VLAN = .1 (crs326-core L3) · Mgmt VLAN99: core .99.1, branch .99.2, ap1 .99.11, ap2 .99.12
Hardware & Zugang
| Gerät | IP | Zugang |
|---|---|---|
| — | ❌ außer Betrieb (2026-08-08) — durch crs326-core (L3-Router + Core-Switch, Technik UG) ersetzt; physisch abgelöst. (Telnet-Runner switch/ = nur noch historisch.) |
|
| — | ❌ abgebaut 2026-07-23 (TP15 Branch-Tausch) — durch crs326-branch in Technik OG ersetzt, physisch entfernt |
|
| crs326-branch (CRS326, Technik OG) | 10.40.99.2 (VLAN99; temp VLAN10 .10.2) · Bootstrap Rev4 2026-08-08 |
RouterOS 7.19.5 · admin/~/.secrets (CRS326_BRANCH_*) · REST http://10.40.99.2/rest · MikroMCP routers.yaml (live nach MCP-Neustart) · TP15 ✅: ersetzt sw2 (L2-Switch), volle Portbelegung (ether1 Uplink-Trunk, 2/8 NAS, 3 Drucker, 4 Dock, 5/6 Sonos, 7 macmini, 24 ap2) · sw-id RGZJ-UK0T, MAC 04:F4:1C:B4:15:58 |
| crs326-core (CRS326, Technik UG) | 10.40.99.1 (VLAN99-SVI = L3-GW; same-subnet-Fallback 10.40.10.1) · Identity crs326-core |
RouterOS 7.19.5 · admin/~/.secrets (CRS326_CORE_*) · MikroMCP routerId crs326-core (nach MCP-Neustart) · TP15/TP21.1 ✅ 2026-08-08: PRODUKTIVER L3-Router (ersetzt ap1) — Routing/DHCP (7 Server + 54 Leases)/DNS (plain 1.1.1.1, DoH-Cloudflare-TODO)/NAT/WG-Hub (fm+dw live); WAN vlan100=Liwest 90.146.33.177 · sw-id 4W04-URHT, MAC 04:F4:1C:B4:17:76 |
| hAP ax² #1 (ap1) | 10.40.99.11 (VLAN99) · Identity ap1 |
RouterOS 7.23.2 · admin/~/.secrets (ROUTER_AP1_*) · REST http://10.40.99.11/rest · MikroMCP ap1 (live nach MCP-Neustart) · TP3-Rebuild ✅ 2026-08-08: reiner Standalone-AP, KEIN CAPsMAN — Uplink ether1 (PoE-Port, poe-out=off) an crs326-core ether15; 6 SSIDs dirtyvader-main/-infra/-iot/-media/-untrusted/-guest, ch36/ch1; jede SSID mit datapath (TP3.1-Leck gefixt) · MAC D0:EA:11:4D:40:E0 · Config-Referenz routeros/.secrets/ap1-prov-base.rsc |
| hAP ax² #2 (ap2) | 10.40.99.12 (VLAN99) · Identity ap2 |
RouterOS 7.23.2 · admin/~/.secrets (ROUTER_AP2_*) · REST http://10.40.99.12/rest · MikroMCP ap2 · TP3-Rebuild ✅ 2026-08-08: reiner Standalone-AP — Uplink ether1 (PoE) an crs326-branch ether24; identisch zu ap1, ch149/ch11 · MAC D0:EA:11:4D:40:3A · Config routeros/.secrets/ap2-prov-base.rsc |
| 🔑 Einheitliches Admin-PW (2026-08-08) | alle 4 MikroTik (core/branch/ap1/ap2) | user admin, gleiches PW (~/.secrets/credentials.env → ROUTER_*_PASS/CRS326_*_PASS; „Überlebensversicherung", User-Vorgabe). Werks-Defaults ap1/ap2 damit obsolet. |
| NAS (nas-bf, DS923) | 10.40.20.10 | SSH adm.christoph@10.40.20.10 (kein PW nötig) · Docker (Portainer endpointId=14) |
| platform-pg (LXC 105, pve) | 10.40.20.20 | SSH via pve (pct exec 105 --) · TP20 ✅ 2026-07-16: PG16, DB nautobot, Creds postgres/.secrets |
| Nautobot (Portainer-Stack, NAS) | 10.40.20.30 | Portainer ep14, Stack Id 203 · TP21 ✅ 2026-07-16: ghcr.io/nautobot/nautobot:3.1.7, DB=platform-pg, Creds in docs/nas-vlan20/stacks/210-nautobot.yml (gitignored) — Golden-Config-App/Device-Adoption noch offen |
| — | ❌ entfernt 2026-07-16 (User hat den Container gelöscht — overkill für 1 Switch auf der Abschussliste, s. TP2.1/TP15) | |
| — | ❌ entfernt 2026-07-16 — mit dem Controller gelöscht. MCP-Eintrag in Claude-Settings/~/.claude.json ist verwaist (Server wird nie mehr connecten), Aufräumen dort noch offen |
|
| pve-mcp | 10.40.20.173 | StreamableHTTP http://10.40.20.173:3000/ (Root-Pfad, NICHT /sse) · NAS-Stack ep14 (=nas-bf .20.10, NICHT LXC .126!) id 202 (vlan20-only, TP14.1 2026-07-10) · mcp-pve v0.6.1 (Upgrade 2026-07-10: Single-Session-Bug 0.4.8 „Server already initialized" gefixt, TP14.2a) · ~/.claude.json ✓ |
| Proxmox (pve) | 10.40.20.100 | ssh root@10.40.20.100 (SSH-Key ✓) · TP14 2026-07-13: Host-Mgmt VLAN1→VLAN20 (vmbr0.20 + Default-GW-Flip); .41.100 bleibt interim ohne Route |
| Docker-LXC (auf pve) | 10.40.20.126 | Portainer CE 2.40.0 (https://10.40.20.126:9443) · TP14.2 2026-07-10: LXC 400 net0 tag=20/.20.126 (iface heißt jetzt veth20, NICHT eth0); Docker-Netz vlan20=ipvlan parent veth20; adguard_bf1 .20.16, adguard_fm2 .20.17 |
| Mac mini | 10.40.41.167 | ssh macmini |
| Arris-Kabelmodem | (Bridge-Mode, keine Mgmt-IP im BF-LAN) | Liwest-Edge · speist crs326-core vlan100 (VLAN100-Transfer, WAN-IP 90.146.33.177) — seit Core-Cutover 2026-08-08, davor via sw1 gi16 → ap1 · FritzBox 6660 seit 2026-07-01 komplett ausgebaut (Liwest-Tausch, kein Zurück); Telefonie nicht weitergeführt |
Tooling
- MikroTik (core/branch/ap1/ap2): MikroMCP-Server live →
mcp__mikromcp__*-Tools (routerIdcrs326-core/crs326-branch/ap1/ap2). Reads immer safe; Writes mitdryRun:truepreviewen, dannapply_plan. Passwort setzen viamanage_user set-password(/user set*ist per Deny-Policy blockiert).bridge/vlan/setnur auf[find … and !dynamic]. - 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/<datei>.cliKlickanleitungen inswitch/ui-guides/für manuelle Schritte. Omada-Switch (sw2): ❌ abgebaut 2026-07-23 (TP15, durchcrs326-branchersetzt). Controller + omada-mcp komplett gelöscht — Omada-Ecosystem spielt keine Rolle mehr (nur noch verwaiste MCP-Registrierung in~/.claude.json, Aufräumen offen).- Docker-Management: Portainer API
https://10.40.20.126:9443, Key inmcp/portainer/.env. Ablösung durch Komodo (native MCP) geplant.
Kritische Gotchas
- ALLNET: nur 1 Telnet-VTY — stale Sessions blockieren ~15 min. Sauber ausloggen (
exit exit), nie hammern. savenicht 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.
- VLAN20-Docker-Hosts: Host-DNS nach dem Umzug prüfen (2026-07-10, TP14.2a): NAS + pve-LXC zeigten
/etc/resolv.confnoch auf totes.41.254→docker pullghcr scheitert (EAI_AGAIN, aber Egress ok!). Fix =.20.1: LXCpct set 400 --nameserver 10.40.20.1; Synology-Falle: DSM-„Allgemein"-DNS ≠ wasdockerdliest — Interface zieht DNS per DHCP → Fix an der Netzwerkschnittstelle „DNS manuell". Laufende Container frieren den127.0.0.11-Upstream zum Erstellzeitpunkt ein (Recreate nötig). Merkregel:docker-pull-hängt+dns.lookup EAI_AGAINaberTCP zu ghcr-IP:443 ok= toter Resolver, nicht Egress. - ALLNET VLAN-DB final (TP1 ✅): 40=MEDIA, 50=UNTRUSTED; GE1/GE2/GE8 alle als Trunk mit 10/20/30/40/50/90/99/100.
- ap2 hängt an
crs326-branch ether24(Trunk, native VLAN1 + tagged 10-99); branch-Uplinkether1→ sw1 GE8. (Alt „Omada Port 2 = ap2" obsolet — sw2 abgebaut.) - Mesh = NEIN (beide APs haben wired Trunk-Uplink → Loop-Risiko).
- Beide APs = Standalone mit
vlan-filtering=yes, KEIN CAPsMAN (TP3-Rebuild ✅ 2026-08-08):datapath.vlan-idlandet nur mit vlan-filtering auf der Leitung. Nur Master-Radios wifi1/wifi2 sind Bridge-Ports (Slave-VAPs forwarden darüber) → wifi1/wifi2 müssen tagged-Member je Client-VLAN sein. Uplink=ether1(PoE), VLAN1 untagged=Fallback. Jede SSID-config brauchtdatapath(sonst egress ungetaggt in VLAN1 = das alte TP3.1-Leck). Falle bei Neu-Provisionierung: Werks-Inline-Overrides auf wifi1/wifi2 (configuration.ssid=MikroTik-*,security.*) überschreiben das verlinkte Profil → nach/importmit!configuration.ssid !security.*leeren. Configsrouteros/.secrets/ap{1,2}-prov-base.rsc. - 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).
- L3-Router =
crs326-core(TP21.1 ✅ 2026-08-08, ersetzt ap1). Bridge vlan-filtering=yes; VLAN-SVIs.1je VLAN mit DHCP (7 Server / 54 Leases); DNS aktuell plain1.1.1.1(DoH-Cloudflare-Gateway-TODO, core hat kein CA). ap1/ap2 sind NUR noch APs — kein DHCP/DNS/NAT/Routing/WG dort. (Die frühere „TP4: ap1 ist L3-Router"-Zeile ist überholt.) - ✅✅ Edge-Cutover (2026-07-01; Router-Umzug 2026-08-08): FritzBox ausgebaut, Arris im Bridge-Mode. Liwest hat die FB6660 dauerhaft gegen ein Arris getauscht (physisch weg). WAN terminiert auf
crs326-core vlan100(VLAN100-Transfer), core zieht die öffentliche Liwest-IP90.146.33.177→ kein Double-NAT. core = Public-Edge + WG-Hub (fm/dw live), NICHT mehr ap1. Telefonie nicht weitergeführt. Runbookrouteros/wan-cutover-runbook.md(ap1-Teile historisch). - hAP
device-mode=home(ap1/ap2): scheduler + fetch blockiert (not allowed by device-mode) → AP-Provisionierung idempotent ohne Scheduler.[/ping]gibt nil in 7.23. REST je APhttp://10.40.99.11|12/rest(Creds =ROUTER_AP{1,2}in~/.claude.json). Der L3-Router crs326-core ist KEIN device-mode=home → dort gehen scheduler/fetch (z.B. DDNS-Updater). - Erstzugriff Werks-hAP am CRS-Fabric: Uplink
ether1= Werks-WAN →192.168.88.1(LAN) darüber NICHT erreichbar. Weg: Gerät auf LAN-Port (ether2) patchen ODER Core-Temp-Pfad192.168.88.2/24auf core-bridge+ srcnat masq192.168.88.0/24, dann scp+/import(danach Temp-Pfad + stale ARP.88.1entfernen). Winbox-Neighbors zeigt die APs NICHT (MNDP pro-VLAN, Mgmt auf vlan99) — kein L2-Fehler. - P750W (Brother, VLAN30) läuft auf
dirtyvader-iot(User-bestätigt 2026-08-08) — kein Access-List-Pin nötig; die alte „nur am co-located L3-GW-AP erreichbar"-Logik ist mit L3-GW auf dem Core hinfällig. Merkregel bleibt: DHCP-geht-aber-Ping-nicht = ARP/Power-Save, NICHT Routing/L2/MTU/Switch. Coverage-Kanten/Terrasse grenzwertig (−76..−89 dBm); TX am AT-Max (18/15 dBm); echter Fix = Platzierung. SSoTdocs/wifi-p750w-coverage-and-map.md.