用Cloudflare Tunnel内网穿透:无需公网IP也能安全暴露本地服务
Cloudflare Tunnel 解决了什么问题?
本地开发的服务、家庭服务器、内网部署的工具,如果没有公网 IP 就无法从外部访问。传统方案是用 frp 或 ngrok 做内网穿透,但 frp 需要一台有公网 IP 的服务器,ngrok 免费版有速率限制和随机域名。
Cloudflare Tunnel 提供了一个更优雅的方案:在本地运行一个 cloudflared 客户端,与 Cloudflare 网络建立出站连接,外部访问通过 Cloudflare 的全球网络转发到本地——全程不需要公网 IP,不需要开放防火墙端口,流量经过 Cloudflare 的 DDoS 防护和 SSL 加密。
一、准备工作
- 一个 Cloudflare 账号(免费版即可)
- 一个已迁移到 Cloudflare DNS 的域名
- 本地运行的服务(如 Web 应用、NAS、开发服务器)
二、安装 cloudflared
# Ubuntu / Debian
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
# 验证安装
cloudflared --version三、登录 Cloudflare 账号
cloudflared tunnel login命令执行后会输出一个授权 URL,在浏览器中打开并授权,选择要使用的域名。授权完成后,凭证文件会自动保存到 ~/.cloudflared/cert.pem。
四、创建 Tunnel
# 创建一个名为 my-tunnel 的 Tunnel
cloudflared tunnel create my-tunnel
# 查看已创建的 Tunnel(记录下 Tunnel ID)
cloudflared tunnel list五、配置 Tunnel 路由
mkdir -p ~/.cloudflared
nano ~/.cloudflared/config.ymltunnel: my-tunnel
credentials-file: /root/.cloudflared/你的TunnelID.json
ingress:
# 将 app.your-domain.com 流量转发到本地 3000 端口
- hostname: app.your-domain.com
service: http://localhost:3000
# 将 nas.your-domain.com 转发到内网 NAS
- hostname: nas.your-domain.com
service: http://192.168.1.100:5000
# 将 ssh.your-domain.com 用于 SSH 访问
- hostname: ssh.your-domain.com
service: ssh://localhost:22
# 默认规则(必须放最后)
- service: http_status:404六、创建 DNS 记录并启动 Tunnel
# 自动在 Cloudflare DNS 创建 CNAME 记录
cloudflared tunnel route dns my-tunnel app.your-domain.com
cloudflared tunnel route dns my-tunnel nas.your-domain.com
# 测试运行(前台运行,查看日志)
cloudflared tunnel run my-tunnel访问 https://app.your-domain.com,应该能看到本地 3000 端口的服务,并且自动带有 HTTPS。
七、配置为 systemd 服务(开机自启)
# 安装为系统服务
sudo cloudflared service install
# 启动服务
sudo systemctl start cloudflared
sudo systemctl enable cloudflared
# 查看状态
sudo systemctl status cloudflared八、与 frp / ngrok 的对比
| 方案 | 是否需要公网服务器 | 免费版限制 | 安全性 | 域名 |
|---|---|---|---|---|
| Cloudflare Tunnel | 不需要 | 几乎无限制 | 极高(Cloudflare WAF) | 自定义域名 |
| frp | 需要(自建) | 无(自建) | 取决于配置 | 自定义域名 |
| ngrok 免费版 | 不需要 | 速率限制、随机域名 | 中 | 随机子域名 |
总结
Cloudflare Tunnel 是目前最便捷的内网穿透方案:免费、无需公网 IP、自动 HTTPS、流量经过 Cloudflare 防护、支持自定义域名和多服务路由。特别适合家庭服务器、开发环境对外演示、内部工具安全暴露等场景。
如果你有需要稳定运行 cloudflared 的场景,或需要一台有公网 IP 的中转服务器,IDC.Net 香港云服务器首月 10 元起,稳定 IP,支付宝付款即可开通。