اكتشاف Bonjour / mDNS
يستخدم OpenClaw Bonjour (mDNS / DNS‑SD) كوسيلة مريحة ضمن الشبكة المحلية فقط لاكتشاف Gateway نشطة (نقطة نهاية WebSocket). يعمل ذلك بأفضل جهد ممكن ولا يستبدل الاتصال عبر SSH أو الاتصال القائم على Tailnet.Bonjour واسع النطاق (Unicast DNS‑SD) عبر Tailscale
إذا كانت العُقدة وGateway على شبكتين مختلفتين، فلن يعبر mDNS متعدد الإرسال الحدود. يمكنك الحفاظ على تجربة الاكتشاف نفسها عبر التحويل إلى Unicast DNS‑SD («Bonjour واسع النطاق») فوق Tailscale. الخطوات عالية المستوى:- تشغيل خادم DNS على مضيف Gateway (يمكن الوصول إليه عبر Tailnet).
- نشر سجلات DNS‑SD لـ
_openclaw-gw._tcpضمن نطاق مخصص (مثال:openclaw.internal.). - تهيئة split DNS في Tailscale بحيث يُحلّ نطاقك المختار عبر ذلك الخادم لجهة العملاء (بما في ذلك iOS).
openclaw.internal. مجرد مثال.
تستعرض عُقد iOS/Android كِلَا local. ونطاقك واسع النطاق المُهيّأ.
تهيئة Gateway (موصى بها)
إعداد خادم DNS لمرة واحدة (مضيف Gateway)
- الاستماع على المنفذ 53 فقط على واجهات Tailscale الخاصة بـ Gateway
- خدمة نطاقك المختار (مثال:
openclaw.internal.) من~/.openclaw/dns/<domain>.db
إعدادات DNS في Tailscale
في وحدة تحكم إدارة Tailscale:- أضف خادم أسماء يشير إلى عنوان IP الخاص بـ tailnet لـ Gateway (UDP/TCP 53).
- أضف split DNS بحيث يستخدم نطاق الاكتشاف خادم الأسماء هذا.
_openclaw-gw._tcp ضمن نطاق الاكتشاف دون تعدد الإرسال.
أمان مستمع Gateway (موصى به)
يرتبط منفذ WS الخاص بـ Gateway (الافتراضي18789) على loopback افتراضيًا. للوصول عبر LAN/tailnet،
اربطه صراحةً مع الإبقاء على المصادقة مُمكّنة.
لإعدادات tailnet فقط:
- عيّن
gateway.bind: "tailnet"في~/.openclaw/openclaw.json. - أعد تشغيل Gateway (أو أعد تشغيل تطبيق شريط القوائم على macOS).
ما الذي يعلن
تعلن Gateway فقط عن_openclaw-gw._tcp.
أنواع الخدمات
_openclaw-gw._tcp— إشارة نقل Gateway (تستخدمها عُقد macOS/iOS/Android).
مفاتيح TXT (تلميحات غير سرية)
تعلن Gateway عن تلميحات صغيرة غير سرية لتسهيل تدفقات واجهة المستخدم:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(فقط عند تمكين TLS)gatewayTlsSha256=<sha256>(فقط عند تمكين TLS وتوفر البصمة)canvasPort=<port>(فقط عند تمكين مضيف اللوحة؛ الافتراضي18793)sshPort=<port>(الافتراضي 22 عند عدم التجاوز)transport=gatewaycliPath=<path>(اختياري؛ مسار مطلق لنقطة دخول قابلة للتشغيلopenclaw)tailnetDns=<magicdns>(تلميح اختياري عند توفر Tailnet)
- سجلات Bonjour/mDNS TXT غير موثَّقة. يجب ألا يعتبر العملاء TXT توجيهًا موثوقًا.
- يجب على العملاء التوجيه باستخدام نقطة نهاية الخدمة التي تم حلّها (SRV + A/AAAA). يجب التعامل مع
lanHostوtailnetDnsوgatewayPortوgatewayTlsSha256على أنها مؤشرات فقط. - يجب ألا يسمح تثبيت TLS مطلقًا لقيمة
gatewayTlsSha256المُعلَن عنها بتجاوز بصمة محفوظة مسبقًا. - يجب على عقد iOS/Android اعتبار الاتصالات المباشرة المعتمدة على الاكتشاف على أنها TLS-only والمطالبة بتأكيد صريح من المستخدم قبل الوثوق ببصمة تُستخدم لأول مرة.
تصحيح الأخطاء على macOS
أدوات مدمجة مفيدة:-
حالات التصفح:
-
حلّ مثيل واحد (استبدل
<instance>):
تصحيح الأخطاء في سجلات Gateway
تكتب Gateway ملف سجل دوّار (يُطبع عند بدء التشغيل باسمgateway log file: ...). ابحث عن أسطر bonjour:، خصوصًا:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...
تصحيح الأخطاء على عُقدة iOS
تستخدم عُقدة iOS NWBrowser لاكتشاف _openclaw-gw._tcp.
لالتقاط السجلات:
- الإعدادات → Gateway → متقدم → سجلات تصحيح اكتشاف
- الإعدادات → Gateway → متقدم → سجلات الاكتشاف → أعد الإنتاج → نسخ
أنماط الفشل الشائعة
- Bonjour لا يعبر الشبكات: استخدم Tailnet أو SSH.
- تعدد الإرسال محجوب: بعض شبكات Wi‑Fi تعطل mDNS.
- النوم / تبدّل الواجهات: قد يسقط macOS نتائج mDNS مؤقتًا؛ أعد المحاولة.
- الاستعراض يعمل لكن الحلّ يفشل: أبقِ أسماء الأجهزة بسيطة (تجنب الرموز التعبيرية أو علامات الترقيم)، ثم أعد تشغيل Gateway. اسم مثيل الخدمة مشتق من اسم المضيف، لذا قد تُربك الأسماء المعقدة بعض المُحلِّلات.
أسماء المثيلات المُفلتة (\032)
غالبًا ما يفلت Bonjour/DNS‑SD البايتات في أسماء مثيلات الخدمة كسلاسل عشرية \DDD
(مثل تحوّل المسافات إلى \032).
- هذا طبيعي على مستوى البروتوكول.
- يجب على واجهات المستخدم فك الترميز للعرض (يستخدم iOS
BonjourEscapes.decode).
التعطيل / التهيئة
OPENCLAW_DISABLE_BONJOUR=1يعطّل الإعلان (القديم:OPENCLAW_DISABLE_BONJOUR).gateway.bindفي~/.openclaw/openclaw.jsonيتحكم في وضع ربط Gateway.OPENCLAW_SSH_PORTيتجاوز منفذ SSH المُعلن في TXT (القديم:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSينشر تلميح MagicDNS في TXT (القديم:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHيتجاوز مسار CLI المُعلن (القديم:OPENCLAW_CLI_PATH).
مستندات ذات صلة
- سياسة الاكتشاف واختيار النقل: Discovery
- إقران العُقد + الموافقات: Gateway pairing