Skip to main content
OpenClaw किसी सक्रिय Gateway (WebSocket एंडपॉइंट) को खोजने के लिए Bonjour (mDNS/DNS-SD) का उपयोग कर सकता है। मल्टीकास्ट local. ब्राउज़िंग एक केवल-LAN सुविधा है: बंडल किया गया bonjour Plugin LAN विज्ञापन का स्वामी है, जो macOS होस्ट पर अपने-आप शुरू होता है और Linux, Windows तथा कंटेनरीकृत Gateway परिनियोजनों पर ऑप्ट-इन है। यही बीकन क्रॉस-नेटवर्क खोज के लिए कॉन्फ़िगर किए गए वाइड-एरिया DNS-SD डोमेन के माध्यम से भी प्रकाशित हो सकता है। खोज सर्वोत्तम-प्रयास पर आधारित है और SSH या Tailnet-आधारित कनेक्टिविटी का स्थान नहीं लेती।

Tailscale पर वाइड-एरिया Bonjour (यूनिकास्ट DNS-SD)

यदि Node और Gateway अलग-अलग नेटवर्क पर हैं, तो मल्टीकास्ट mDNS सीमा पार नहीं कर सकता। Tailscale पर यूनिकास्ट DNS-SD (“Wide-Area Bonjour”) पर स्विच करके खोज का वही उपयोगकर्ता अनुभव बनाए रखें:
  1. Gateway होस्ट पर एक DNS सर्वर चलाएँ, जिस तक Tailnet के माध्यम से पहुँचा जा सके।
  2. एक समर्पित ज़ोन (उदाहरण: openclaw.internal.) के अंतर्गत _openclaw-gw._tcp के लिए DNS-SD रिकॉर्ड प्रकाशित करें।
  3. Tailscale split DNS को कॉन्फ़िगर करें, ताकि आपका चुना हुआ डोमेन iOS सहित क्लाइंट के लिए उस DNS सर्वर के माध्यम से रिज़ॉल्व हो।
ऊपर दिया गया openclaw.internal. केवल एक उदाहरण है — OpenClaw किसी भी खोज डोमेन का समर्थन करता है। iOS/Android Node, local. और आपके कॉन्फ़िगर किए गए वाइड-एरिया डोमेन, दोनों को ब्राउज़ करते हैं।

Gateway कॉन्फ़िगरेशन

सेट न होने पर discovery.wideArea.domain, फ़ॉलबैक के रूप में OPENCLAW_WIDE_AREA_DOMAIN एनवायरनमेंट वेरिएबल को भी स्वीकार करता है।

एक-बार का DNS सर्वर सेटअप (Gateway होस्ट, केवल macOS)

यह कमांड केवल macOS के लिए है और इसे Homebrew तथा चालू Tailscale कनेक्शन की आवश्यकता होती है। यह CoreDNS (brew install coredns) इंस्टॉल करता है और इसे इस प्रकार कॉन्फ़िगर करता है:
  • केवल Gateway के Tailscale इंटरफ़ेस पर पोर्ट 53 सुनना
  • ~/.openclaw/dns/<domain>.db से आपका चुना हुआ डोमेन (उदाहरण: openclaw.internal.) उपलब्ध कराना
कुछ भी इंस्टॉल किए बिना योजना (डोमेन, ज़ोन फ़ाइल पथ, पता लगाया गया Tailnet IP, अनुशंसित कॉन्फ़िगरेशन) का पूर्वावलोकन करने के लिए पहले --apply के बिना चलाएँ। Tailnet से कनेक्टेड मशीन से सत्यापित करें:

Tailscale DNS सेटिंग्स

Tailscale एडमिन कंसोल में:
  • Gateway के Tailnet IP (UDP/TCP 53) की ओर इंगित करने वाला नेमसर्वर जोड़ें।
  • split DNS जोड़ें, ताकि आपका खोज डोमेन उस नेमसर्वर का उपयोग करे।
क्लाइंट द्वारा Tailnet DNS स्वीकार कर लेने के बाद, iOS Node और CLI खोज मल्टीकास्ट के बिना आपके खोज डोमेन में _openclaw-gw._tcp ब्राउज़ कर सकते हैं।

Gateway लिसनर सुरक्षा

Gateway WS पोर्ट (डिफ़ॉल्ट 18789) डिफ़ॉल्ट रूप से लूपबैक से बाइंड होता है। LAN/Tailnet पहुँच के लिए स्पष्ट रूप से बाइंड करें और प्रमाणीकरण सक्षम रखें। केवल-Tailnet सेटअप के लिए ~/.openclaw/openclaw.json में gateway.bind: "tailnet" सेट करें और Gateway (या macOS मेनूबार ऐप) को पुनः आरंभ करें।

