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

Sandra: Open-Source persistenter Graph-Speicher MCP für Claude
Sandra ist ein Graph- + Vektor-Speicher-Backend mit einem nativen MCP-Server, der Claude über Sitzungen hinweg persistenten strukturierten Speicher bietet und exakte, unscharfe sowie semantische Suche unterstützt.

Off-Grid-Mobile-App fügt On-Device-KI-Toolnutzung mit 3-facher Geschwindigkeitssteigerung hinzu
Die Off-Grid-Mobile-App ermöglicht es KI-Modellen jetzt, Werkzeuge wie Websuche, Taschenrechner, Datum/Uhrzeit und Geräteinformationen komplett offline zu nutzen, mit konfigurierbaren KV-Cache-Optionen, die auf Smartphones bis zu 30 Tokens/Sekunde liefern.

SOULS für KI-Agenten: Eine gemeinschaftsgetriebene Persönlichkeitsbibliothek
Ein Reddit-Nutzer hat ein Open-Source-Repository mit sorgfältig erstellten Persönlichkeitsdateien („Seelen“) für KI-Coding-Agenten erstellt. Das Repository enthält derzeit Jarvis, Gojo, Eren Yeager, René Descartes und Rapper und ruft zur Mitarbeit aus der Community auf.
ClaudeAI Brainstorming-Modus erhält visuellen Begleiter für Mockups und UI-Freigaben
Ein Benutzer entdeckt eine neue Funktion 'Visueller Begleiter' im Brainstorming-Modus von ClaudeAI, die Mockups auf einem lokalen Webserver bereitstellt und so ein Hin-und-Her bei UI-Anpassungen vor dem Bauen ermöglicht.