local. وسيلة ملائمة داخل الشبكة المحلية فقط: يتولى Plugin bonjour المضمّن الإعلان داخل الشبكة المحلية، ويبدأ تلقائيًا على مضيفي macOS ويتطلب التفعيل الاختياري على Linux وWindows وعمليات نشر Gateway ضمن حاويات. ويمكن للمنارة نفسها أيضًا النشر عبر نطاق DNS-SD واسع النطاق مُهيأ للاكتشاف عبر الشبكات. يعمل الاكتشاف وفق أفضل جهد ولا يحل محل الاتصال المستند إلى SSH أو Tailnet.
Bonjour واسع النطاق (DNS-SD أحادي الإرسال) عبر Tailscale
إذا كان الـ Node والـ Gateway على شبكتين مختلفتين، فلا يمكن لبث mDNS المتعدد عبور الحد الفاصل. حافظ على تجربة مستخدم الاكتشاف نفسها بالتبديل إلى DNS-SD أحادي الإرسال (“Bonjour واسع النطاق”) عبر Tailscale:- شغّل خادم DNS على مضيف Gateway بحيث يمكن الوصول إليه عبر Tailnet.
- انشر سجلات DNS-SD لـ
_openclaw-gw._tcpضمن منطقة مخصصة (مثال:openclaw.internal.). - هيّئ DNS المقسّم في Tailscale بحيث يُحل النطاق الذي اخترته عبر خادم DNS هذا للعملاء، بما في ذلك iOS.
openclaw.internal. أعلاه مجرد مثال — يدعم OpenClaw أي نطاق اكتشاف. تتصفح عُقد iOS/Android كلًا من local. ونطاقك واسع النطاق المُهيأ.
إعدادات Gateway
discovery.wideArea.domain أيضًا متغير البيئة OPENCLAW_WIDE_AREA_DOMAIN كخيار احتياطي عندما لا تكون قيمته معيّنة.
إعداد خادم DNS لمرة واحدة (مضيف Gateway، على macOS فقط)
brew install coredns) ويهيئه من أجل:
- الاستماع على المنفذ 53 على واجهات Tailscale الخاصة بـ Gateway فقط
- خدمة النطاق الذي اخترته (مثال:
openclaw.internal.) من~/.openclaw/dns/<domain>.db
--apply لمعاينة الخطة (النطاق، ومسار ملف المنطقة، وعنوان IP المكتشف لـ Tailnet، والإعدادات الموصى بها) من دون تثبيت أي شيء.
تحقق من جهاز متصل بـ Tailnet:
إعدادات DNS في Tailscale
في وحدة تحكم إدارة Tailscale:- أضف خادم أسماء يشير إلى عنوان IP الخاص بـ Tailnet لـ Gateway (UDP/TCP 53).
- أضف DNS مقسّمًا بحيث يستخدم نطاق الاكتشاف خادم الأسماء هذا.
_openclaw-gw._tcp في نطاق الاكتشاف من دون بث متعدد.
أمان مستمع Gateway
يرتبط منفذ WS الخاص بـ Gateway (الافتراضي18789) بالواجهة المحلية افتراضيًا. للوصول عبر الشبكة المحلية/Tailnet، اربطه صراحةً وأبقِ المصادقة مفعّلة. لعمليات الإعداد المقصورة على Tailnet، عيّن gateway.bind: "tailnet" في ~/.openclaw/openclaw.json وأعد تشغيل Gateway (أو تطبيق شريط القوائم في macOS).
ما الذي يُعلَن عنه
يعلن Gateway وحده عن_openclaw-gw._tcp. يأتي إعلان البث المتعدد داخل الشبكة المحلية من Plugin bonjour المضمّن عند تفعيله؛ بينما يظل نشر DNS-SD واسع النطاق مملوكًا لـ Gateway.
أنواع الخدمات
_openclaw-gw._tcp- منارة نقل Gateway، تستخدمها عُقد macOS/iOS/Android.
مفاتيح TXT (تلميحات غير سرية)
ملاحظات أمنية:
- سجلات TXT الخاصة بـ Bonjour/mDNS غير موثّقة. يجب ألا يتعامل العملاء مع TXT بوصفه مرجعًا موثوقًا للتوجيه.
- ينبغي للعملاء إجراء التوجيه باستخدام نقطة نهاية الخدمة التي جرى حلها (SRV + A/AAAA). تعامل مع
lanHostوtailnetDnsوgatewayPortوgatewayTlsSha256كتلميحات فقط. - ينبغي كذلك للاستهداف التلقائي عبر SSH استخدام مضيف الخدمة الذي جرى حله، وليس تلميحات TXT وحدها.
- يجب ألا يسمح تثبيت TLS مطلقًا لقيمة
gatewayTlsSha256مُعلنة بتجاوز تثبيت محفوظ سابقًا. - ينبغي لعُقد iOS/Android التعامل مع الاتصالات المباشرة المستندة إلى الاكتشاف على أنها مقصورة على TLS، وطلب تأكيد صريح من المستخدم قبل الوثوق ببصمة لأول مرة.
تصحيح الأخطاء على macOS
الأدوات المضمّنة:تصحيح الأخطاء في سجلات Gateway
يكتب Gateway ملف سجل متجددًا (يُطبع عند بدء التشغيل باسمgateway log file: ...). ابحث عن أسطر bonjour:، وخصوصًا:
bonjour: advertise failed ...bonjour: suppressing ciao netmask assertion ...bonjour: ... name conflict resolved/hostname conflict resolved
(2) أو (3) للحفاظ على تفرّد أسماء مثيلات الخدمة. هذه اللاحقات إجراء طبيعي لحل التعارض ولا تشير إلى إشراف OCM مكرر.
يستخدم Bonjour اسم مضيف النظام لمضيف .local المُعلن عندما يكون تسمية DNS صالحة. إذا احتوى اسم مضيف النظام على مسافات أو شرطات سفلية أو محرف آخر غير صالح في تسمية DNS، يعود OpenClaw إلى openclaw.local. عيّن OPENCLAW_MDNS_HOSTNAME=<name> قبل بدء Gateway عندما تحتاج إلى تسمية مضيف صريحة.
تصحيح الأخطاء على Node بنظام iOS
يستخدم Node بنظام iOS NWBrowser لاكتشاف _openclaw-gw._tcp.
لالتقاط السجلات: Settings -> Gateway -> Advanced -> Discovery Debug Logs، ثم Settings -> Gateway -> Advanced -> Discovery Logs -> أعد إنتاج المشكلة -> Copy. يتضمن السجل انتقالات حالة المتصفح وتغييرات مجموعة النتائج.
متى ينبغي تفعيل Bonjour
يبدأ Bonjour تلقائيًا عند تشغيل Gateway بإعدادات فارغة على مضيفي macOS، لأن التطبيق المحلي وعُقد iOS/Android القريبة تعتمد عادةً على الاكتشاف ضمن الشبكة المحلية نفسها. فعّله صراحةً عندما يكون الاكتشاف التلقائي ضمن الشبكة المحلية نفسها مفيدًا على Linux أو Windows أو مضيف آخر غير macOS:discovery.mdns.mode لتحديد مقدار بيانات TXT الوصفية التي سينشرها؛ ويتحكم الوضع نفسه في تلميحات TXT الاختيارية ضمن سجلات DNS-SD واسعة النطاق. الأوضاع:
متى ينبغي تعطيل Bonjour
اترك Bonjour معطّلًا عندما يكون إعلان البث المتعدد داخل الشبكة المحلية غير ضروري أو غير متاح أو ضارًا — تشمل الحالات الشائعة خوادم غير macOS وشبكات Docker الجسرية وWSL أو سياسة شبكة تُسقط بث mDNS المتعدد. يظل Gateway قابلًا للوصول عبر عنوان URL المنشور أو SSH أو Tailnet أو DNS-SD واسع النطاق؛ ولا يصبح غير موثوق سوى الاكتشاف التلقائي داخل الشبكة المحلية. استخدم تجاوز متغير البيئة للمشكلات الخاصة بعملية النشر (آمن لصور Docker وملفات الخدمة وبرامج نصية للتشغيل وتصحيح الأخطاء لمرة واحدة — ويختفي عند اختفاء البيئة):محاذير Docker
يعطّل Plugin Bonjour المضمّن إعلان البث المتعدد داخل الشبكة المحلية تلقائيًا في الحاويات المكتشفة عندما لا تكونOPENCLAW_DISABLE_BONJOUR معيّنة. عادةً لا تمرّر شبكات Docker الجسرية بث mDNS المتعدد (224.0.0.251:5353) بين الحاوية والشبكة المحلية، ولذلك نادرًا ما يجعل الإعلان من الحاوية الاكتشاف يعمل.
محاذير:
- يبدأ Bonjour تلقائيًا على مضيفي macOS ويتطلب التفعيل الاختياري في الأنظمة الأخرى. لا يؤدي تركه معطّلًا إلى إيقاف Gateway — بل يتخطى فقط إعلان البث المتعدد داخل الشبكة المحلية.
- لا يؤدي تعطيل Bonjour إلى تغيير
gateway.bind؛ إذ يظل Docker يستخدمOPENCLAW_GATEWAY_BIND=lanافتراضيًا حتى يعمل منفذ المضيف المنشور. - لا يؤدي تعطيل Bonjour إلى تعطيل DNS-SD واسع النطاق. استخدم الاكتشاف واسع النطاق أو Tailnet عندما لا يكون Gateway والـ Node على الشبكة المحلية نفسها.
- لا تؤدي إعادة استخدام
OPENCLAW_CONFIG_DIRنفسها خارج Docker إلى استمرار سياسة التعطيل التلقائي للحاوية. - عيّن
OPENCLAW_DISABLE_BONJOUR=0فقط لشبكات المضيف أو macvlan أو شبكة أخرى يُعرف أن بث mDNS المتعدد يمر عبرها؛ وعيّنها إلى1لفرض التعطيل.
استكشاف أخطاء Bonjour المعطّل وإصلاحها
إذا توقف Node عن الاكتشاف التلقائي لـ Gateway بعد إعداد Docker:-
تحقق مما إذا كان Gateway يعمل في الوضع التلقائي أو وضع التشغيل القسري أو وضع الإيقاف القسري:
-
تحقق من إمكانية الوصول إلى Gateway نفسه عبر المنفذ المنشور:
-
استخدم هدفًا مباشرًا عند تعطيل Bonjour:
- واجهة التحكم أو الأدوات المحلية:
http://127.0.0.1:18789 - عملاء الشبكة المحلية:
http://<gateway-host>:18789 - العملاء عبر الشبكات: Tailnet MagicDNS أو عنوان IP لـ Tailnet أو نفق SSH أو DNS-SD واسع النطاق
- واجهة التحكم أو الأدوات المحلية:
-
إذا فعّلت Plugin Bonjour عمدًا في Docker وفرضت الإعلان باستخدام
OPENCLAW_DISABLE_BONJOUR=0، فاختبر البث المتعدد من المضيف:إذا كان التصفح فارغًا، أو أظهرت سجلات Gateway إخفاقات متكررة في استقصاء ciao، فأعدOPENCLAW_DISABLE_BONJOUR=1واستخدم مسارًا مباشرًا أو عبر Tailnet.
أوضاع الفشل الشائعة
- لا يتجاوز Bonjour حدود الشبكات: استخدم Tailnet أو SSH.
- البث المتعدد محظور: تعطّل بعض شبكات Wi-Fi بروتوكول mDNS.
- توقّف المعلِن في مرحلة الاستقصاء/الإعلان: قد تؤدي الأجهزة المضيفة التي يُحظر فيها البث المتعدد، أو جسور الحاويات، أو WSL، أو التغيّرات المتكررة في الواجهات إلى إبقاء المستجيب في حالة غير معلَنة. يظل Gateway متاحًا عبر المسارات المباشرة أو SSH أو Tailnet أو DNS-SD واسع النطاق؛ عطّل Bonjour للشبكة المحلية باستخدام
discovery.mdns.mode: "off"أوOPENCLAW_DISABLE_BONJOUR=1عندما لا يكون البث المتعدد متاحًا. - شبكات جسور Docker: يُعطَّل Bonjour تلقائيًا داخل الحاويات المكتشفة. اضبط
OPENCLAW_DISABLE_BONJOUR=0فقط للشبكة المضيفة أو macvlan أو شبكة أخرى تدعم mDNS. - السكون/التغيّرات المتكررة في الواجهات: قد يُسقط macOS نتائج mDNS مؤقتًا؛ أعد المحاولة.
- يعمل التصفح لكن تفشل عملية الحل: أبقِ أسماء الأجهزة بسيطة (تجنّب الرموز التعبيرية أو علامات الترقيم)، ثم أعد تشغيل Gateway. يُشتق اسم مثيل الخدمة من اسم المضيف، لذا قد تربك الأسماء شديدة التعقيد بعض أدوات الحل.
أسماء المثيلات المُهَرَّبة (\032)
غالبًا ما يُهَرِّب Bonjour/DNS-SD البايتات في أسماء مثيلات الخدمة على هيئة تسلسلات عشرية \DDD (تتحول المسافات إلى \032). هذا طبيعي على مستوى البروتوكول؛ وينبغي لواجهات المستخدم فك ترميزها للعرض (يستخدم iOS BonjourEscapes.decode).
التمكين / التعطيل / الإعداد
تبدأ أجهزة macOS المضيفة تشغيل Plugin اكتشاف الشبكة المحلية المضمّن تلقائيًا بشكل افتراضي. عندما يكون Plugin Bonjour مفعّلًا ولا تكون
OPENCLAW_DISABLE_BONJOUR مضبوطة، يعلن Bonjour على الأجهزة المضيفة العادية ويتعطّل تلقائيًا داخل الحاويات المكتشفة (Docker وأجهزة Fly.io وبيئات تشغيل الحاويات الشائعة).
مستندات ذات صلة
- سياسة الاكتشاف واختيار وسيلة النقل: الاكتشاف
- إقران Node والموافقات: إقران Gateway