首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenClaw 设备发现机制指南:Bonjour/mDNS 与 Tailscale 集成

OpenClaw 设备发现机制指南:Bonjour/mDNS 与 Tailscale 集成

作者头像
jack.yang
发布2026-03-13 08:26:09
发布2026-03-13 08:26:09
5480
举报

在分布式 AI 网关架构中,如何让用户在局域网或虚拟网络中零配置地发现可用网关,是提升用户体验的关键。OpenClaw 采用 Bonjour (mDNS/DNS-SD) 作为核心发现协议,并深度集成 Tailscale 以实现跨网络的广域发现。

核心设计原则

  • 便利性优先:自动发现减少手动 IP 配置。
  • 安全不妥协:发现信息仅用于 UI 提示,绝不作为权威路由或信任依据。
  • 尽力而为 (Best Effort):mDNS 受网络环境影响大,始终提供手动连接/Tailnet 作为备用方案。
  • 无状态发现:TXT 记录不包含敏感认证信息。

1. 核心机制:服务广播与 TXT 记录

OpenClaw 网关通过 _openclaw-gw._tcp 服务类型进行广播。客户端通过解析 SRV 记录 获取连接端点,通过 TXT 记录 获取辅助提示信息。

TXT 记录详解

image
image

关键安全警示

  1. TXT 记录不可信:mDNS/TXT 记录未经过加密或签名,极易被中间人伪造。
    • 正确做法:客户端必须使用 DNS-SD 解析出的 SRV + A/AAAA 记录 进行实际连接。
    • 错误做法:直接信任 lanHostgatewayPort 进行路由。
  2. TLS 指纹固定 (Pinning)
    • 广告的 gatewayTlsSha256 绝不能 自动覆盖客户端已存储的信任指纹。
    • iOS/Android 客户端在首次连接基于发现的网关时,必须强制用户手动确认证书指纹。

2. 配置实战:从最小化到全功能

openclaw.json 中控制发现行为。

模式一:最小化暴露 (推荐生产环境)

仅广播必要信息,隐藏 SSH/CLI 路径等细节。

代码语言:javascript
复制
{
  discovery: {
    mdns: { mode: "minimal" } 
  }
}

模式二:完全功能 (家庭/开发环境)

广播所有辅助信息,方便多设备无缝连接。

代码语言:javascript
复制
{
  discovery: {
    mdns: { mode: "full" },
    wideArea: { enabled: true } // 启用广域 DNS-SD
  },
  gateway: {
    bind: "tailnet" // 推荐:仅监听 Tailscale 接口
  }
}

模式三:完全禁用

适用于纯公网反向代理或高安全隔离环境。

代码语言:javascript
复制
{
  discovery: {
    mdns: { mode: "off" }
  }
}

环境变量覆盖

无需修改配置文件,临时调整行为:

  • OPENCLAW_DISABLE_BONJOUR=1: 强制禁用广播。
  • OPENCLAW_SSH_PORT: 覆盖广告的 SSH 端口。
  • OPENCLAW_TAILNET_DNS: 强制发布 MagicDNS 提示。

3. 广域发现:跨越网络边界 (Wide-Area Bonjour)

标准 mDNS 无法跨越路由器。OpenClaw 通过 单播 DNS-SD (Unicast DNS-SD) 结合 Tailscale Split-DNS 实现跨网络发现。

架构原理

  1. 网关侧:运行内置/CoreDNS 服务器,监听 Tailscale 接口 (UDP/TCP 53)。
  2. 记录发布:在专用域 (如 openclaw.internal) 下发布 _openclaw-gw._tcp 记录。
  3. 客户端侧:配置 Tailscale Split-DNS,将该域解析请求转发至网关 DNS。

 一键部署

在网关主机执行:

代码语言:javascript
复制
openclaw dns setup --apply

自动安装 CoreDNS,配置监听,并生成区域文件 ~/.openclaw/dns/<domain>.db

验证步骤

在任意 Tailscale 节点验证:

