
🛡️ 家庭宽带下安全访问 OpenClaw 控制台的一种方法
家庭宽带下安全访问 OpenClaw 控制台的一种方法
前提:你已有一台 VPS(境外,固定公网 IP)和一个域名。如果没有,这篇文章不用看了——不是目标读者。
用域名和 VPS 搭建一套隐蔽的远程访问通道,核心想法:让服务看起来像普通网站,只有通过正确的方式才能访问。
说明:本文以 OpenClaw 为例,这套架构同样适用于任何需要隐蔽访问的家庭服务(如 NAS 管理后台、Home Assistant、自建 Git 等)。
选型:为什么选这套?
远程访问家庭服务有很多技术路径,各有取舍。这里聊聊主流方案的优缺点,以及我为什么最终选了这套。
对比一览
| 方案 | 前置条件 | 成本 | 隐蔽性 | 适用场景 |
|---|---|---|---|---|
| 这套方案 | 需VPS+域名 | 需VPS | 最高 | 极致隐蔽、防探测 |
| Cloudflare Tunnel | 无 | 免费 | 中 | 公开访问、接受解密 |
| Tailscale | 无 | 免费 | 低 | 仅内网访问 |
| FRP反向代理 | 需VPS | 需VPS | 低 | 公开访问 |
| ZeroTier | 无 | 免费 | 中 | 跨国组网 |
| SSH反向隧道 | 需VPS | 需VPS | 中 | 临时访问 |
| IPv6+DDNS | 无 | 免费 | 最低 | 无隐私顾虑 |
| NAS厂商方案 | 无 | 免费 | 低 | 已有NAS |
为什么选这套?
在已有 VPS 和域名的前提下,这套架构能帮你:
- 服务不直接暴露端口,通过多层伪装降低探测风险
- 域名与流量双重伪装,探测者无法发现这里有 OpenClaw Gateway 服务
- 多级回落机制,探测者看到的是"需要认证的服务"
安全边界:VPS 是信任锚点和安全核心节点(建议:禁用 SSH 密码登录 + 配置防火墙 + 定期更新系统 + 最小化开放端口)。如果 VPS 被攻破,攻击者可以获取所有凭证,并通过 Tailscale 访问 Tailnet 中的其他设备。建议在 Tailscale 管理后台配置 ACL,严格限制 VPS 设备的访问权限(仅允许访问必要的内网资源)。
什么时候考虑其他选择?
| 场景 | 推荐方案 |
|---|---|
| 仅内网访问 | Tailscale |
| 公开访问 | Cloudflare Tunnel / FRP |
| 有IPv6、无隐私顾虑 | IPv6+DDNS |
| 临时访问 | SSH反向隧道 |
为什么部署在家里而不是 VPS?
- 家里有闲置电脑,配置比 VPS 高
- 廉价 VPS 性能不满足需求
- 高配 VPS 成本太高
不适用:家庭主机已是 NAS(群晖、TrueNAS 等),已有自己的防护方案。
网络环境
家庭宽带的实际情况:
- 动态 IPv4——运营商分配的是动态地址,重启路由器可能就变了;若需固定公网 IPv4,需单独申请,流程繁琐且未必获批
- IPv6 维护困难——运营商虽下发 IPv6 地址,但通常是动态分配,地址变化后需重新配置 DNS 解析;同时家庭 PC 的防火墙规则配置繁琐,各系统实现不一,排查问题成本高
- 端口封禁——80、443、8080 等常用端口可能被封
- 没有固定公网 IPv4——难以直接从外网访问
国内还有额外限制:
- ICP 备案——如果域名解析到大陆服务器,需要工信部 ICP 备案
- 公安备案——涉及交互功能的网站还需要公安网安备案
- 域名实名——国内注册域名需要实名认证
直接暴露 OpenClaw Gateway 到公网,即使设了密码,也有风险:端口扫描、暴力破解、流量分析。
设计思路
核心想法:让服务看起来像普通网站,只有通过正确的方式才能访问。
具体来说:
- OpenClaw Gateway:只监听本地 127.0.0.1,不对外暴露
- Tailscale serve:把本地服务映射到私有网络
- Trojan 代理:TLS 伪装代理协议,流量外表像正常 HTTPS
- 多级回落:探测流量得到正常响应或无服务
最终效果:
- 普通用户访问你的域名 → 看到正常网站
- 你通过 Trojan 代理访问 → 进入 OpenClaw 控制台
前提:已有成熟的 Trojan 伪装方案
本文不是从零开始的教程。假设你已经:
- 有一台境外 VPS(固定公网 IP)
- 有一个域名,已配置好 DNS 解析
- 已经部署了 Trojan 伪装方案(NGINX Stream + V2Ray-Trojan + 回落端点)
- 熟悉基本的 Linux 服务器运维
本文是在此基础上的扩展:在已有的 Trojan 伪装架构中,添加 OpenClaw Gateway 的远程访问能力。
复杂度评估:
- 核心配置只有两步:OpenClaw 本地监听 + Tailscale Serve
- NGINX 反代配置是标准的反向代理模板
- 前提是已有成熟的 Trojan 方案,无需从零搭建
为什么复杂度高但实施难度低?
- 架构涉及多层(NGINX/V2Ray/Tailscale/OpenClaw),看起来复杂
- 但每一步都是在成熟方案上的标准化扩展,有固定模板
- 只要已有 Trojan 伪装方案在运行,添加 OpenClaw 只需少量配置
架构一览
流量路径:
| 入口域名 | 协商结果 | 最终目标 | 用途 |
|---|---|---|---|
| www.example.com | 无需协商 | VuePress 静态文档 :8848 | 公开文档展示 |
| game.example.com | 成功 | 互联网直连(代理上网) | 科学上网 |
| game.example.com | 失败 | 回落端点 :8849(401 拒绝) | 探测者以为无权访问 |
| claw.example.com | 成功 | 本地反代 :8850 → Tailscale → OpenClaw | 远程访问 |
| claw.example.com | 失败 | 回落端点 :8849(401 拒绝) | 探测者以为无权访问 |
关键点:
- NGINX Stream 做 SNI 路由,流量入口统一 443
- 三域名分流:公开网站 / 游戏代理 / OpenClaw 各走各的
- V2Ray-Trojan TLS 伪装代理 + 多级回落
- Tailscale WireGuard 端到端加密,即使 VPS 被攻破也无法解密
- 回落端点 返回 401,伪装成需要认证的服务
配置步骤
第一步:OpenClaw Gateway本地监听
OpenClaw Gateway默认就只监听本地,确认配置:
// ~/.openclaw/openclaw.json
{
gateway: {
bind: "loopback", // 只监听127.0.0.1
port: 18789, // 默认端口
auth: {
mode: "token",
token: "your-token"
}
}
}为什么要本地监听? 因为我们要让Tailscale来"背"这个流量,而不是直接暴露。
第二步:Tailscale打通内网
OpenClaw对Tailscale有原生支持:
{
gateway: {
tailscale: {
mode: "serve" // 仅限Tailnet内访问
},
auth: {
allowTailscale: true
}
}
}或命令行启动:
openclaw gateway --tailscale serve效果:你的电脑在Tailscale网络里有了内网地址,同一网络内的设备可以访问。
关于 auth.token 和 auth.allowTailscale:
| 配置项 | 作用 | 本架构中的配置 |
|---|---|---|
auth.token | Gateway 访问令牌 | 必需——与 Tailscale 身份形成"或"逻辑的认证方式之一 |
auth.allowTailscale | 信任 Tailscale 身份,允许其绕过 token 验证 | 必需——启用 Tailscale 身份认证 |
认证逻辑说明:
根据 OpenClaw 文档:
auth.token: Required by default for gateway access (unless using Tailscale Serve identity)
当配置了 tailscale: { mode: "serve" } 和 allowTailscale: true 时:
- OpenClaw 通过 Tailscale 网络提供服务
- Tailscale 身份被视为受信任的身份源
- 认证逻辑为"或"关系:
Tailscale 身份验证或auth.token 验证,任一通过即可访问 - token 始终必需:它是配置项,不能省略,只是在使用 Tailscale 身份时可以不提供 token 值
为什么两者都必需?
| 配置 | 作用 |
|---|---|
auth.token | 定义认证凭证(即使不直接提供 token 值,配置项本身必须存在) |
auth.allowTailscale | 启用 Tailscale 身份作为等效的认证方式 |
边界场景:
| 场景 | Tailscale 正常 | Tailscale 异常 |
|---|---|---|
| 有 token 值 | ✅ 可通过 Tailscale 或 token 访问 | ✅ 可通过 token 访问 |
| 无 token 值 | ✅ 可通过 Tailscale 访问 | ❌ 服务完全不可用 |
- 如果 Tailscale 服务异常(如守护进程崩溃、网络故障),且未配置 token 值,将导致服务完全不可访问
- 建议同时配置 token 值作为备用认证方式,避免单点故障
在本架构中:信任 Tailscale 身份意味着你的 Tailnet 安全策略成为第一道防线。确保:
- Tailnet 只有可信设备加入
- 配置 Tailscale ACL 严格限制 VPS 设备的访问权限
Tailscale ACL 配置示例(在 Tailscale 管理后台配置):
{
"hosts": {
"vps": "100.x.y.z/32", // VPS 的 Tailscale IP
"home-pc": "100.a.b.c/32" // 家里电脑的 Tailscale IP
},
"acls": [
// VPS 只能访问家里电脑的 OpenClaw 端口,不能访问其他资源
{"action": "accept", "src": ["vps"], "dst": ["home-pc:18789"]},
// 你的其他设备可以访问完整 Tailnet
{"action": "accept", "src": ["autogroup:members"], "dst": ["autogroup:members:*"]}
],
"tagOwners": {
// 可选:给 VPS 打标签,进一步限制权限
"tag:relay": ["autogroup:admin"]
}
}ACL 设计原则:
- 最小权限:VPS 只能访问必要的内网资源(OpenClaw Gateway 端口)
- 隔离信任:即使 VPS 被攻破,攻击者也无法通过 Tailscale 访问其他设备
- 备份访问:保留管理员设备的完整访问权限,便于紧急情况下接管
第三步:HTTP 80 → HTTPS 443 全局重定向
所有 HTTP 明文流量强制重定向到 HTTPS,确保安全性:
# /etc/nginx/conf.d/redirect.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
# 全部重定向到 HTTPS
return 301 https://$host$request_uri;
}效果:
- 任何域名访问
http://*→ 自动跳转到https://* - 防止明文传输敏感信息
- 符合现代 Web 安全标准
第四步:NGINX Stream SNI 路由
NGINX Stream 模块做四层 SNI 分流(/etc/nginx/nginx.conf 或 stream.conf):
stream {
# SNI 映射表
map $ssl_preread_server_name $backend {
www.example.com 127.0.0.1:8848;
game.example.com 127.0.0.1:10086;
claw.example.com 127.0.0.1:10086;
default 127.0.0.1:8848;
}
# 443 入口
server {
listen 443;
ssl_preread on;
proxy_pass $backend;
}
}关键点:
ssl_preread不解密 TLS,只读取 SNI 字段game.*和claw.*都路由到 V2Ray-Trojan :10086- V2Ray 内部通过不同用户密码区分用途
TLS 处理说明:
| 组件 | TLS 处理 | 证书说明 |
|---|---|---|
| NGINX Stream :443 | 透传(不解密) | ssl_preread on 只读取 SNI,不做 TLS 终止 |
| NGINX HTTP :8848 | 终止(解密) | 使用 Let's Encrypt www.example.com 证书 |
| V2Ray-Trojan :10086 | 终止(解密) | 使用 Let's Encrypt game.example.com + claw.example.com 证书(可用泛域名 *.example.com) |
| 回落端点 :8849 | 终止(解密) | 使用 Let's Encrypt 默认证书(任意域名) |
| 本地反代 :8850 | 无 TLS(本地 HTTP) | 代理到 Tailscale HTTPS,本地无需证书 |
| Tailscale Serve | 端到端 HTTPS | Tailscale 自动签发 Let's Encrypt 证书 |
证书配置:
- 公网部分(NGINX/V2Ray):使用 Let's Encrypt 证书,建议申请泛域名证书
*.example.com简化管理 - Tailscale 部分:Tailscale Serve 自动签发
*.ts.net证书,无需手动配置
第五步:NGINX HTTP 静态网站(www)
为 www 域名配置正常的 HTTPS 静态网站:
server {
listen 127.0.0.1:8848 ssl;
server_name www.example.com;
ssl_certificate /path/to/www.example.com/cert.pem;
ssl_certificate_key /path/to/www.example.com/key.pem;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}效果:普通用户访问 www.example.com 看到正常网站。
第六步:V2Ray-Trojan 配置(game + claw)
V2Ray 配置 Trojan 协议,单实例多用户:
{
"inbounds": [
{
"tag": "trojan",
"port": 10086,
"protocol": "trojan",
"settings": {
"clients": [
{"password": "game-password", "email": "game-user"},
{"password": "claw-password", "email": "claw-user"}
],
"fallbacks": [
{"dest": "127.0.0.1:8849"}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"certificates": [
{"certificateFile": "/path/to/game.example.com/cert.pem",
"keyFile": "/path/to/game.example.com/key.pem"},
{"certificateFile": "/path/to/claw.example.com/cert.pem",
"keyFile": "/path/to/claw.example.com/key.pem"}
]
}
}
}
],
"routing": {
"rules": [
{"type": "field", "user": ["claw-user"], "outboundTag": "claw-out"}
]
},
"outbounds": [
{"tag": "claw-out", "protocol": "freedom", "settings": {"redirect": "127.0.0.1:8850"}},
{"tag": "direct", "protocol": "freedom"}
]
}路由逻辑:
claw-user(密码正确) → 本地反代 :8850 → Tailscale → OpenClawclaw-user(密码错误) → 回落到 :8849 → 返回 401(伪装成需要认证的服务)game-user(密码正确) → 直连出口(代理上网)game-user(密码错误) → 回落到 :8849 → 返回 401(伪装成需要认证的服务)
证书配置:V2Ray 支持多证书,game.* 和 claw.* 域名分别配置独立证书。也可使用通配符证书 *.example.com 简化配置。
第七步:回落端点(Basic Auth Always Reject)
V2Ray-Trojan 的回落目标统一配置为 Basic Auth Always Reject:
# /etc/nginx/conf.d/fallback.conf
server {
listen 127.0.0.1:8849 ssl;
server_name _;
ssl_certificate /path/to/example.com/cert.pem;
ssl_certificate_key /path/to/example.com/key.pem;
location / {
auth_basic "Service";
auth_basic_user_file /dev/null; # 空文件 = 永远拒绝
}
}工作原理:
- 返回 401 Unauthorized,浏览器/客户端弹出密码输入框
- 用户输入任何用户名密码都会被拒绝
- 密码永远错误,无法通过认证
效果:
- 攻击者看到"需要认证的服务",会尝试输入密码
- 无论输入什么密码,都会被拒绝
- 伪装成正常的保护服务,攻击者无法判断是否真的有服务
- 比 404/444 更自然,不会暴露"这里什么都没有"
第八步:本地反代到 Tailscale Serve
NGINX 反代到 Tailscale Serve 的 HTTPS 地址:
server {
listen 127.0.0.1:8850;
location / {
# Tailscale Serve 提供的 HTTPS 地址
# 格式:https://<machine-name>.<tailnet-name>.ts.net
proxy_pass https://your-machine.your-tailnet.ts.net;
proxy_ssl_verify off; # Tailscale 证书由 Tailscale CA 签发
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}为什么是 HTTPS 地址?
Tailscale Serve 启用 HTTPS 后,会自动为你的机器生成域名:
- 格式:
https://<machine-name>--<port>.<tailnet-name>.ts.net(例如https://home-pc--18789.mytailnet.ts.net) - 证书由 Tailscale 自动管理(Let's Encrypt)
- Tailscale 证书由 Tailscale CA 签发,客户端天然信任,无需手动配置
为什么不需要额外的 Basic Auth? OpenClaw Gateway 本身已有 auth 机制,Trojan 密码验证通过后即可访问 Gateway,无需再加一层认证。
多用户管理:
| 角色 | Trojan 密码 | 权限 |
|---|---|---|
| 隧道使用者 | game-password | 只能代理上网,无法访问 OpenClaw |
| 管理者 | claw-password | 可以访问 OpenClaw Gateway |
效果:
- 隧道使用者只需要知道
game-password,就可以通过 VPS 代理上网 - 管理者需要知道
claw-password(Trojan),即可访问 OpenClaw Gateway - OpenClaw Gateway 自身有 auth 机制,提供最终访问控制
安全性分析
威胁场景分析
1. 流量侦测(Traffic Analysis)
威胁:攻击者监控你的网络流量,试图通过流量模式判断你在做什么。
| 攻击手段 | 防御措施 | 效果 |
|---|---|---|
| 流量大小分析 | Trojan 流量填充(padding) | 流量大小随机化 |
| 流量时序分析 | 多路复用 + 随机延迟 | 无固定时序特征 |
| 连接模式分析 | 长连接复用 | 减少握手次数 |
| 目标IP分析 | VPS 作为统一入口 | 只看到 VPS IP |
为什么安全?
- 所有流量外表看起来就是正常的 HTTPS 请求
- 攻击者只能看到"你在访问某个网站",无法判断具体内容
- V2Ray-Trojan 支持流量填充,消除流量大小特征
2. 中间人攻击(Man-in-the-Middle)
威胁:攻击者拦截并可能修改你和服务器之间的通信。
| 攻击层面 | 防御措施 | 防御原理 |
|---|---|---|
| TLS 层 | 强制 TLS 1.3 + 证书锁定 | 无法解密或伪造证书 |
| Trojan 层 | 密码验证 + HMAC | 无法伪造 Trojan 协议 |
| Gateway 层 | Gateway 自身 auth | 访问控制的最后一道防线 |
为什么安全?
- 多层验证确保"突破一层还有一层"
- 但 VPS 是安全核心节点,被攻破后攻击者可获取所有凭证
重要提醒:VPS 加入了 Tailnet,如果 VPS 被攻破,攻击者可通过 Tailscale 访问 Tailnet 中其他设备。建议在 Tailscale 管理后台配置 ACL,限制 VPS 设备的访问权限。
3. 内容截获(Content Interception)
威胁:攻击者尝试读取你传输的数据内容。
| 截获位置 | 能看到什么 | 说明 |
|---|---|---|
| 本地网络 | 加密的 TLS 流量 | 没有私钥无法解密 |
| 运营商网络 | 加密的 TLS 流量 | 同上 |
| VPS | 解密后的流量 | 可看到请求内容 |
为什么安全?
- 本地网络和运营商网络层面,流量是加密的
- 但 VPS 可以看到解密后的流量(VPS 是安全核心节点)
4. 特征识别(Fingerprinting)
威胁:攻击者通过协议特征、握手模式等识别出你在使用代理软件。
| 识别手段 | 防御措施 | 效果 |
|---|---|---|
| 协议指纹 | Trojan 伪装成正常 HTTPS | 无法区分 |
| SNI 特征 | 三域名分流 + 正常域名 | 看起来像访问正常网站 |
| 证书指纹 | 通配符证书或独立证书 | 每个域名独立证书 |
| 回落响应 | 返回 401 Basic Auth | 探测者以为无权访问 |
| 端口扫描 | 全回落到正常服务 | 扫描结果就是正常网站 |
主动探测防御:
攻击者探测 www.example.com → 正常 HTTPS 网站
攻击者探测 game.example.com → V2Ray 解析失败 → 返回 401(无权访问)
攻击者探测 claw.example.com → V2Ray 解析失败 → 返回 401(无权访问)
攻击者探测 随机端口 → 被防火墙拦截为什么安全?
- Trojan 协议设计目标就是"伪装成 HTTPS"
- 即使被主动探测,回落机制让攻击者一无所获
- 三域名隔离让不同用途的流量互不干扰
分层防护总结
| 层 | 保护手段 | 防御威胁 |
|---|---|---|
| 应用层 | Gateway 本地监听 | 直接暴露 |
| 网络层 | Tailscale WireGuard | 内容截获、中间人 |
| 协议层 | V2Ray-Trojan TLS | 特征识别、流量侦测 |
| 路由层 | SNI 三域名分流 | 特征识别、主动探测 |
| 混淆层 | 回落端点返回 401 Basic Auth | 主动探测 |
| 回落层 | 多级 fallback | 主动探测、扫描 |
三域名隔离的意义
| 域名 | 用途 | 回落目标 | 安全效果 |
|---|---|---|---|
www | 公开网站 | 静态资源 | 正常流量,无代理特征 |
game | 代理入口 | 回落端点 | 探测者以为无权访问 |
claw | OpenClaw | 回落端点 | 探测者以为无权访问 |
与其他方案对比
| 方案 | 流量侦测 | 中间人 | 内容截获 | 特征识别 |
|---|---|---|---|---|
| 直接暴露端口 | ❌ | ❌ | ❌ | ❌ |
| Tailscale Funnel | ⚠️ | ⚠️ | ⚠️ | ⚠️ |
| 纯 Trojan | ✅ | ⚠️ | ⚠️ | ✅ |
| 这套方案 | ✅ | ✅ | ✅ | ✅ |
为什么不用官方 Tailscale Funnel?
官方文档里 gateway.tailscale_funnel 被标记为"Critical"风险,原因是:
- 端口直接暴露在公网
- 可被扫描发现
- Tailscale 作为 TLS 终止点,理论上能看到你的密码
- 没有回落机制,容易被识别
而这套方案:服务不直接暴露端口 + SNI 分流 + 协议伪装 + 端到端加密 + 多级回落。
带宽限制分析
整套链路的实际带宽取决于多个环节,以下是详细分析:
链路带宽瓶颈
| 环节 | 瓶颈因素 | 说明 |
|---|---|---|
| (1) 用户 → VPS | min(用户上行带宽, VPS 下行带宽) | 用户设备上传速度 × VPS 接收速度 |
| (2) VPS → Tailscale | min(VPS 上行带宽, Tailscale 带宽) | VPS 转发能力 × Tailscale 网络质量 |
| (3) Tailscale → 家里 | min(家里上行带宽, Tailscale 带宽) | 家庭宽带上行速度 × Tailscale 网络质量 |
最终有效带宽 = min(环节1, 环节2, 环节3)
各环节详细分析
1. 用户设备 → VPS(公网传输)
| 因素 | 典型值 | 说明 |
|---|---|---|
| 用户移动网络上行 | 5-50 Mbps | 4G/5G 网络,波动较大 |
| 用户家庭宽带上行 | 10-100 Mbps | 国内家庭宽带通常上行较低 |
| VPS 下行带宽 | 100-1000 Mbps | 境外 VPS 通常下行充足 |
瓶颈:通常是用户上行带宽
2. VPS → Tailscale 网络
| 因素 | 典型值 | 说明 |
|---|---|---|
| VPS 上行带宽 | 100-1000 Mbps | 境外 VPS 通常上行充足 |
| Tailscale DERP 中继 | 10-50 Mbps | 走中继服务器时有限速 |
| Tailscale 直连 | 无限制 | 点对点直连,取决于两端网络 |
瓶颈:
- DERP 中继模式:Tailscale 免费版使用公共 DERP 服务器,带宽约 10-50 Mbps
- 直连模式:两端直接建立 WireGuard 隧道,带宽无额外限制
3. Tailscale → 家里电脑
| 因素 | 典型值 | 说明 |
|---|---|---|
| 家庭宽带上行 | 10-100 Mbps | 国内家庭宽带通常上行较低(如 300M 下行/30M 上行) |
| 家庭宽带下行 | 50-1000 Mbps | 接收数据时 |
瓶颈:通常是家庭宽带上行带宽(你访问 OpenClaw 时,家里电脑需要上传数据)
Tailscale 免费版限制
| 项目 | 免费版限制 | 说明 |
|---|---|---|
| 设备数量 | 100 台 | 个人使用绰绰有余 |
| 带宽限制 | 无官方限制 | 但 DERP 中继服务器有实际速度上限 |
| DERP 中继 | 免费 | 全球分布,但速度有限 |
| 直连模式 | 免费 | 推荐,无带宽限制 |
| ACL 规则 | 支持 | 可精细控制访问权限 |
关键:Tailscale 免费版没有明确的带宽配额限制,但走 DERP 中继时速度受限于中继服务器负载。若两端能直连(NAT 穿透成功),则无额外带宽限制。
如何提升带宽
| 优化方向 | 方法 | 效果 |
|---|---|---|
| 促进直连 | 开放 UDP 端口 / 使用 STUN | 绕过 DERP 中继,带宽大幅提升 |
| 升级 VPS | 选择更高带宽套餐 | 提升转发能力 |
| 升级家庭宽带 | 更高上行带宽套餐 | 提升家里电脑上传速度 |
| 自建 DERP | 部署私有 DERP 服务器 | 中继速度可控 |
实际带宽估算
假设:
- 用户 4G 网络:上行 20 Mbps
- VPS:上下行 500 Mbps
- 家庭宽带:上行 30 Mbps
DERP 中继模式:
- 最终带宽 ≈ min(20, 50(中继限制), 30) = 20 Mbps
直连模式:
- 最终带宽 ≈ min(20, 500, 30) = 20 Mbps
结论:大部分场景下,瓶颈在用户上行带宽。如果用户在固定网络(家庭/办公室)访问,带宽会更稳定。
访问流程
完整流程是这样的(以 claw.example.com 为例):
1. 你的设备运行 Trojan 客户端(V2Ray / Clash / Shadowrocket 等)
2. 客户端与 VPS 建立 TLS 连接,SNI = claw.example.com
3. NGINX Stream 根据 SNI 路由到 V2Ray-Trojan :10086
4. V2Ray 验证 Trojan 密码
├── 密码正确(claw-user) → 解密流量,路由到本地反代 :8850
│ └── 反代到 Tailscale 内网 → OpenClaw Gateway
└── 密码错误 → 回落到 :8849 → 返回 401(伪装成需要认证的服务)客户端选择:任何支持 Trojan 协议的客户端均可,不限于 V2Ray。常见选择:
| 客户端 | 平台 | 特点 |
|---|---|---|
| V2Ray / V2rayN | 全平台 | 功能全面,配置灵活 |
| Clash / Clash Verge | Windows / macOS / Linux | 规则分流,TUN 模式全局代理 |
| Shadowrocket | iOS | 移动端首选,支持多种协议 |
| v2rayNG | Android | 安卓端常用 |
| Surge | iOS / macOS | 功能强大,付费软件 |
Clash TUN 模式示例配置:
proxies:
- name: "openclaw"
type: trojan
server: claw.example.com
port: 443
password: "claw-password"
sni: claw.example.com
skip-cert-verify: false
tun:
enable: true
stack: system
dns-hijack:
- any:53
auto-route: true
auto-detect-interface: true
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- 223.5.5.5
- 119.29.29.29TUN 模式优势:全局透明代理,无需单独配置每个应用的代理设置,所有 TCP/UDP 流量自动走代理。
你需要准备:
- Trojan 客户端配置(Trojan 协议、密码、域名)
- claw.example.com 域名
首次访问:设备配对批准
第一次通过 Trojan 代理访问 OpenClaw 时,你会看到类似这样的提示:
Device pairing request pending. Approve with: openclaw devices approve这是什么?
这是 OpenClaw 的设备配对机制——一种安全措施,确保只有你授权的设备才能访问 Gateway。
为什么需要批准?
- OpenClaw 默认不信任任何连接,即使是来自 Tailscale 网络的连接
- 每个新设备第一次连接时,都会生成一个配对请求
- 你需要显式批准这个请求,设备才能获得访问权限
如何批准?
方式一:CLI 命令
# 查看待批准的请求
openclaw devices list
# 批准最新的请求
openclaw devices approve --latest
# 或批准指定请求
openclaw devices approve <requestId>方式二:Control UI
如果你已经能访问 Control UI,可以在"Devices"菜单中查看和批准请求。
批准后发生了什么?
- 设备获得一个 token,用于后续访问
- 该设备之后连接不再需要批准
- 你可以随时通过
openclaw devices remove <deviceId>移除设备
在本架构中的影响:
当你第一次通过 Trojan 代理访问 OpenClaw 时:
- 流量到达 OpenClaw Gateway
- Gateway 检测到新设备,生成配对请求
- 你需要在家里的电脑上执行
openclaw devices approve --latest - 批准后,设备才能正常访问
注意:这是一次性操作。批准后,该设备之后访问不再需要手动批准。
适合谁
- 已有成熟的 Trojan 伪装方案(NGINX Stream + V2Ray-Trojan)
- 需要在现有架构中添加 OpenClaw 远程访问能力
- 家庭宽带没有公网IP
- 对服务隐蔽性有要求,不想被扫描、不想被发现
总结
这套方案的核心优势:服务不直接暴露端口,通过多层伪装降低探测风险,但你可以从任何地方访问。
有问题欢迎交流。
关键词:OpenClaw、Tailscale、Trojan、Nginx、SNI路由、远程访问、TLS代理
