Erkennung und Transportwege
OpenClaw hat zwei unterschiedliche Probleme, die oberflächlich ähnlich aussehen:- Remote-Steuerung für Operatoren: die macOS-Menüleisten-App steuert ein Gateway, das anderswo läuft.
- Node-Pairing: iOS/Android (und zukünftige Nodes) finden ein Gateway und koppeln sich sicher damit.
openclaw gateway) zu halten und Clients (mac app, iOS) als Verbraucher zu belassen.
Begriffe
- Gateway: ein einzelner langlebiger Gateway-Prozess, der den Status besitzt (Sitzungen, Pairing, Node-Registry) und Kanäle ausführt. Die meisten Setups verwenden eines pro Host; isolierte Multi-Gateway-Setups sind möglich.
- Gateway WS (Kontrollebene): der WebSocket-Endpunkt auf
127.0.0.1:18789standardmäßig; kann übergateway.bindan LAN/Tailnet gebunden werden. - Direkter WS-Transport: ein Gateway-WS-Endpunkt mit Zugriff aus LAN/Tailnet (ohne SSH).
- SSH-Transport (Fallback): Remote-Steuerung durch Weiterleitung von
127.0.0.1:18789über SSH. - Legacy TCP bridge (entfernt): älterer Node-Transport (siehe Bridge protocol); wird nicht mehr für die Erkennung angekündigt und ist nicht mehr Teil aktueller Builds.
Warum wir sowohl „direct“ als auch SSH beibehalten
- Direct WS bietet die beste UX im selben Netzwerk und innerhalb eines Tailnets:
- automatische Erkennung im LAN über Bonjour
- Pairing-Tokens + ACLs gehören dem Gateway
- kein Shell-Zugriff erforderlich; die Protokolloberfläche kann eng und prüfbar bleiben
- SSH bleibt der universelle Fallback:
- funktioniert überall dort, wo Sie SSH-Zugriff haben (auch über unabhängige Netzwerke hinweg)
- übersteht Multicast-/mDNS-Probleme
- erfordert keine neuen eingehenden Ports außer SSH
Erkennungseingaben (wie Clients erfahren, wo das Gateway ist)
1) Bonjour- / DNS-SD-Erkennung
Multicast-Bonjour ist Best Effort und überquert keine Netzwerke. OpenClaw kann denselben Gateway-Beacon auch über eine konfigurierte Wide-Area-DNS-SD-Domain durchsuchen, sodass die Erkennung Folgendes abdecken kann:local.im selben LAN- eine konfigurierte Unicast-DNS-SD-Domain für netzwerkübergreifende Erkennung
- Das Gateway kündigt seinen WS-Endpunkt über Bonjour an.
- Clients durchsuchen dies und zeigen eine Liste „Gateway auswählen“ an, dann speichern sie den ausgewählten Endpunkt.
Details zum Service-Beacon
- Service-Typen:
_openclaw-gw._tcp(Transport-Beacon des Gateways)
- TXT-Schlüssel (nicht geheim):
role=gatewaytransport=gatewaydisplayName=<freundlicher Name>(vom Operator konfigurierter Anzeigename)lanHost=<hostname>.localgatewayPort=18789(Gateway WS + HTTP)gatewayTls=1(nur wenn TLS aktiviert ist)gatewayTlsSha256=<sha256>(nur wenn TLS aktiviert ist und ein Fingerabdruck verfügbar ist)canvasPort=<port>(Port des Canvas-Hosts; derzeit derselbe wiegatewayPort, wenn der Canvas-Host aktiviert ist)tailnetDns=<magicdns>(optionaler Hinweis; automatisch erkannt, wenn Tailscale verfügbar ist)sshPort=<port>(nur im mDNS-full-Modus; Wide-Area-DNS-SD kann dies weglassen, in diesem Fall bleiben die SSH-Standardwerte bei22)cliPath=<path>(nur im mDNS-full-Modus; Wide-Area-DNS-SD schreibt dies weiterhin als Hinweis für die Remote-Installation)
- Bonjour-/mDNS-TXT-Records sind nicht authentifiziert. Clients müssen TXT-Werte nur als UX-Hinweise behandeln.
- Routing (Host/Port) sollte den aufgelösten Service-Endpunkt (SRV + A/AAAA) gegenüber per TXT bereitgestellten
lanHost,tailnetDnsodergatewayPortbevorzugen. - TLS-Pinning darf niemals zulassen, dass ein angekündigtes
gatewayTlsSha256einen zuvor gespeicherten Pin überschreibt. - iOS-/Android-Nodes sollten eine explizite Bestätigung „diesem Fingerabdruck vertrauen“ verlangen, bevor ein erstmaliger Pin gespeichert wird (Out-of-Band-Verifizierung), wann immer die gewählte Route sicher/TLS-basiert ist.
OPENCLAW_DISABLE_BONJOUR=1deaktiviert die Ankündigung.gateway.bindin~/.openclaw/openclaw.jsonsteuert den Bind-Modus des Gateways.OPENCLAW_SSH_PORTüberschreibt den angekündigten SSH-Port, wennsshPortausgegeben wird.OPENCLAW_TAILNET_DNSveröffentlicht einen HinweistailnetDns(MagicDNS).OPENCLAW_CLI_PATHüberschreibt den angekündigten CLI-Pfad.
2) Tailnet (netzwerkübergreifend)
Für Setups im Stil London/Wien hilft Bonjour nicht. Das empfohlene „direct“-Ziel ist:- Tailscale-MagicDNS-Name (bevorzugt) oder eine stabile Tailnet-IP.
tailnetDns als optionalen Hinweis für Clients (einschließlich Wide-Area-Beacons).
Die macOS-App bevorzugt jetzt MagicDNS-Namen gegenüber rohen Tailscale-IPs für die Gateway-Erkennung. Das verbessert die Zuverlässigkeit, wenn sich Tailnet-IPs ändern (zum Beispiel nach Node-Neustarts oder CGNAT-Neuzuweisung), weil MagicDNS-Namen automatisch zur aktuellen IP aufgelöst werden.
Für mobiles Node-Pairing lockern Erkennungshinweise die Transportsicherheit auf Tailnet-/öffentlichen Routen nicht:
- iOS/Android erfordern weiterhin einen sicheren Erstverbindungspfad für Tailnet/öffentliche Routen (
wss://oder Tailscale Serve/Funnel). - Eine erkannte rohe Tailnet-IP ist ein Routing-Hinweis, keine Erlaubnis zur Nutzung von unverschlüsseltem entferntem
ws://. - Direkte Verbindungen mit
ws://im privaten LAN bleiben unterstützt. - Wenn Sie den einfachsten Tailscale-Pfad für mobile Nodes möchten, verwenden Sie Tailscale Serve, sodass sowohl Erkennung als auch Setup-Code zum selben sicheren MagicDNS-Endpunkt auflösen.
3) Manuelles / SSH-Ziel
Wenn es keine direkte Route gibt (oder direct deaktiviert ist), können Clients sich immer über SSH verbinden, indem sie den Gateway-Port auf Loopback weiterleiten. Siehe Remote access.Transportauswahl (Client-Richtlinie)
Empfohlenes Client-Verhalten:- Wenn ein gekoppelter direkter Endpunkt konfiguriert und erreichbar ist, verwenden Sie ihn.
- Andernfalls, wenn die Erkennung ein Gateway unter
local.oder der konfigurierten Wide-Area-Domain findet, bieten Sie eine Ein-Klick-Option „Dieses Gateway verwenden“ an und speichern Sie es als direkten Endpunkt. - Andernfalls, wenn eine Tailnet-DNS/IP konfiguriert ist, versuchen Sie direct.
Für mobile Nodes auf Tailnet-/öffentlichen Routen bedeutet direct einen sicheren Endpunkt, nicht unverschlüsseltes entferntes
ws://. - Andernfalls auf SSH zurückfallen.
Pairing + Auth (direkter Transport)
Das Gateway ist die Quelle der Wahrheit für die Aufnahme von Nodes/Clients.- Pairing-Anfragen werden im Gateway erstellt/genehmigt/abgelehnt (siehe Gateway pairing).
- Das Gateway erzwingt:
- Auth (Token / Schlüsselpaar)
- Scopes/ACLs (das Gateway ist kein roher Proxy zu jeder Methode)
- Ratenbegrenzungen
Verantwortlichkeiten nach Komponente
- Gateway: kündigt Erkennungs-Beacons an, besitzt Pairing-Entscheidungen und hostet den WS-Endpunkt.
- macOS-App: hilft beim Auswählen eines Gateways, zeigt Pairing-Aufforderungen an und verwendet SSH nur als Fallback.
- iOS-/Android-Nodes: durchsuchen Bonjour als Komfortfunktion und verbinden sich mit dem gekoppelten Gateway WS.