使用 cftunnel 简化 Cloudflare Tunnel 管理:内网穿透一键部署实战

痛点:从零配置 Cloudflare Tunnel 有多麻烦

当你需要把本地开发环境暴露给外部团队 review,或者让远程设备访问家庭 NAS 时,Cloudflare Tunnel 是目前最安全的方案之一。

但实际使用时,你需要:

  1. 手动创建 tunnel:cloudflared tunnel create my-tunnel
  2. 生成配置文件,填写 tunnel ID 和 credentials 路径
  3. 配置路由:cloudflared tunnel route dns tunnel-name domain.com
  4. 启动服务并管理多个 tunnel 的进程

整个过程涉及 YAML 配置文件、凭证管理和进程守护,对新手不友好。cftunnel 正是为解决这个痛点而生——它将上述步骤封装为简单的命令,让 tunnel 管理变成几行指令的事。

核心原理:Cloudflare Tunnel 是如何工作的

在了解 cftunnel 之前,有必要梳理 Cloudflare Tunnel 的底层机制。

Cloudflare Tunnel(cloudflared)本质上是一个反向代理服务:

本地服务 → cloudflared 客户端 → Cloudflare Edge → 用户浏览器

客户端与 Cloudflare 边缘节点建立加密长连接,所有流量经过这个 tunnel 传输,无需开放公网端口。cftunnel 在此基础上提供了 管理平面——它调用 cloudflared 的 API 或直接执行命令,实现 tunnel 的增删改查。

cftunnel 登场:与 tunnelmgr 的差异化设计

cftunnel 并非唯一的 tunnel 管理工具,GitHub 上还有 tunnelmgr 等项目。它们的区别在于:

特性 cftunnel tunnelmgr
交互方式 命令行交互 + 配置文件 YAML 配置驱动
学习曲线 低,上手即用 需要理解 YAML 结构
多 tunnel 管理 内置支持 需要额外配置
配置文件 简洁 JSON/YAML 依赖 cloudflared 原生格式

cftunnel 的设计理念是 减少心智负担:用户不需要记忆复杂的 cloudflared 参数,一个命令搞定 tunnel 全生命周期管理。

快速上手:安装与基础命令

安装

支持多种安装方式,推荐使用官方脚本:

# Linux/macOS 一键安装
curl -sSL https://raw.githubusercontent.com/your-repo/cftunnel/main/install.sh | bash

# 或者通过 go 安装
go install github.com/your-repo/cftunnel@latest

创建 tunnel

# 初始化并创建名为 my-tunnel 的 tunnel
cftunnel tunnel create my-tunnel

# 输出示例:
# Tunnel created: a1b2c3d4-5678-90ab-cdef-1234567890ab
# Credentials saved to: ~/.cloudflared/credentials.json

查看和列出 tunnel

# 列出所有 tunnel
cftunnel tunnel list

# 查看指定 tunnel 状态
cftunnel tunnel status my-tunnel

配置路由并启动

# 快速绑定域名
cftunnel tunnel route dns my-tunnel dev.example.com

# 启动 tunnel(前台运行)
cftunnel tunnel run my-tunnel

# 后台运行(systemd)
cftunnel tunnel run my-tunnel --daemon

删除 tunnel

cftunnel tunnel delete my-tunnel

适用场景

cftunnel 适合以下场景:

  • 开发协作:本地服务快速共享给外部团队,无需公网 IP
  • 家庭网络:将 NAS、HomeAssistant 等服务暴露给外网
  • 临时演示:展会/路演时临时暴露本地服务
  • 小型团队:无需购买商业内网穿透服务

总结

cftunnel 用简洁的命令封装了 Cloudflare Tunnel 的管理复杂度,让内网穿透从「配置地狱」变成「几条命令的事」。如果你正在使用或计划使用 Cloudflare Tunnel,不妨试试这个工具,能省不少时间。