代码语言:javascript
复制
# 1. 浏览服务 (macOS/Linux)
dns-sd -B _openclaw-gw._tcp openclaw.internal.

# 2. 直接 DNS 查询
dig @<GATEWAY_TAILNET_IP> -p 53 _openclaw-gw._tcp.openclaw.internal PTR +short

Tailscale 控制台配置

  1. Nameservers: 添加网关的 Tailnet IP (端口 53)。
  2. Split DNS: 添加规则 openclaw.internal -> 指向上述 Nameserver。 配置生效后,iOS/Android 即可在无多播环境下自动发现网关。

4. 故障排查指南

常用调试命令

image
image

常见问题矩阵

image
image

iOS 节点调试

  1. 进入 设置 → 网关 → 高级
  2. 开启 Discovery Debug Logs
  3. 复现问题后,点击 Copy Logs 分析浏览器状态机。

5. 典型部署场景

场景 A:家庭多设备 (LAN)

目标:手机、平板、电脑自动发现。

代码语言:javascript
复制
{
  discovery: { mdns: { mode: "full" } },
  gateway: { bind: "lan", auth: { mode: "token" } }
}

场景 B:企业团队共享 (Tailnet)

目标:分布在不同地点的团队成员安全访问。

代码语言:javascript
复制
{
  discovery: { 
    mdns: { mode: "minimal" }, 
    wideArea: { enabled: true } 
  },
  gateway: { 
    bind: "tailnet", 
    auth: { mode: "password" } 
  }
}

场景 C:远程 VPS (公网代理)

目标:通过域名访问,无需内部发现。

代码语言:javascript
复制
{
  discovery: { mdns: { mode: "off" } },
  gateway: { 
    bind: "loopback", 
    remote: { url: "wss://api.example.com" } 
  }
}

6. 安全加固最佳实践

Do's (推荐)

  1. 优先 Tailnet 绑定bind: "tailnet" 可天然隔离公网扫描。
  2. 最小化信息:生产环境使用 mode: "minimal",避免泄露 CLI 路径或 SSH 端口。
  3. 强制 TLS 验证:客户端必须校验证书指纹,严禁静默信任广播指纹。
  4. 简化主机名:使用 hostname.local 格式,避免 Emoji 或特殊符号。

Don'ts (避免)

  1. 依赖发现作为唯一入口:始终保留手动 IP/域名连接方式。
  2. 在公网接口广播 mDNS:切勿在 0.0.0.0 或非受信 LAN 开启 mode: "full"
  3. 自动更新信任锚:绝不允许广播的 SHA256 覆盖本地已固定的证书指纹。

结语

OpenClaw 的发现机制在极致便利严格安全之间取得了平衡。

  • 局域网内,它利用成熟的 Bonjour 协议实现“零配置”体验。
  • 广域网中,它借助 Tailscale 的单播 DNS-SD 打破网络边界。

记住:发现只是引路人,连接必须验明正身。 合理配置 mdns.mode 并结合 Tailscale 的安全隧道,你将拥有一个既易用又坚固的 AI 网关网络。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 核心机制:服务广播与 TXT 记录
    • TXT 记录详解
    • 关键安全警示
  • 2. 配置实战:从最小化到全功能
    • 模式一:最小化暴露 (推荐生产环境)
    • 模式二:完全功能 (家庭/开发环境)
    • 模式三:完全禁用
    • 环境变量覆盖
  • 3. 广域发现:跨越网络边界 (Wide-Area Bonjour)
    • 架构原理
    •  一键部署
    • 验证步骤
    • Tailscale 控制台配置
  • 4. 故障排查指南
    • 常用调试命令
    • 常见问题矩阵
    • iOS 节点调试
  • 5. 典型部署场景
    • 场景 A:家庭多设备 (LAN)
    • 场景 B:企业团队共享 (Tailnet)
    • 场景 C:远程 VPS (公网代理)
  • 6. 安全加固最佳实践
    • Do's (推荐)
    • Don'ts (避免)
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档