返回列表

博客

Cloudflare Tunnel 远程开发完全配置指南

无需开放端口、管理 DNS 或配置路由器,即可从任何地方访问你的 Mac 开发服务器。Cloudflare Tunnel 让远程开发变得切实可行。

发布于 标签: 上手教程 / networking / cloudflare / security / seo
博客

继续查看该栏目下的产品与工程更新。

浏览此分类

如果你想从本地网络之外访问 Mac 开发环境——咖啡店、机场、另一座城市——你需要一条通过互联网到达你机器的安全通道。传统方案(端口转发、动态 DNS、VPN)在开发者使用场景中都存在显著缺陷。

Cloudflare Tunnel 提供了一种更好的模型:你的 Mac 主动建立到 Cloudflare 网络的出站连接,远程客户端通过 Cloudflare 连接。无需在路由器上开放端口、无需管理 DNS、无需配置防火墙规则。

本指南介绍如何为远程开发搭建 Cloudflare Tunnel,特别是通过 Tactic Remote 访问 Claude Code 的场景。

Cloudflare Tunnel 的工作原理

架构非常直观:

Your iPhone          Cloudflare Edge          Your Mac
     │                    │                       │
     │  HTTPS (wss://)    │  Outbound tunnel      │
     │───────────────────►│◄──────────────────────│
     │                    │                       │
     │  Encrypted         │  cloudflared process  │
     │  WebSocket         │  connects outbound    │
     │                    │  to Cloudflare        │
     │                    │                       │

要点:

  • Mac 发起隧道出站连接到 Cloudflare。不会在公网端口上监听。
  • Cloudflare 分配一个 URL(例如 https://random-words.trycloudflare.com),通过隧道路由到你的 Mac。
  • 流量端到端加密,使用 TLS。
  • 路由器无需任何配置——不需要端口转发、不需要 UPnP、不需要 DMZ。

这与暴露端口有本质区别。使用端口转发时,你的 Mac 接受来自整个互联网的入站连接。使用 Cloudflare Tunnel 时,只有经过 Cloudflare 认证的流量才能到达你的 Mac。

前置条件

  • macOS 14 (Sonoma) 或更高版本(Mac 应用集成所需)
  • Homebrew 已安装
  • cloudflared — Cloudflare 的隧道客户端

安装 cloudflared:

brew install cloudflared

验证安装:

cloudflared --version
# cloudflared version 2025.x.x

快速隧道不需要 Cloudflare 账号。trycloudflare.com 域名免费且无需注册。

通过 Tactic Remote Mac 应用配置

Mac 应用会自动处理大部分 Cloudflare Tunnel 配置。

步骤 1:启用 Cloudflare Tunnel

在 Mac 应用的设置中:

  1. 将 Cloudflare Tunnel 开关切换为启用
  2. 应用会使用正确的配置启动 cloudflared
  3. 隧道 URL 出现(例如 https://bright-river-abc123.trycloudflare.com)

后台运行的命令:

cloudflared tunnel --url http://localhost:8765 --protocol h2mux

--protocol h2mux 参数使用 HTTP/2 多路复用建立隧道连接,为 WebSocket 流量提供更好的性能。

步骤 2:设置 API Key

这是 Cloudflare 连接的必需项。 当你的服务器可从互联网访问时,必须对连接进行认证。

Mac 应用会生成一个 32 字符的随机 API Key。你也可以自行设置。从 iPhone 连接时需要此密钥——它通过 WebSocket 握手的 Sec-WebSocket-Protocol 头发送。

步骤 3:配置你的 iPhone

在 iPhone 上的 Tactic Remote 中:

  1. 进入连接设置
  2. 切换到 Cloudflare 模式
  3. 输入 Mac 应用中显示的隧道 URL
  4. 输入 API Key

或者扫描 Mac 应用中的二维码,其中编码了隧道 URL 和 API Key。

步骤 4:测试连接

  1. 将 iPhone 切换到蜂窝网络(关闭 WiFi 以确认没有意外使用局域网)
  2. 打开 Tactic Remote
  3. 确认连接成功
  4. 创建或打开一个会话
  5. 发送一条测试命令

如果一切正常,就配置完成了。只要 cloudflared 保持运行,隧道 URL 就会持续有效。

Tactic Remote 如何使用隧道

当 Cloudflare Tunnel 处于活动状态时,通信路径会发生变化:

局域网模式: iPhone → WiFi → Mac(端口 8765)— 直连 WebSocket Cloudflare 模式: iPhone → 蜂窝/WiFi → Cloudflare 边缘节点 → 隧道 → Mac(端口 8765)— 通过隧道的加密 WebSocket

从 iPhone 应用的角度来看,唯一的区别是 URL:

  • 局域网:ws://192.168.1.100:8765
  • Cloudflare:wss://bright-river-abc123.trycloudflare.com

wss:// 前缀表示 WebSocket Secure(加密)。手机与 Cloudflare 之间、以及 Cloudflare 与 Mac 之间的所有数据都是加密的。

安全注意事项

隧道保护了什么

  • 无公网端口 — Mac 的防火墙不需要任何入站规则
  • TLS 加密 — 所有传输中的流量都经过加密
  • DDoS 防护 — Cloudflare 的边缘网络在攻击到达你的 Mac 之前就将其吸收
  • URL 隐蔽性 — trycloudflare.com 的 URL 是随机生成的,很难被猜到

你需要负责的部分

  • API Key 强度 — 使用长随机密钥(Mac 应用生成 32 字符)。不要使用弱密码。
  • API Key 传输 — 通过二维码(面对面)传输密钥,而不是通过邮件或聊天工具发送
  • 隧道 URL 隐私 — 不要公开发布你的隧道 URL。任何拥有 URL 和 API Key 的人都可以连接。
  • Mac 物理安全 — 服务器通过 Claude Code 可以访问你的文件系统。锁定你的 Mac。
  • 速率限制 — Tactic Remote 的服务器包含速率限制中间件以减缓暴力破解尝试,但它不能替代强 API Key

关于 Cloudflare 能否看到你的流量?

Cloudflare 在其边缘节点终止 TLS,这意味着它们理论上可以看到你的流量。对于大多数开发场景来说,这是可以接受的——你不会发送机密数据,而且 Cloudflare 的隐私承诺有充分的文档记录。

如果你对此有顾虑,请只使用局域网模式,并仅从本地网络进行操作。

故障排除

"隧道 URL 没有出现"

  • 检查 cloudflared 是否已安装:which cloudflared
  • 查看 Mac 应用日志中的 cloudflared 错误
  • 尝试手动运行 cloudflared:cloudflared tunnel --url http://localhost:8765
  • 确认你的网络连接正常

"局域网可以连接但 Cloudflare 不行"

  • 确认隧道 URL 使用的是 wss://(不是 ws://)
  • 确认 Mac 应用和 iPhone 设置中的 API Key 一致
  • 检查你的网络是否阻止了非标准端口的出站连接(在企业网络中虽少见但有可能)

"间歇性断开连接"

  • 快速隧道可能在长时间不活动后回收 URL
  • 查看 Mac 应用——如果隧道 URL 发生了变化,请更新 iPhone 设置
  • 考虑使用 Cloudflare 账号创建命名隧道以获得永久 URL

"延迟高"

  • 快速隧道通过最近的 Cloudflare 数据中心路由,通常很快
  • 如果延迟持续偏高,可能是你的 ISP 与 Cloudflare 的互联质量不佳
  • 测试命令:curl -o /dev/null -w "%{time_total}" https://your-tunnel-url.trycloudflare.com
  • 延迟低于 200ms 对终端交互来说没有问题。超过 500ms 会明显感觉到。

快速隧道与命名隧道

Tactic Remote 默认使用快速隧道——无需 Cloudflare 账号,URL 自动分配。这是实现远程访问的最快路径。

快速隧道的限制:

  • URL 随机生成,cloudflared 重启后会改变
  • 不支持自定义域名
  • 不支持 Cloudflare Access 集成(无 SSO、无额外认证层)

命名隧道(需要免费的 Cloudflare 账号)提供:

  • 持久 URL,重启后不会改变
  • 自定义域名映射(例如 dev.yourdomain.com)
  • Cloudflare Access 提供额外认证(SSO、邮箱验证)
  • 更适合需要多人稳定访问的团队环境

对于个人开发者,快速隧道完全够用。如果你发现自己频繁在手机上更新隧道 URL,可以考虑升级到命名隧道。

Cloudflare Tunnel 的替代方案

为了信息完整,这里列出其他远程访问方案:

端口转发

  • 在路由器上开放端口,配置防火墙
  • 风险:你的 Mac 直接暴露在互联网上
  • 如果 IP 地址变化需要配置动态 DNS
  • 不推荐用于开发环境

Tailscale/WireGuard VPN

  • 在你的设备之间创建私有网络
  • 安全模型良好(点对点加密)
  • Mac 和 iPhone 都需要安装 Tailscale 客户端
  • 注意:Tactic Remote 目前未集成 Tailscale——你需要单独运行它,并将 Tactic Remote 指向 Tailscale IP

ngrok

  • 与 Cloudflare Tunnel 概念类似
  • 免费套餐有限制(连接数、带宽)
  • 成熟的产品,开发者体验良好
  • 如果你偏好 ngrok 生态系统,可以作为替代方案

SSH 隧道

  • 使用 SSH 端口转发的经典方案
  • 需要在 Mac 上配置 SSH 服务器
  • 注意:Tactic Remote 使用 WebSocket 而非 SSH——SSH 隧道会将 WebSocket 连接再包一层,增加了复杂度却没有明显收益

Cloudflare Tunnel 是 Tactic Remote 的推荐方案,因为它免费、快速隧道无需账号,并且已经直接集成到 Mac 应用中。

立即体验 Tactic Remote

用手机远程控制编程 Agent

连接 Mac、Windows 或 Linux 电脑上的 Claude Code、Codex 等 Agent,在 iPhone 或 iPad 上查看进展并发送下一条要求。