cftunnel: 一键管理 Cloudflare Tunnel 的开源解决方案
痛点场景:当内网服务需要公网访问时
想象一下这个场景:你本地跑着一个 Web 服务或者开发文档服务器,想临时分享给外网的同事或者客户测试。传统的做法是配置复杂的反向代理,或者购买昂贵的内网穿透服务。如果恰好你的服务器已经部署了 Cloudflare,Cloudflare Tunnel 是一个零成本的选择——但每次通过官方命令管理隧道,需要记忆一长串参数,体验并不友好。
cftunnel 正是为解决这个痛点而生:它将 Cloudflare Tunnel 的常用操作封装成简洁的命令行工具,让隧道管理变得像编辑配置文件一样简单。
cftunnel 核心原理
Cloudflare Tunnel 的本质是在你的机器与 Cloudflare 边缘节点之间建立一条加密长连接。客户端程序(cloudflared)负责与 Cloudflare API 通信,创建隧道并保持心跳。
cftunnel 在此基础上做了两件事:
- 封装官方 API:它通过调用 Cloudflare API 完成隧道的创建、删除、列出等操作,无需手动拼接复杂的 curl 命令
- 本地配置管理:将每个隧道的配置文件保存在本地目录,方便版本管理和批量部署
当你执行 cftunnel create 时,工具会:
- 调用 Cloudflare API 创建新隧道,获取 tunnel_id
- 自动生成配置文件(config.yml)
- 启动 cloudflared 进程连接隧道
# 创建一条新隧道并自动启动
cftunnel create my-service http://localhost:8080
# 查看当前所有隧道状态
cftunnel list
# 删除指定隧道
cftunnel delete tunnel_id
与传统方案的对比
| 特性 | cftunnel | 原生 cloudflared | 其他内网穿透工具 |
|---|---|---|---|
| 配置方式 | YAML + 命令行 | 纯命令行参数 | 各有不同 |
| 多隧道管理 | 统一视图 | 需手动追踪 | 视工具而定 |
| SSH 隧道支持 | 原生支持 | 需额外配置 | 不支持 |
| 配置文件版本化 | 支持 | 不支持 | 视工具而定 |
值得强调的是,cftunnel 对 SSH 隧道的原生支持是亮点。在传统方案中,如果你想把内网的 SSH 服务暴露出去,需要手动配置 ssh.yaml 并理解复杂的协议转换逻辑。cftunnel 将这个过程简化到一条命令:
cftunnel create-ssh my-ssh ssh://localhost:22
安装与快速上手
目前 cftunnel 提供了多平台安装包,主流方式是直接下载二进制文件:
# Linux/macOS 一键安装
curl -fsSL https://raw.githubusercontent.com/your-repo/cftunnel/main/install.sh | bash
# 验证安装
cftunnel --version
# 输出: cftunnel version 0.8.1
安装完成后,你需要准备 Cloudflare 账号的 API Token(可在 Cloudflare Dashboard 的 API Tokens 页面创建):
# 初始化配置
cftunnel init
# 按提示输入 API Token 和默认域名
适用场景
cftunnel 特别适合以下场景:
- 个人开发者:快速将本地开发的服务分享给远程同事或客户
- 小型团队:通过 Cloudflare Zero Trust 统一管理多台机器的访问权限
- 测试环境:临时暴露内网服务进行外部集成测试
如果你已经在使用 Cloudflare 但觉得官方 tunnel 管理体验繁琐,cftunnel 是一个值得尝试的轻量替代方案。