cftunnel 实战:一条命令搞定 Cloudflare Tunnel 内网穿透,无需公网IP也能外网访问本地服务

痛点场景:本地服务无法外网访问

调试支付回调时,本地开发环境需要接收第三方平台的 webhook 通知,却发现外网根本无法访问本地 localhost:8080。或者在家办公时需要远程连接到内网的 NAS 服务器,却不想在路由器上做复杂的端口映射。

这类场景的共同痛点是:内网服务如何安全、低成本地暴露到公网?

Cloudflare Tunnel 提供了答案,但它原生的配置流程对很多开发者来说门槛偏高。cftunnel 正是为了解决这个问题而生的。

cftunnel 是什么

cftunnel 是一个专为简化 Cloudflare Tunnel 配置而生的开源项目,版本 0.8.1 已获得 229 个 GitHub Stars。它的核心目标是让用户一条命令就能完成 tunnel 的创建、启动和长期管理,无需记忆复杂的配置文件格式。

# 安装 cftunnel
curl -fsSL https://raw.githubusercontent.com/your-repo/cftunnel/main/install.sh | bash

# 一键启动 tunnel
cftunnel --name my-tunnel --url http://localhost:8080

执行上述命令后,cftunnel 会自动完成 Cloudflare 账号认证、证书申请和 tunnel 连接的建立,无需手动配置 config.yml

核心原理:Cloudflare Tunnel 如何工作

理解 cftunnel 的工作方式,需要先了解 Cloudflare Tunnel 的架构设计:

  1. 出站连接:你的内网服务主动向 Cloudflare Edge 节点建立持久连接,而不是被动等待外部请求
  2. 反向代理:Cloudflare 收到公网请求后,通过这条持久连接将流量转发到内网服务
  3. 身份验证:所有流量经过 Cloudflare 网络,支持零信任访问控制

这种架构的优势在于:

  • 不需要公网 IP 或端口映射
  • 内网服务不暴露在公网,天然防御扫描和攻击
  • 自动获得 Cloudflare 的 DDoS 防护能力

cftunnel 在此基础上做了减法:它将认证流程、证书管理和进程守护封装成简单的 CLI 命令,让配置复杂度从「需要理解架构」降低到「知道服务地址」。

安装与基本使用

环境要求

  • Linux/macOS/Windows(WSL)
  • 已安装 cloudflared 二进制文件
  • Cloudflare 账号(免费账号即可)

快速启动

# 下载 cftunnel(Linux x86_64)
wget -O cftunnel https://github.com/your-repo/cftunnel/releases/download/v0.8.1/cftunnel-linux-amd64
chmod +x cftunnel
sudo mv cftunnel /usr/local/bin/

# 启动 tunnel(暴露本地 8080 端口)
cftunnel run --name my-site --target http://localhost:8080

# 后台运行并设置开机自启
cftunnel install --name my-site --target http://localhost:8080 --autostart

启动成功后,cftunnel 会输出分配的公网地址,格式类似 https://my-site.randomletters.trycloudflare.com

支持的协议

cftunnel 不仅支持 HTTP/HTTPS 服务,还支持:

  • TCP 协议--protocol tcp --port 22 可暴露 SSH 端口
  • SOCKS5 代理:为内网机器提供临时的公网出口
  • 多服务复用:一个 tunnel 同时代理多个内网服务

实际应用案例

假设你需要让微信/支付宝的支付回调能够访问本地开发环境:

cftunnel run --name payment-dev --target http://localhost:8080 --protocol http

将输出的 https://payment-dev.xxx.trycloudflare.com 配置到支付平台的回调地址,即可接收真实的支付通知。

与同类工具的差异

特性 cftunnel frp ngrok
公网服务器 不需要 需要自建 不需要
配置复杂度
免费额度 无限 无限 有限制
自定义域名 支持 支持 付费
开源

frp 需要自己准备公网服务器,运维成本高;ngrok 虽然简单但免费版限制多,且闭源。cftunnel 结合了两者优点:开源免费 + 无需自建服务器 + 配置极简

适用场景

cftunnel 最适合以下场景:

  • 本地开发测试:需要让外网服务回调本地接口
  • 临时演示:快速分享内网的 Web 应用
  • 远程访问:通过 SSH 连接到没有公网 IP 的机器
  • 家庭实验室:安全暴露自建服务而不暴露家庭网络

对于需要长期稳定运行的生产环境,建议配合 Cloudflare Zero Trust 平台使用,可以获得更完善的访问控制和日志审计功能。


看完这篇文章后,你可以立刻打开终端,用一条命令试试 cftunnel run --name test --target http://localhost:8080,感受一下什么叫「十秒内网穿透」。