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

Mind Protocol: Open-Source-System verleiht Claude persistenten Speicher und Echtzeit-Biometrie-Integration
Mind Protocol ist ein Open-Source-System, in dem Claude kontinuierlich als autonomer Begleiter läuft, mit dauerhaftem Speicher über alle Sitzungen hinweg und Echtzeit-Daten von Garmin-Uhren, die in jedes Gespräch eingespielt werden. Die Architektur nutzt Claude Code als Kern-Engine mit einem Orchestrator, der parallele Sitzungen startet und den Lebenszyklus verwaltet.

Tilde.run: Eine Agenten-Sandbox mit einem transaktionalen, versionierten Dateisystem
Tilde.run stellt isolierte, reversible Sandboxes für KI-Agenten bereit, mit einem versionierten Dateisystem, das GitHub, S3 und Google Drive einbindet, sowie standardmäßiger Netzwerkisolation.

Zora: Offline-First KI-Agent mit Default-Deny-Sicherheit und lokalem Speicher
Zora ist ein KI-Agent, der standardmäßig vollständig offline über Ollama läuft, mit null Zugriffsberechtigungen startet und eine persistente Erinnerung über Sitzungen hinweg beibehält. Er adressiert Sicherheits- und Kostenprobleme, die bei anderen Agenten beobachtet wurden.

ClawCodex /Beratungsmodus: Billigen Arbeiter mit teurem Prüfer kombinieren, um Kosten zu senken ohne Qualitätsverlust
Der Open-Source-Python-Coding-Agent ClawCodex bietet einen /advisor-Modus, der ein günstiges Worker-Modell (z. B. Haiku) mit einem teuren Reviewer (z. B. Opus) an Entscheidungspunkten kombiniert und so die Kosten mehrfach senkt, ohne die Architekturqualität zu beeinträchtigen.