如何透過 Bonjour 與 mDNS 自動發現 OpenClaw Gateway
在開發分散式系統或設定行動裝置連線時,最煩人的莫過於手動輸入 IP 地址。每次更換網路環境,都要重新確認設備 IP,一旦遇到動態分配的情況,連線就直接斷掉,真的非常浪費時間。
OpenClaw 使用 Bonjour (mDNS / DNS-SD) 提供 LAN 專用的便利功能,讓你自動發現啟動中的 Gateway (WebSocket 端點)。這是一種「盡力而為」的連線方式,雖然它不能完全取代 SSH 或 Tailnet,但在區域網路內真的非常好用。
需要準備的東西
Section titled “需要準備的東西”- OpenClaw Gateway 執行環境
- macOS、iOS 或 Android 裝置節點
- Tailscale 帳號(如果你需要跨網域連線)
- 基礎的 CLI 操作能力
如果你只想在 5 分鐘內搞定跨網域的自動發現,請按照以下步驟操作。
1. 修改 Gateway 設定
Section titled “1. 修改 Gateway 設定”編輯你的 ~/.openclaw/openclaw.json,建議將 Gateway 綁定在 Tailnet 並開啟廣播:
{ gateway: { bind: "tailnet" }, // 建議僅綁定至 tailnet discovery: { wideArea: { enabled: true } }, // 啟用廣播}2. 執行 DNS 自動化設定
Section titled “2. 執行 DNS 自動化設定”在 Gateway 主機上執行以下指令,這會安裝 CoreDNS 並自動設定,讓它只在 Tailscale 介面上監聽 port 53:
openclaw dns setup --apply3. 設定 Tailscale DNS
Section titled “3. 設定 Tailscale DNS”登入 Tailscale 管理控制台進行以下操作:
- 新增一個 Nameserver,指向 Gateway 的 Tailscale IP(使用 UDP/TCP 53)。
- 設定 Split DNS,讓你自定義的網域(例如
openclaw.internal.)指向該 Nameserver。
4. 驗證連線狀態
Section titled “4. 驗證連線狀態”從另一台連線到 Tailnet 的機器執行以下指令,確認 DNS 是否正常工作:
dns-sd -B _openclaw-gw._tcp openclaw.internal.dig @<TAILNET_IPV4> -p 53 _openclaw-gw._tcp.openclaw.internal PTR +short深入了解廣播細節
Section titled “深入了解廣播細節”廣播內容 (TXT Keys)
Section titled “廣播內容 (TXT Keys)”Gateway 會廣播一些不含敏感資訊的提示 (Hints),讓 UI 操作更方便。這些資訊包括:
role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(僅在啟用 TLS 時)canvasPort=<port>(預設為18793)sshPort=<port>(預設為 22)transport=gateway
如果你在 macOS 上遇到問題,可以使用內建工具檢查:
# 瀏覽所有實例dns-sd -B _openclaw-gw._tcp local.
# 解析特定實例 (請替換 \<instance\>)dns-sd -L "\<instance\>" _openclaw-gw._tcp local.如果可以瀏覽但無法解析,通常是 LAN 政策或 mDNS 解析器的問題。
- Bonjour 無法跨網路:請改用 Tailnet 或 SSH,因為 multicast 預設無法跨越網路邊界。
- Multicast 被阻擋:部分 Wi-Fi 網路(如公司或公共網路)會禁用 mDNS。
- 休眠或網路切換:macOS 可能會暫時弄丟 mDNS 結果,請嘗試重新整理。
- 解析失敗:保持機器名稱簡單,避開表情符號或特殊標點符號,然後重啟 Gateway。
- 轉義字元 (
\032):如果你在名稱中看到\032,那是空格的轉義,屬於正常現象。
如果你在設定過程遇到任何困難,可以詢問 AI Setup Assistant。
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。