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 的架构设计:
- 出站连接:你的内网服务主动向 Cloudflare Edge 节点建立持久连接,而不是被动等待外部请求
- 反向代理:Cloudflare 收到公网请求后,通过这条持久连接将流量转发到内网服务
- 身份验证:所有流量经过 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,感受一下什么叫「十秒内网穿透」。