Aniqlash va transportlar
OpenClaw’da tashqi tomondan o‘xshash ko‘rinsa ham, aslida ikki xil muammo mavjud:- Operatorning masofaviy boshqaruvi: macOS menyu paneli ilovasi boshqa joyda ishlayotgan gateway’ni boshqaradi.
- Tugunni juftlash: iOS/Android (va kelajakdagi tugunlar) gateway’ni topib, xavfsiz juftlashadi.
openclaw gateway) ichida saqlash va mijozlarni (mac ilovasi, iOS) faqat iste’molchi sifatida qoldirish.
Atamalar
- Gateway: a single long-running gateway process that owns state (sessions, pairing, node registry) and runs channels. Most setups use one per host; isolated multi-gateway setups are possible.
- Gateway WS (control plane): odatda
127.0.0.1:18789dagi WebSocket endpoint;gateway.bindorqali LAN/tailnet’ga bog‘lanishi mumkin. - Direct WS transport: LAN/tailnet’ga ochiq Gateway WS endpoint (SSH’siz).
- SSH transport (fallback):
127.0.0.1:18789ni SSH orqali forward qilib masofadan boshqarish. - Legacy TCP bridge (deprecated/removed): eski tugun transporti (qarang: Bridge protocol); endi aniqlash uchun e’lon qilinmaydi.
Nega “direct” va SSH ikkalasini ham saqlaymiz
- Direct WS bir xil tarmoqda va tailnet ichida eng yaxshi UX’ni beradi:
- LAN’da Bonjour orqali avtomatik aniqlash
- juftlash tokenlari + ACL’lar gateway tomonidan boshqariladi
- shell kirishi talab qilinmaydi; protokol yuzasi ixcham va audit qilinadigan bo‘lib qoladi
- SSH esa universal fallback bo‘lib qoladi:
- SSH mavjud bo‘lgan istalgan joyda ishlaydi (hatto aloqasiz tarmoqlar orasida ham)
- multicast/mDNS muammolarida ham ishlaydi
- SSH’dan tashqari yangi kiruvchi portlar talab qilmaydi
Aniqlash manbalari (mijozlar gateway’ni qanday topadi)
1. Bonjour / mDNS (faqat LAN)
Bonjour is best-effort and does not cross networks. It is only used for “same LAN” convenience. Maqsad yo‘nalishi:- Gateway o‘zining WS endpoint’ini Bonjour orqali e’lon qiladi.
- Mijozlar ko‘rib chiqadi va “gateway tanlash” ro‘yxatini ko‘rsatadi, so‘ng tanlangan endpoint’ni saqlaydi.
Service beacon tafsilotlari
- Service turlari:
_openclaw-gw._tcp(gateway transport beacon)
- TXT kalitlari (maxfiy emas):
role=gatewaylanHost=<hostname>.localsshPort=22(yoki e’lon qilingan boshqa port)gatewayPort=18789(Gateway WS + HTTP)gatewayTls=1(faqat TLS yoqilganda)gatewayTlsSha256=<sha256>(faqat TLS yoqilganda va fingerprint mavjud bo‘lsa)canvasPort=<port>(canvas host porti; hozircha canvas host yoqilgandagatewayPortbilan bir xil)cliPath=<path>(ixtiyoriy; ishga tushiriladiganopenclawentrypoint yoki binary’ning to‘liq yo‘li)tailnetDns=<magicdns>(ixtiyoriy ishora; Tailscale mavjud bo‘lsa avtomatik aniqlanadi)
- Bonjour/mDNS TXT yozuvlari autentifikatsiyalanmagan. Mijozlar TXT qiymatlarini faqat UX ishoralari sifatida qabul qilishi kerak.
- Marshrutlash (host/port) TXT’dagi
lanHost,tailnetDnsyokigatewayPorto‘rniga aniqlangan service endpoint (SRV + A/AAAA) ni afzal ko‘rishi kerak. - TLS pinlash avval saqlangan pin’ni reklama qilingan
gatewayTlsSha256bilan hech qachon almashtirishga yo‘l qo‘ymasligi kerak. - iOS/Android tugunlari aniqlash asosidagi direct ulanishlarni faqat TLS orqali amalga oshirishi va birinchi marta pin saqlashdan oldin aniq “ushbu fingerprint’ga ishonish” tasdig‘ini (out-of-band tekshiruv) talab qilishi kerak.
OPENCLAW_DISABLE_BONJOUR=1e’lon qilishni o‘chiradi.~/.openclaw/openclaw.jsonichidagigateway.bindGateway’ning bind rejimini boshqaradi.OPENCLAW_SSH_PORTTXT’da e’lon qilinadigan SSH portini o‘zgartiradi (standart 22).OPENCLAW_TAILNET_DNStailnetDnsishorasini (MagicDNS) e’lon qiladi.OPENCLAW_CLI_PATHe’lon qilinadigan CLI yo‘lini o‘zgartiradi.
2. Tailnet (tarmoqlararo)
For London/Vienna style setups, Bonjour won’t help. The recommended “direct” target is:- Tailscale MagicDNS nomi (afzal) yoki barqaror tailnet IP.
tailnetDns ni e’lon qiladi.
3. Qo‘lda / SSH manzil
To‘g‘ridan-to‘g‘ri yo‘l bo‘lmaganda (yoki direct o‘chirilgan bo‘lsa), mijozlar har doim loopback gateway portini SSH orqali forward qilib ulanishi mumkin. Qarang: Remote access.Transport tanlash (mijoz siyosati)
Tavsiya etilgan mijoz xatti-harakati:- Agar juftlangan direct endpoint sozlangan va mavjud bo‘lsa, undan foydalanish.
- Aks holda, agar Bonjour LAN’da gateway topsa, bir bosishda “Ushbu gateway’dan foydalanish” variantini taklif qilish va uni direct endpoint sifatida saqlash.
- Aks holda, agar tailnet DNS/IP sozlangan bo‘lsa, direct ulanishni sinab ko‘rish.
- Aks holda, SSH’ga fallback qilish.
Juftlash + autentifikatsiya (direct transport)
Gateway — tugun/mijoz qabul qilish bo‘yicha yagona haqiqat manbai.- Juftlash so‘rovlari gateway’da yaratiladi/tasdiqlanadi/rad etiladi (qarang: Gateway pairing).
- Gateway quyidagilarni majburiy qiladi:
- autentifikatsiya (token / kalit juftligi)
- scope’lar/ACL’lar (gateway har bir metodga xom proksi emas)
- tezlik cheklovlari (rate limits)
Komponentlar bo‘yicha mas’uliyat
- Gateway: aniqlash beacon’larini e’lon qiladi, juftlash qarorlarini boshqaradi va WS endpoint’ni host qiladi.
- macOS ilovasi: gateway tanlashda yordam beradi, juftlash so‘rovlarini ko‘rsatadi va faqat fallback sifatida SSH’dan foydalanadi.
- iOS/Android tugunlari: qulaylik uchun Bonjour orqali ko‘rib chiqadi va juftlangan Gateway WS’ga ulanadi.