概述
OpenClaw 默认绑定在本地回环地址(127.0.0.1),外部设备无法直接访问。Tailscale 提供了安全的远程访问方案,无需暴露公网端口即可从任意设备连接你的 OpenClaw 实例。
三种访问模式
Serve 模式(Tailnet 内部访问)
仅限 Tailscale 网络(Tailnet)内的设备访问,安全性最高:
# 启用 Tailscale Serve
tailscale serve https / http://127.0.0.1:18789
配置说明:
- OpenClaw 继续绑定在
127.0.0.1:18789(回环地址不变) - Tailscale 在本地创建反向代理
- 只有加入同一 Tailnet 的设备可以访问
适用场景:个人多设备使用,家庭网络内共享。
Funnel 模式(公网 HTTPS 访问)
通过 Tailscale Funnel 向公网暴露 HTTPS 端口:
# 启用 Funnel 公网访问
tailscale funnel https / http://127.0.0.1:18789
Funnel 端口限制:仅支持以下端口:
- 443(默认 HTTPS)
- 8443
- 10000
适用场景:需要从 Tailnet 外部访问(如给朋友临时分享)。
Off 模式(关闭远程访问)
# 关闭 Serve/Funnel
tailscale serve off
恢复为仅本地访问。
前置要求
使用 Tailscale 远程访问前需确认:
- Tailscale 版本:v1.38.3 或更高
- MagicDNS:已在 Tailscale 管理后台启用
- 登录状态:当前设备已加入 Tailnet
# 检查 Tailscale 版本
tailscale version
# 检查连接状态
tailscale status
认证方式
Token 认证
适合 API 调用和自动化场景:
// ~/.openclaw/openclaw.json
{
"auth": {
"method": "token",
"token": "${OPENCLAW_AUTH_TOKEN}"
}
}
生成 Token 后在客户端请求中携带:
curl -H "Authorization: Bearer your-token-here" \
https://your-machine.tail-xxxxx.ts.net/api/status
密码认证
适合浏览器访问 Web 控制面板:
{
"auth": {
"method": "password",
"username": "admin",
"password": "${OPENCLAW_ADMIN_PASSWORD}"
}
}
Tailscale Identity Headers
启用 allowTailscale 后,OpenClaw 可以信任 Tailscale 提供的身份信息头:
{
"auth": {
"allowTailscale": true
}
}
Tailscale 会在请求中注入以下头信息:
Tailscale-User-Login:用户登录名Tailscale-User-Name:用户显示名Tailscale-User-Profile-Pic:头像 URL
这些信息可用于自动识别访问者身份,免去手动登录步骤。
Serve 配置详解
Serve 模式的关键点是保持 OpenClaw 的回环绑定不变:
外部设备 ──> Tailscale Serve (HTTPS) ──> 127.0.0.1:18789 (OpenClaw)
这意味着即使 Tailscale 出现问题,OpenClaw 本身不会暴露到局域网或公网。
SSH 隧道替代方案
如果不方便安装 Tailscale,可以使用 SSH 隧道作为替代:
# 从远程设备建立 SSH 隧道
ssh -L 18789:127.0.0.1:18789 user@your-server
# 然后在本地访问
# http://127.0.0.1:18789
结合 Tailscale SSH,无需管理 SSH 密钥:
# Tailscale SSH(免密钥)
ssh user@your-machine.tail-xxxxx.ts.net \
-L 18789:127.0.0.1:18789
安全最佳实践
- 优先使用 Serve 模式:除非有明确需求,不要使用 Funnel 暴露到公网
- 启用认证:远程访问必须配置 Token 或密码认证
- 定期轮换 Token:每 90 天更新一次认证 Token
- 审查 Tailnet ACL:通过 Tailscale 管理后台限制哪些设备可以访问
// Tailscale ACL 示例(在 Tailscale 管理后台配置)
{
"acls": [
{
"action": "accept",
"src": ["group:admins"],
"dst": ["tag:openclaw:443"]
}
]
}
故障排查
Serve 启动后无法访问?
- 确认 MagicDNS 已启用:
tailscale debug prefs | grep MagicDNS - 检查 OpenClaw 是否在 18789 端口正常运行
Funnel 返回 502 错误?
- 确认端口号在允许列表中(443/8443/10000)
- 检查 OpenClaw 服务是否正常响应本地请求
Identity Headers 未注入?
- 确认配置了
allowTailscale: true - 确认请求来自 Tailscale 网络(非本地直连)