cftunnel 实战:用 Cloudflare Tunnel 一键打通内网与公网

痛点场景:本地开发环境的公网访问困境

你有没有遇到过这种情况:凌晨两点调试 Webhook,本地服务跑得好好的,却没法让外部服务回调过来?或者部署了一套内部工具,团队成员在不同网络环境下无法直接访问?

传统的内网穿透方案要么配置繁琐——你需要熟悉 SSH 隧道、Nginx 反向代理;要么存在安全隐患——暴露真实服务器 IP、端口容易被扫描攻击;要么就是贵——商业方案按流量或并发收费。

cftunnel 正是为解决这些痛点而来。

Cloudflare Tunnel 原生方案的局限

Cloudflare Tunnel(cloudflared)本身已经是一款优秀的工具,它通过在服务器和 Cloudflare 边缘节点之间建立加密隧道,将内网服务暴露到公网。相比直接暴露 IP + 端口的方式,它有以下优势:

  • 真实服务器 IP 完全隐藏,攻击者只能看到 Cloudflare 边缘节点
  • 自动 HTTPS 加密,无需操心证书配置
  • 免费额度足够个人和小型团队使用

但原生的 cloudflared 存在几个问题:

  1. 配置文件格式晦涩,新手容易出错
  2. 多隧道管理不便,需要手动维护进程
  3. 没有统一的 Web 管理界面
  4. 与 OpenClaw 等平台集成困难

cftunnel 在此基础上做了减法,把"一键启动、图形管理、OpenClaw 集成"变成了开箱即用的体验。

核心原理:加密隧道的建立与流量转发

Cloudflare Tunnel 的工作原理可以概括为三个步骤:

用户请求 → Cloudflare 边缘节点 → 加密隧道 → cloudflared → 内网服务

具体流程如下:

  1. 隧道建立:在 Cloudflare 账号下创建一个命名的 Tunnel,获取 Tunnel UUID 和 Token
  2. 进程启动:本地或服务器上的 cloudflared 进程使用 Token 连接 Cloudflare 边缘节点
  3. 流量路由:外部请求到达边缘节点后,通过加密隧道转发给 cloudflared,再由它代理到实际的内网服务

cftunnel 做了两件事优化这个流程:

  • 配置封装:将 YAML 配置转换为用户友好的参数,隐藏底层细节
  • 进程管理:自动处理 tunnel 的启动、重启、状态监控

安装与快速上手

支持 Linux/macOS,一行命令搞定:

curl -fsSL https://raw.githubusercontent.com/openclaw/cftunnel/main/install.sh | bash

安装完成后,初始化配置:

cftunnel init

创建第一个隧道,只需一条命令:

cftunnel create my-tunnel -t your-tunnel-token -s localhost:3000

启动隧道:

cftunnel up my-tunnel

查看运行状态:

cftunnel status

配合 OpenClaw 使用,还能通过 Web 面板统一管理多个隧道和内网服务。

与同类工具横向对比

特性 cftunnel frp ngrok Cloudflare Tunnel (原生)
费用 免费 免费(需自建服务器) 免费版有限制 免费
IP 隐藏
自定义域名 ❌(免费版)
配置复杂度
Web 管理界面
OpenClaw 集成

核心差异在于:frp 需要自己维护中转服务器,ngrok 免费版限制颇多,而 cftunnel 在保留 Cloudflare Tunnel 安全优势的同时,大幅降低了使用门槛。

适用场景

  • 本地开发调试:快速让 Webhook、回调服务可被外部访问
  • 小型团队协作:无需暴露真实服务器 IP,安全共享内部工具
  • OpenClaw 用户:配合 ClawPanel 管理,体验更流畅
  • 边缘计算实验:将边缘节点的本地服务接入云端

如果你正在使用 Cloudflare,并且需要一个简单可靠的内网穿透方案,cftunnel 值得一试。版本 0.8.1 已经相当成熟,社区活跃度也在稳步上升。