Cloudflare Tunnel

概述

Cloudflare Tunnel(原 Argo Tunnel)是一种反向隧道服务,可让无公网 IP 的服务器安全地暴露服务到公网。

核心价值: 让服务器"隐身"于 Cloudflare 保护之下,同时可被全球访问。


核心原理:反向连接

关键在于改变连接方向——不是外网连进来,而是内网主动连出去。

传统方式 vs Cloudflare Tunnel

text

❌ 传统方式(被动等待):
   用户 ──→ 公网IP:端口 ──→ 服务器
   问题:无公网IP / 端口被封 = 无法访问

✅ Cloudflare Tunnel(主动出击):
   服务器 ──主动连接──→ Cloudflare 边缘节点
                              ↑
   用户 ──访问域名──→ Cloudflare ──通过隧道──→ 服务器
7-Blog/网络与自托管/EasyTier+Cloudflare Tunnel 优雅20r成本个人自托管方案/assets/diagram-1767016433745-f3b07462

工作流程

1. 服务器运行 cloudflared,主动向外连接 Cloudflare
2. 建立长期加密隧道(出站连接,防火墙通常放行)
3. 用户访问域名 → Cloudflare 接收请求
4. Cloudflare 通过隧道将请求"塞回"服务器
5. 服务器响应,原路返回
7-Blog/网络与自托管/EasyTier+Cloudflare Tunnel 优雅20r成本个人自托管方案/assets/image-8a2366fa

💡 本质: 内网主动连接 Cloudflare,Cloudflare 顺着这条路传递流量


核心优势

特性 说明
无需公网 IP 内网 IP(10.x.x.x)、运营商大内网(100.64.x.x)均可用
无视端口限制 无需开放 80/443,只需出站网络通畅
隐藏真实 IP 服务器在互联网上"隐形",无法被扫描攻击
极致安全 可设置防火墙"拒绝所有入站",仅保留出站
自带 HTTPS Cloudflare 自动提供 SSL 证书

适用场景

NAT VPS 绝配:

  • 端口受限(无 80/443)
  • 无独立公网 IP
  • 需要对外提供 Web 服务

两种用法

用法 A:暴露特定服务(最常用)

将内部服务映射到公网域名:

# 配置示例
tunnel: my-tunnel
ingress:
  - hostname: bt.example.com
    service: http://localhost:8888    # 宝塔面板
  - hostname: www.example.com
    service: http://localhost:80      # 网站
  - service: http_status:404          # 兜底规则

效果: 用户访问域名直达服务,无需输入端口号

用法 B:暴露整个私有网络

通过 WARP 客户端接入内网网段:

配置:cloudflared 宣告私有网段(如 10.1.1.0/24)
客户端:安装 Cloudflare WARP
效果:手机/笔记本可直接访问该网段所有设备
对比 用法 A 用法 B
目标 暴露特定服务 暴露整个网段
客户端要求 无(浏览器即可) 需安装 WARP
适用场景 网站、API 远程办公、运维

快速部署

# 1. 安装 cloudflared
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared

# 2. 登录认证
./cloudflared tunnel login

# 3. 创建隧道
./cloudflared tunnel create my-tunnel

# 4. 配置 DNS(将域名指向隧道)
./cloudflared tunnel route dns my-tunnel www.example.com

# 5. 运行隧道
./cloudflared tunnel run my-tunnel

工具组合方案

针对 NAT VPS 的完整解决方案:

┌─────────────────────────────────────────────────────┐
│                    NAT VPS                          │
├─────────────────────────────────────────────────────┤
│  EasyTier          →  私密组网(自己管理/SSH/传文件)│
│  Cloudflare Tunnel →  公网暴露(网站/应用对外服务)  │
└─────────────────────────────────────────────────────┘
工具 职责 解决的问题
EasyTier 私密互联 设备间直连、内部管理
Cloudflare Tunnel 公网暴露 无公网 IP、端口受限

✅ 两者结合,完全克服 NAT VPS「无独立公网 IP + 端口稀缺」的限制


注意事项

事项 说明
依赖 Cloudflare 服务可用性取决于 CF,国内访问速度可能受限
免费套餐限制 部分高级功能需付费(基础隧道功能免费)
调试复杂度 出问题时排查链路较长

总结

传统方案 Cloudflare Tunnel
需要公网 IP ❌ 不需要
需要开放端口 ❌ 不需要
服务器暴露在公网 ✅ 完全隐藏
需要自己配置 HTTPS ✅ 自动提供
防 DDoS ❌ 自己扛

🎯 一句话: 让没有公网 IP 的服务器,安全地拥有全球可达的域名访问能力。