Khám phá Bonjour / mDNS
OpenClaw uses Bonjour (mDNS / DNS‑SD) as a LAN‑only convenience to discover an active Gateway (WebSocket endpoint). It is best‑effort and does not replace SSH or Tailnet-based connectivity.Bonjour phạm vi rộng (Unicast DNS‑SD) qua Tailscale
If the node and gateway are on different networks, multicast mDNS won’t cross the boundary. You can keep the same discovery UX by switching to unicast DNS‑SD (“Wide‑Area Bonjour”) over Tailscale. Các bước tổng quát:- Chạy một máy chủ DNS trên máy chủ gateway (truy cập được qua Tailnet).
- Công bố các bản ghi DNS‑SD cho
_openclaw-gw._tcpdưới một zone riêng (ví dụ:openclaw.internal.). - Cấu hình split DNS của Tailscale để domain đã chọn được phân giải qua máy chủ DNS đó cho các máy khách (bao gồm iOS).
openclaw.internal. is just an example.
iOS/Android nodes browse both local. and your configured wide‑area domain.
Cấu hình Gateway (khuyến nghị)
Thiết lập máy chủ DNS một lần (máy chủ gateway)
- lắng nghe cổng 53 chỉ trên các giao diện Tailscale của gateway
- phục vụ domain đã chọn (ví dụ:
openclaw.internal.) từ~/.openclaw/dns/<domain>.db
Cài đặt DNS của Tailscale
Trong bảng điều khiển quản trị Tailscale:- Thêm một nameserver trỏ tới IP tailnet của gateway (UDP/TCP 53).
- Thêm split DNS để domain khám phá của bạn sử dụng nameserver đó.
_openclaw-gw._tcp trong domain khám phá của bạn mà không cần multicast.
Bảo mật listener của Gateway (khuyến nghị)
The Gateway WS port (default18789) binds to loopback by default. For LAN/tailnet
access, bind explicitly and keep auth enabled.
Đối với thiết lập chỉ tailnet:
- Đặt
gateway.bind: "tailnet"trong~/.openclaw/openclaw.json. - Khởi động lại Gateway (hoặc khởi động lại ứng dụng menubar trên macOS).
Thành phần quảng bá
Chỉ Gateway quảng bá_openclaw-gw._tcp.
Loại dịch vụ
_openclaw-gw._tcp— beacon truyền tải của gateway (được dùng bởi các node macOS/iOS/Android).
Khóa TXT (gợi ý không bí mật)
Gateway quảng bá các gợi ý nhỏ không bí mật để giúp luồng UI thuận tiện:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(chỉ khi TLS được bật)gatewayTlsSha256=<sha256>(chỉ khi TLS được bật và có fingerprint)canvasPort=<port>(chỉ khi canvas host được bật; mặc định18793)sshPort=<port>(mặc định là 22 khi không ghi đè)transport=gatewaycliPath=<path>(tùy chọn; đường dẫn tuyệt đối tới một entrypointopenclawcó thể chạy)tailnetDns=<magicdns>(gợi ý tùy chọn khi Tailnet khả dụng)
- Bản ghi TXT của Bonjour/mDNS là không được xác thực. Client không được coi TXT là định tuyến có thẩm quyền.
- Client nên định tuyến bằng endpoint dịch vụ đã được phân giải (SRV + A/AAAA). Chỉ xem
lanHost,tailnetDns,gatewayPortvàgatewayTlsSha256là các gợi ý. - TLS pinning tuyệt đối không được cho phép
gatewayTlsSha256được quảng bá ghi đè lên pin đã lưu trước đó. - Các node iOS/Android nên coi các kết nối trực tiếp dựa trên discovery là chỉ TLS và yêu cầu người dùng xác nhận rõ ràng trước khi tin cậy fingerprint lần đầu.
Gỡ lỗi trên macOS
Nếu duyệt hoạt động nhưng phân giải thất bại, thường là do chính sách LAN hoặc vấn đề với trình phân giải mDNS.-
Duyệt các instance:
-
Phân giải một instance (thay
<instance>):
Gỡ lỗi trong log của Gateway
The Gateway writes a rolling log file (printed on startup asgateway log file: ...). Look for bonjour: lines, especially:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...
Gỡ lỗi trên node iOS
Node iOS sử dụngNWBrowser để khám phá _openclaw-gw._tcp.
Log bao gồm các chuyển trạng thái của trình duyệt và thay đổi tập kết quả.
- Settings → Gateway → Advanced → Discovery Debug Logs
- Settings → Gateway → Advanced → Discovery Logs → tái hiện → Copy
Tên instance đã escape (\032)
- Bonjour không vượt qua mạng: dùng Tailnet hoặc SSH.
- Multicast bị chặn: một số mạng Wi‑Fi vô hiệu hóa mDNS.
- Ngủ / thay đổi giao diện: macOS có thể tạm thời làm rớt kết quả mDNS; hãy thử lại.
- Browse works but resolve fails: keep machine names simple (avoid emojis or punctuation), then restart the Gateway. The service instance name derives from the host name, so overly complex names can confuse some resolvers.
Tên instance đã escape (\032)
Bonjour/DNS‑SD thường escape các byte trong tên instance dịch vụ thành các chuỗi
\DDD dạng thập phân (ví dụ: dấu cách trở thành \032).
OPENCLAW_DISABLE_BONJOUR=1vô hiệu hóa quảng bá (legacy:OPENCLAW_DISABLE_BONJOUR).gateway.bindtrong~/.openclaw/openclaw.jsonđiều khiển chế độ bind của Gateway.
Tài liệu liên quan
- Chính sách khám phá và lựa chọn truyền tải: Discovery
- Ghép cặp node + phê duyệt: Gateway pairing
OPENCLAW_SSH_PORTghi đè cổng SSH được quảng bá trong TXT (legacy:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNScông bố gợi ý MagicDNS trong TXT (legacy:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHghi đè đường dẫn CLI được quảng bá (legacy:OPENCLAW_CLI_PATH).
Tài liệu liên quan
- Chính sách khám phá và lựa chọn truyền tải: Discovery
- Ghép cặp node + phê duyệt: Gateway pairing