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

✍️ OpenClawRadar📅 Veröffentlicht: 9. März 2026🔗 Source
Reverse-Engineering des UniFi-Inform-Protokolls für Multi-Tenant-Routing
Ad

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).

Ad

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

Ad

👀 Siehe auch