Reverse-Engineering des UniFi-Inform-Protokolls für Multi-Tenant-Routing

Struktur des UniFi-Inform-Protokolls
Jedes UniFi-Gerät (Access Points, Switches, Gateways) meldet sich alle 10 Sekunden über HTTP POST an Port 8080 bei seinem Controller. Dies umfasst Gerätestatistiken, Konfigurationssynchronisation, Firmware-Versionen und Client-Zählungen. Während die Nutzdaten AES-128-CBC verschlüsselt sind, enthält der Header Klartext zur Geräteidentifikation.
Details zum Paket-Header
Die ersten 40 Bytes jedes Inform-Pakets sind unverschlüsselt:
Offset Größe Feld ────── ───── ────────────────────────── 0 4B Magic: "TNBU" (0x544E4255) 4 4B Paketversion (aktuell 0) 8 6B MAC-Adresse des Geräts 14 2B Flags (verschlüsselt, komprimiert usw.) 16 2B AES-IV-Länge 18 16B AES-IV 34 4B Datenversion 38 4B Nutzdatenlänge 42+ var Verschlüsselte Nutzdaten (AES-128-CBC)
Die MAC-Adresse bei Byte-Offset 8 ist vollständig unverschlüsselt. "TNBU" ist "UBNT" rückwärts (Ubiquitis Tickersymbol und Standard-SSH-Zugangsdaten).
MAC-Extraktion und Routing
Die Extraktion der MAC-Adresse erfordert minimalen Code:
header := make([]byte, 40)
if _, err := io.ReadFull(conn, header); err != nil {
return err
}
if string(header[0:4]) != "TNBU" {
return fmt.Errorf("kein Inform-Paket")
}
mac := fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
header[8], header[9], header[10],
header[11], header[12], header[13])Mit der MAC-Adresse wird das Routing einfach: Eine Tabelle mit Zuordnungen von MAC-Adressen zu Mandanten pflegen, dann das gesamte Paket (Header und verschlüsselte Nutzdaten unverändert) an das richtige Backend weiterleiten. Der Proxy kann in etwa 200 Zeilen Go-Code mit einer In-Memory-MAC-zu-Mandant-Lookup-Tabelle implementiert werden.
Übersicht der Controller-Ports
Weitere Controller-Ports umfassen:
- 8443 TCP/HTTPS: Web-UI und API
- 3478 UDP: STUN
- 6789 TCP: Geschwindigkeitstest (intern)
- 27117 TCP: MongoDB (intern)
- 10001 UDP: L2-Erkennung (nur lokal)
Das MAC-basierte Routing dient hauptsächlich als Fallback für Randfälle wie Geräte, die noch nicht neu konfiguriert wurden, oder zurückgesetzte Geräte, die erneut übernommen werden. Nach der Übernahme können Geräte mithilfe von Standard-Host-Header-Routing auf mandantenspezifische Subdomains verweisen.
📖 Read the full source: HN AI Agents
👀 Siehe auch

Claude Academy: Ein kostenloses Coding-Bootcamp, das in Claude Desktop läuft
Ein Entwickler hat Claude Academy aufgebaut, einen kostenlosen Programmier-Bootcamp, der vollständig innerhalb des Code-Tabs von Claude Desktop läuft. Das System verwendet drei Befehle, um 64 strukturierte Lektionen zu den Grundlagen der Webentwicklung zu vermitteln, mit Fortschrittsverfolgung und dem Bauen echter Projekte.

Open-Source-CLI-Tool sdf nutzt Claude zur Verwaltung von gestapelten GitHub-PRs
sdf ist ein kostenloses, MIT-lizenziertes CLI-Tool, das gestapelte Pull-Request-Workflows mit git und gh automatisiert, wobei Claude CLI komplexe Aufgaben wie Diff-Analyse und Konfliktlösung übernimmt.

Vereinfachung der Automatisierung mit OpenClaw-Wrappern
OpenClaw Wrappers bieten eine effiziente Möglichkeit, AI-Coding-Agenten zu verwalten. Entdecken Sie, wie diese Tools sich mühelos in bestehende Frameworks integrieren lassen, einschließlich spezifischer Beispielbefehle und Feedback aus der Community.

AgentLens: Beobachtungstool für Multi-Agenten-KI-Workflows
AgentLens bietet einheitliche Verfolgung über Ollama, vLLM, Anthropic und OpenAI mit Kostenverfolgung, einen MCP-Server zum Abfragen von Statistiken aus Claude Code und eine CLI für Inline-Prüfungen. Es ist selbst gehostet und läuft lokal über Docker.