状态:基石依赖 · 适合零入站端口暴露、全站边缘托管与 CDN 缓存
速读#
Cloudflare 在这里不是单个工具,而是 DNS、CDN、Tunnel 组成的一条发布链路。它最值钱的地方,是把「公网可达」从开入站端口,改成由 cloudflared 主动出站连接;代价是把 DNS、CDN、入口全押在一家身上。这个取舍我认,但要把押注的内容写清楚。
三件事在我手上是一条链#
| 能力 | 我怎么用 | 换来什么 |
|---|---|---|
| DNS | 域名 NS 指到 Cloudflare | 记录统一托管 |
| CDN / 代理 | A 记录橙云开启 | 外面 ping 到的是 CF IP,顺手缓存、SSL、基础 WAF |
| Tunnel | 机器上跑 cloudflared,主动出站连 CF | 入站端口可以对公网全关 |
访客请求沿隧道进来。服务器不必为了「能被访问」而在防火墙上开缝。
这条链路是一步步收紧的:
- 直接开端口放行
- DNS 代理藏了 IP,但端口还在
- Tunnel 把发起方向从入站改成出站,真实入口归零
三步走完才明白:「可达」不是开一道缝,是选择从哪个方向发起连接。
最短上手与隧道配置#
# 1. 安装并登录认证curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.debdpkg -i cloudflared.debcloudflared tunnel login
# 2. 创建隧道并配置路由cloudflared tunnel create my-servercloudflared tunnel route dns my-server app.example.com
# 3. 配置本地服务映射并作为 systemd 服务启动cloudflared service install代价也要写清楚#
Tunnel 不完美:流量经 Cloudflare 中转,多一层依赖;出站断了,服务就断。
排查也多了一层:出问题先要分清是源站挂了还是 CF 这层挡了——缓存没刷、代理规则误伤、隧道断连,症状都长得像「站挂了」。中间多一层,问题定位就多一个候选,这是所有代理层的通病,不是 CF 独有。
还有个边界要认:橙云代理的是 HTTP/HTTPS 这类流量,SSH 之类的原始 TCP 通道不在这条链上——非网页端口穿透需要配合 frp 处理。
最后一条要直视:DNS、CDN、入口全押一家,等于把鸡蛋放进同一个篮子。个人站我认这个风险,因为「平时省下的维护成本」远大于「几年一遇的连坐宕机」。
不适合什么情况#
- 主要访客在中国大陆:免费档没有大陆节点,流量绕行海外,延迟和稳定性都会打折。
- 要暴露任意 TCP/UDP 原始端口:游戏服、私有数据库直连等,应使用 frp。
- 大流量媒体分发:对象存储加专门分发网络的事,不能白嫖免费 CDN。
站成地基的选型#
它是整套发布链路的地基。换它等于拆地基:DNS、CDN、Tunnel 全要重找替代,而且没有一个能把这三件免费一起给的。所以对它的判断不是日常纠结换不换,而是地基不动,专注在上面稳健演进。
工具的生命力看它站的位置。站成地基的,不轻易推倒重来,只思考如何在坚实底座上生长下一代架构。