क्या विज्ञापित होता है

केवल Gateway ही _openclaw-gw._tcp को विज्ञापित करता है। सक्षम होने पर LAN मल्टीकास्ट विज्ञापन बंडल किए गए bonjour Plugin से आता है; वाइड-एरिया DNS-SD प्रकाशन का स्वामित्व Gateway के पास रहता है।

सेवा प्रकार

  • _openclaw-gw._tcp - Gateway ट्रांसपोर्ट बीकन, जिसका उपयोग macOS/iOS/Android Node करते हैं।

TXT कुंजियाँ (गैर-गोपनीय संकेत)

सुरक्षा नोट्स:
  • Bonjour/mDNS TXT रिकॉर्ड अप्रमाणित होते हैं। क्लाइंट को TXT को आधिकारिक रूटिंग जानकारी नहीं मानना चाहिए।
  • क्लाइंट को रिज़ॉल्व किए गए सेवा एंडपॉइंट (SRV + A/AAAA) का उपयोग करके रूट करना चाहिए। lanHost, tailnetDns, gatewayPort, और gatewayTlsSha256 को केवल संकेत मानें।
  • इसी प्रकार SSH ऑटो-टार्गेटिंग को केवल TXT संकेतों के बजाय रिज़ॉल्व किए गए सेवा होस्ट का उपयोग करना चाहिए।
  • TLS पिनिंग को कभी भी किसी विज्ञापित gatewayTlsSha256 द्वारा पहले से संग्रहीत पिन को ओवरराइड नहीं करने देना चाहिए।
  • iOS/Android Node को खोज-आधारित सीधे कनेक्शन केवल-TLS मानने चाहिए और पहली बार के फ़िंगरप्रिंट पर विश्वास करने से पहले उपयोगकर्ता की स्पष्ट पुष्टि आवश्यक करनी चाहिए।

macOS पर डीबगिंग

अंतर्निहित टूल:
यदि ब्राउज़िंग काम करती है लेकिन रिज़ॉल्व करना विफल होता है, तो आमतौर पर समस्या LAN नीति या mDNS रिज़ॉल्वर में होती है।

Gateway लॉग में डीबगिंग

Gateway एक रोलिंग लॉग फ़ाइल लिखता है (स्टार्टअप पर gateway log file: ... के रूप में प्रिंट होती है)। विशेष रूप से इन bonjour: पंक्तियों को खोजें:
  • bonjour: advertise failed ...
  • bonjour: suppressing ciao netmask assertion ...
  • bonjour: ... name conflict resolved / hostname conflict resolved
OpenClaw प्रत्येक Bonjour सेवा को एक बार शुरू करता है और प्रोबिंग, पुनः प्रयास, नाम-विरोध समाधान तथा इंटरफ़ेस-परिवर्तन पर पुनः प्रकाशन का कार्य mDNS रिस्पॉन्डर पर छोड़ देता है। इससे सामान्य नेटवर्क उतार-चढ़ाव के दौरान ओवरलैप होने वाले प्रकाशन प्रयासों से बचाव होता है। बार-बार आने वाले आंतरिक स्व-प्रोब संदेश दबा दिए जाते हैं, ताकि वे Gateway लॉग में अत्यधिक प्रविष्टियाँ न भरें। जब एक ही होस्ट से कई OpenClaw Gateway विज्ञापन करते हैं, तो सेवा इंस्टेंस नामों को अद्वितीय रखने के लिए Bonjour (2) या (3) जैसे प्रत्यय जोड़ सकता है। ये प्रत्यय सामान्य विरोध समाधान हैं और डुप्लिकेट OCM पर्यवेक्षण का संकेत नहीं देते। Bonjour विज्ञापित .local होस्ट के लिए सिस्टम होस्टनाम का उपयोग करता है, बशर्ते वह वैध DNS लेबल हो। यदि सिस्टम होस्टनाम में स्पेस, अंडरस्कोर या कोई अन्य अमान्य DNS-लेबल वर्ण है, तो OpenClaw openclaw.local पर फ़ॉलबैक करता है। स्पष्ट होस्ट लेबल की आवश्यकता होने पर Gateway शुरू करने से पहले OPENCLAW_MDNS_HOSTNAME=<name> सेट करें।

iOS Node पर डीबगिंग

