cloudflared穿透网络,暴漏服务到公网
cloudflared 是 Cloudflare提供的一款命令行工具,主要用于连接你的本地服务与 Cloudflare 的边缘网络,实现 安全、可靠、免暴露公网 IP 的访问方式。它的核心功能是通过创建一个 Cloudflare Tunnel(原名 Argo Tunnel),将本地服务暴露到互联网上,同时仍享受 Cloudflare 的防护和加速。
- https://github.com/cloudflare/cloudflared
- https://cloudflared.cn/#%E8%BF%90%E8%A1%8C%E5%8E%9F%E7%90%86

核心用途
| 功能 | 说明 |
|---|---|
| Cloudflare Tunnel(Argo Tunnel) | 将本地服务安全地暴露在公网而不需开放端口或使用反向代理 |
| 访问控制 | 可结合 Cloudflare Access 做 Zero Trust 访问管理 |
| 负载均衡与高可用 | 支持配置多个 Tunnel 实现多节点负载均衡 |
| 自定义域名接入 | 本地服务可映射到你在 Cloudflare 上的域名 (login) |
| 无需公网 IP / 防火墙穿透 | 利用 Cloudflare 网络中转,无需暴露服务器 IP |
常见场景
- 内网 Web 服务暴露(如开发环境、内网管理面板)
- 将本地机器作为 webhook 或 API 的 endpoint
- 避免服务器暴露公网 IP 的安全风险
- 安全部署无公网的 IoT 设备
- Zero Trust 架构中的关键组件
安装示例
- https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/update-cloudflared/
- https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/
linux
1 | # 下载 cloudflared |
macos
brew install cloudflared
快速开始(临时暴漏服务)
假设你有一个运行在本地 localhost:8000 的 Web 服务:
1 | cloudflared tunnel --url http://localhost:8000 |
运行后,它会给出一个 .trycloudflare.com 的临时域名用于访问该服务。
生产环境部署
登录 Cloudflare 并注册 Tunnel
1
cloudflared login
会打开浏览器,让你登录 Cloudflare 并选择一个域名授权。
创建 Tunnel
1
cloudflared tunnel create my-tunnel
配置本地服务与域名
编辑~/.cloudflared/config.yml:1
2
3
4
5
6
7tunnel: my-tunnel
credentials-file: /root/.cloudflared/my-tunnel.json
ingress:
- hostname: dev.example.com
service: http://localhost:8000
- service: http_status:404运行 Tunnel
1
cloudflared tunnel run my-tunnel
配置文件路径和格式(Linux)
默认路径:
1 | /etc/cloudflared/config.yml |
示例配置:
1 | tunnel: my-tunnel |