Gateway
Detectie en transporten
OpenClaw heeft twee gerelateerde maar afzonderlijke detectievraagstukken:
- Externe bediening door de beheerder: de macOS-menubalkapp die een Gateway bestuurt die elders draait.
- Node-koppeling: iOS/Android (en toekomstige Nodes) die een Gateway zoeken en veilig koppelen.
Alle netwerkdetectie en -advertenties bevinden zich in de Node Gateway
(openclaw gateway); clients (Mac-app, iOS) zijn uitsluitend afnemers.
Termen
- Gateway: één langlopend proces dat de status beheert (sessies, koppelingen, Node-register) en kanalen uitvoert. De meeste configuraties gebruiken er één per host; geïsoleerde configuraties met meerdere Gateways zijn mogelijk.
- Gateway-WS (besturingslaag): het WebSocket-eindpunt, standaard op
127.0.0.1:18789; bind dit viagateway.bindaan het LAN/de tailnet. - Rechtstreeks WS-transport: een Gateway-WS-eindpunt dat toegankelijk is vanaf het LAN/de tailnet (zonder SSH).
- SSH-transport (terugvaloptie): externe bediening door
127.0.0.1:18789door te sturen via SSH. - Verouderde TCP-bridge (verwijderd): ouder Node-transport (zie Bridge-protocol); wordt niet meer geadverteerd voor detectie en maakt geen deel meer uit van huidige builds.
Protocoldetails: Gateway-protocol, Bridge-protocol (verouderd).
Waarom zowel rechtstreeks transport als SSH bestaan
- Rechtstreeks WS biedt de beste gebruikerservaring op hetzelfde netwerk en binnen een tailnet: automatische LAN-detectie via Bonjour, koppelingstokens en ACL's die door de Gateway worden beheerd, en geen vereiste shelltoegang.
- SSH is de universele terugvaloptie: werkt overal waar u SSH-toegang hebt, zelfs tussen niet-gerelateerde netwerken, blijft werken bij problemen met multicast/mDNS en vereist naast SSH geen nieuwe inkomende poort.
Detectie-invoer
1) Bonjour / DNS-SD
Multicast-Bonjour werkt op basis van optimale inspanning en overschrijdt geen netwerkgrenzen. OpenClaw ondersteunt ook
het zoeken naar hetzelfde Gateway-baken via een geconfigureerd domein voor wide-area DNS-SD,
zodat detectie zowel local. op hetzelfde LAN als een geconfigureerd
unicast-DNS-SD-domein voor detectie tussen netwerken kan omvatten.
De Gateway adverteert zijn WS-eindpunt via Bonjour wanneer de meegeleverde
bonjour-Plugin is ingeschakeld; clients zoeken en tonen een lijst om een Gateway te kiezen,
en slaan vervolgens het gekozen eindpunt op.
Probleemoplossing en details over het baken: Bonjour.
Details van het servicebaken
-
Servicetype:
_openclaw-gw._tcp(transportbaken van de Gateway). -
TXT-sleutels (niet-geheim):
Sleutel Opmerkingen role=gatewayAltijd aanwezig. transport=gatewayAltijd aanwezig. displayName=<name>Door de beheerder geconfigureerde weergavenaam. lanHost=<hostname>.localAlleen voor de LAN-mDNS-adverteerder; wordt niet door wide-area DNS-SD geschreven. gatewayPort=18789Poort voor Gateway-WS en HTTP. gatewayTls=1Alleen wanneer TLS is ingeschakeld. gatewayTlsSha256=<sha256>Alleen wanneer TLS is ingeschakeld en een vingerafdruk beschikbaar is. tailnetDns=<magicdns>Optionele aanwijzing; wordt automatisch gedetecteerd wanneer Tailscale beschikbaar is. sshPort=<port>Alleen aanwezig wanneer discovery.mdns.mode="full"; weggelaten (SSH gebruikt standaard22) in de standaardmodus"minimal", zowel in de LAN-adverteerder als in wide-area DNS-SD.cliPath=<path>Dezelfde voorwaarde discovery.mdns.mode="full"als voorsshPort; een aanwijzing voor installaties op afstand naar het CLI-pad.In het detectiecontract van de Plugin is een TXT-sleutel
canvasPortgedefinieerd voor een toekomstige hostpoort voor canvas, maar geen huidig codepad stelt een waarde in, waardoor deze momenteel nooit wordt uitgezonden.
Beveiligingsopmerkingen:
- Bonjour/mDNS-TXT-records zijn niet-geverifieerd. Clients moeten TXT-waarden uitsluitend als aanwijzingen voor de gebruikerservaring behandelen.
- Voor routering (host/poort) moet de voorkeur uitgaan naar het opgeloste service-eindpunt
(SRV + A/AAAA) boven via TXT verstrekte waarden voor
lanHost,tailnetDnsofgatewayPort. - Bij TLS-pinning mag een geadverteerde
gatewayTlsSha256nooit een eerder opgeslagen pin overschrijven. - iOS/Android-Nodes moeten een expliciete bevestiging "vertrouw deze vingerafdruk" vereisen voordat een nieuwe pin wordt opgeslagen (verificatie buiten het communicatiekanaal), wanneer de gekozen route beveiligd of op TLS gebaseerd is.
Inschakelen, uitschakelen en overschrijven:
openclaw plugins enable bonjourschakelt LAN-multicastadvertenties in.discovery.mdns.modeinopenclaw.jsonregelt mDNS-uitzendingen:"minimal"(standaard),"full"(voegtcliPath/sshPorttoe aan zowel het LAN-baken als elke wide-area DNS-SD-zone), of"off"(schakelt mDNS uit).OPENCLAW_DISABLE_BONJOUR=1schakelt advertenties geforceerd uit;discovery.mdns.mode="off"schakelt deze onafhankelijk uit.OPENCLAW_DISABLE_BONJOUR=0is een expliciete inschakeling die het automatisch uitschakelen van de Plugin binnen een gedetecteerde container (Docker, containerd, Kubernetes, LXC) overschrijft; dit overschrijftdiscovery.mdns.mode="off"niet. De meegeleverdebonjour-Plugin start automatisch op macOS-hosts (enabledByDefaultOnPlatforms: ["darwin"]) en schakelt zichzelf automatisch uit binnen gedetecteerde containers; Linux, Windows en andere gecontaineriseerde implementaties moeten de Plugin expliciet inschakelen metplugins enable bonjour.gateway.bindin~/.openclaw/openclaw.jsonregelt de bindmodus van de Gateway.OPENCLAW_SSH_PORToverschrijft de geadverteerde SSH-poort (wordt alleen van kracht wanneerdiscovery.mdns.mode="full").OPENCLAW_TAILNET_DNSpubliceert eentailnetDns-aanwijzing (MagicDNS).OPENCLAW_CLI_PATHoverschrijft het geadverteerde CLI-pad.
2) Tailnet (tussen netwerken)
Voor Gateways op verschillende fysieke netwerken helpt Bonjour niet. Het aanbevolen rechtstreekse doel is een Tailscale MagicDNS-naam (voorkeur) of een stabiel tailnet-IP-adres.
Als de Gateway detecteert dat deze onder Tailscale draait, publiceert deze
tailnetDns als optionele aanwijzing voor clients (ook in wide-area-bakens).
De macOS-app geeft voor Gateway-detectie de voorkeur aan MagicDNS-namen boven onbewerkte Tailscale-IP-adressen,
wat betrouwbaar blijft wanneer tailnet-IP-adressen veranderen (herstarts van Nodes,
CGNAT-hertoewijzing), omdat MagicDNS automatisch naar het huidige IP-adres verwijst.
Voor koppeling van mobiele Nodes versoepelen detectieaanwijzingen de transportbeveiliging op tailnet-/openbare routes nooit:
- iOS/Android vereisen nog steeds een beveiligd eerste verbindingspad via tailnet/openbaar netwerk
(
wss://of Tailscale Serve/Funnel). - Een gedetecteerd onbewerkt tailnet-IP-adres is een routeringsaanwijzing, geen toestemming om
onbeveiligd extern
ws://te gebruiken. - Rechtstreeks verbinden via
ws://op een privé-LAN blijft ondersteund. - Gebruik voor de eenvoudigste Tailscale-route op mobiele Nodes Tailscale Serve, zodat detectie en configuratie beide naar hetzelfde beveiligde MagicDNS-eindpunt verwijzen.
3) Handmatig / SSH-doel
Wanneer er geen rechtstreekse route is (of rechtstreeks transport is uitgeschakeld), kunnen clients altijd verbinding maken via SSH door de local loopback-poort van de Gateway door te sturen. Zie Externe toegang.
Transportselectie (clientbeleid)
- Als een gekoppeld rechtstreeks eindpunt is geconfigureerd en bereikbaar is, gebruikt u dit.
- Anders, als detectie een Gateway vindt op
local.of het geconfigureerde wide-area- domein, biedt u met één tik de keuze "Gebruik deze Gateway" aan en slaat u deze op als het rechtstreekse eindpunt. - Anders, als een tailnet-DNS/IP is geconfigureerd, probeert u rechtstreeks verbinding te maken. Voor mobiele Nodes op
tailnet-/openbare routes betekent rechtstreeks een beveiligd eindpunt, niet onbeveiligd
extern
ws://. - Anders valt u terug op SSH.
Koppeling en verificatie (rechtstreeks transport)
De Gateway is de bron van waarheid voor toelating van Nodes/clients:
- Koppelingsverzoeken worden in de Gateway aangemaakt/goedgekeurd/afgewezen (zie Gateway-koppeling).
- De Gateway dwingt verificatie (token/sleutelpaar), bereiken/ACL's (het is geen onbewerkte proxy naar elke methode) en snelheidslimieten af.
Verantwoordelijkheden per onderdeel
- Gateway: adverteert detectiebakens, beheert koppelingsbeslissingen en host het WS-eindpunt.
- macOS-app: helpt u een Gateway te kiezen, toont koppelingsverzoeken en gebruikt SSH uitsluitend als terugvaloptie.
- iOS/Android-Nodes: zoeken voor het gemak via Bonjour en maken verbinding met de gekoppelde Gateway-WS.