iOS Node, _openclaw-gw._tcp खोजने के लिए NWBrowser का उपयोग करता है। लॉग कैप्चर करने के लिए: Settings -> Gateway -> Advanced -> Discovery Debug Logs, फिर Settings -> Gateway -> Advanced -> Discovery Logs -> पुनरुत्पादित करें -> Copy। लॉग में ब्राउज़र स्थिति संक्रमण और परिणाम-समूह परिवर्तन शामिल होते हैं।

Bonjour कब सक्षम करें

macOS होस्ट पर खाली-कॉन्फ़िगरेशन वाले Gateway स्टार्टअप के लिए Bonjour अपने-आप शुरू होता है, क्योंकि स्थानीय ऐप और आस-पास के iOS/Android Node आमतौर पर समान-LAN खोज पर निर्भर होते हैं। Linux, Windows या किसी अन्य गैर-macOS होस्ट पर समान-LAN ऑटो-डिस्कवरी उपयोगी होने पर इसे स्पष्ट रूप से सक्षम करें:
सक्षम होने पर, Bonjour यह तय करने के लिए discovery.mdns.mode का उपयोग करता है कि कितना TXT मेटाडेटा प्रकाशित करना है; यही मोड वाइड-एरिया DNS-SD रिकॉर्ड में वैकल्पिक TXT संकेतों को भी नियंत्रित करता है। मोड:

Bonjour कब अक्षम करें

जब LAN मल्टीकास्ट विज्ञापन अनावश्यक, अनुपलब्ध या हानिकारक हो, तब Bonjour को अक्षम रखें — सामान्य मामलों में गैर-macOS सर्वर, Docker ब्रिज नेटवर्किंग, WSL या mDNS मल्टीकास्ट छोड़ने वाली नेटवर्क नीति शामिल हैं। Gateway अपने प्रकाशित URL, SSH, Tailnet या वाइड-एरिया DNS-SD के माध्यम से उपलब्ध रहता है; केवल LAN ऑटो-डिस्कवरी अविश्वसनीय होती है। परिनियोजन-सीमित समस्याओं के लिए एनवायरनमेंट ओवरराइड का उपयोग करें (Docker इमेज, सेवा फ़ाइलों, लॉन्च स्क्रिप्ट और एकबारगी डीबगिंग के लिए सुरक्षित — एनवायरनमेंट हटने पर यह भी हट जाता है):
जब आप उस OpenClaw कॉन्फ़िगरेशन के लिए बंडल किए गए LAN खोज Plugin को जानबूझकर बंद करना चाहते हों, तब Plugin कॉन्फ़िगरेशन का उपयोग करें:

Docker संबंधी सावधानियाँ

यदि OPENCLAW_DISABLE_BONJOUR सेट नहीं है, तो पता लगाए गए कंटेनरों में बंडल किया गया Bonjour Plugin LAN मल्टीकास्ट विज्ञापन अपने-आप अक्षम कर देता है। Docker ब्रिज नेटवर्क आमतौर पर कंटेनर और LAN के बीच mDNS मल्टीकास्ट (224.0.0.251:5353) फ़ॉरवर्ड नहीं करते, इसलिए कंटेनर से विज्ञापन करने पर खोज का काम करना दुर्लभ है। सावधानियाँ:
  • Bonjour macOS होस्ट पर अपने-आप शुरू होता है और अन्य जगहों पर ऑप्ट-इन है। इसे अक्षम रखने से Gateway बंद नहीं होता — यह केवल LAN मल्टीकास्ट विज्ञापन छोड़ता है।
  • Bonjour अक्षम करने से gateway.bind नहीं बदलता; Docker अभी भी डिफ़ॉल्ट रूप से OPENCLAW_GATEWAY_BIND=lan का उपयोग करता है, ताकि प्रकाशित होस्ट पोर्ट काम करे।
  • Bonjour अक्षम करने से वाइड-एरिया DNS-SD अक्षम नहीं होता। जब Gateway और Node एक ही LAN पर न हों, तब वाइड-एरिया खोज या Tailnet का उपयोग करें।
  • Docker के बाहर उसी OPENCLAW_CONFIG_DIR का पुनः उपयोग करने से कंटेनर की ऑटो-अक्षम नीति बनी नहीं रहती।
  • OPENCLAW_DISABLE_BONJOUR=0 केवल होस्ट नेटवर्किंग, macvlan या किसी अन्य ऐसे नेटवर्क के लिए सेट करें, जहाँ mDNS मल्टीकास्ट का गुजरना ज्ञात हो; बलपूर्वक अक्षम करने के लिए इसे 1 पर सेट करें।

अक्षम Bonjour की समस्या निवारण

यदि Docker सेटअप के बाद कोई Node अब Gateway को अपने-आप नहीं खोजता:
  1. पुष्टि करें कि Gateway स्वचालित, बलपूर्वक-सक्षम या बलपूर्वक-अक्षम मोड में चल रहा है:
  2. पुष्टि करें कि प्रकाशित पोर्ट के माध्यम से स्वयं Gateway तक पहुँचा जा सकता है:
  3. Bonjour अक्षम होने पर प्रत्यक्ष लक्ष्य का उपयोग करें:
    • नियंत्रण UI या स्थानीय टूल: http://127.0.0.1:18789
    • LAN क्लाइंट: http://<gateway-host>:18789
    • क्रॉस-नेटवर्क क्लाइंट: Tailnet MagicDNS, Tailnet IP, SSH टनल या वाइड-एरिया DNS-SD
  4. यदि आपने Docker में जानबूझकर Bonjour Plugin सक्षम किया है और OPENCLAW_DISABLE_BONJOUR=0 के साथ विज्ञापन को बलपूर्वक सक्रिय किया है, तो होस्ट से मल्टीकास्ट का परीक्षण करें:
    यदि ब्राउज़िंग खाली है, या Gateway लॉग में बार-बार ciao प्रोब विफलताएँ दिखाई देती हैं, तो OPENCLAW_DISABLE_BONJOUR=1 पुनर्स्थापित करें और प्रत्यक्ष या Tailnet मार्ग का उपयोग करें।

सामान्य विफलता मोड

  • Bonjour नेटवर्कों के पार काम नहीं करता: Tailnet या SSH का उपयोग करें।
  • मल्टीकास्ट अवरुद्ध है: कुछ Wi-Fi नेटवर्क mDNS को अक्षम कर देते हैं।
  • विज्ञापक जाँच/घोषणा में अटका है: अवरुद्ध मल्टीकास्ट, कंटेनर ब्रिज, WSL, या इंटरफ़ेस में बार-बार बदलाव वाले होस्ट प्रत्युत्तरकर्ता को अघोषित स्थिति में छोड़ सकते हैं। Gateway सीधे, SSH, Tailnet, या वाइड-एरिया DNS-SD मार्गों से उपलब्ध रहता है; मल्टीकास्ट अनुपलब्ध होने पर discovery.mdns.mode: "off" या OPENCLAW_DISABLE_BONJOUR=1 से LAN Bonjour को अक्षम करें।
  • Docker ब्रिज नेटवर्किंग: पहचाने गए कंटेनरों में Bonjour स्वतः अक्षम हो जाता है। केवल होस्ट, macvlan, या किसी अन्य mDNS-सक्षम नेटवर्क के लिए OPENCLAW_DISABLE_BONJOUR=0 सेट करें।
  • स्लीप/इंटरफ़ेस में बदलाव: macOS अस्थायी रूप से mDNS परिणाम खो सकता है; पुनः प्रयास करें।
  • ब्राउज़ करना काम करता है, लेकिन रिज़ॉल्व करना विफल होता है: मशीन के नाम सरल रखें (इमोजी या विराम-चिह्नों से बचें), फिर Gateway पुनः आरंभ करें। सेवा इंस्टेंस का नाम होस्ट नाम से बनता है, इसलिए अत्यधिक जटिल नाम कुछ रिज़ॉल्वर को भ्रमित कर सकते हैं।

एस्केप किए गए इंस्टेंस नाम (\032)

Bonjour/DNS-SD अक्सर सेवा इंस्टेंस नामों में बाइट्स को दशमलव \DDD अनुक्रमों के रूप में एस्केप करता है (रिक्त स्थान \032 बन जाते हैं)। प्रोटोकॉल स्तर पर यह सामान्य है; UI को प्रदर्शन के लिए इन्हें डीकोड करना चाहिए (iOS BonjourEscapes.decode का उपयोग करता है)।

सक्षम करना / अक्षम करना / कॉन्फ़िगरेशन

macOS होस्ट डिफ़ॉल्ट रूप से बंडल किए गए LAN खोज Plugin को स्वतः आरंभ करते हैं। जब Bonjour Plugin सक्षम हो और OPENCLAW_DISABLE_BONJOUR सेट न हो, तब Bonjour सामान्य होस्ट पर विज्ञापन करता है और पहचाने गए कंटेनरों (Docker, Fly.io मशीनों और सामान्य कंटेनर रनटाइम) के भीतर स्वतः अक्षम हो जाता है।

संबंधित दस्तावेज़