跳到正文
Cloudflare:DNS、CDN、Tunnel 一条链

Cloudflare:DNS、CDN、Tunnel 一条链

域名 DNS 托管加免费 CDN 加零端口内网穿透。一条出站隧道,服务器一个入站端口都不用开。这篇记这套链路怎么落到我手上、为什么不会换,以及它在发布链路里「地基」的位置。

Cloudflare:DNS、CDN、Tunnel 一条链

状态:基石依赖 · 适合零入站端口暴露、全站边缘托管与 CDN 缓存

速读#

Cloudflare 在这里不是单个工具,而是 DNS、CDN、Tunnel 组成的一条发布链路。它最值钱的地方,是把「公网可达」从开入站端口,改成由 cloudflared 主动出站连接;代价是把 DNS、CDN、入口全押在一家身上。这个取舍我认,但要把押注的内容写清楚。

三件事在我手上是一条链#

能力我怎么用换来什么
DNS域名 NS 指到 Cloudflare记录统一托管
CDN / 代理A 记录橙云开启外面 ping 到的是 CF IP,顺手缓存、SSL、基础 WAF
Tunnel机器上跑 cloudflared,主动出站连 CF入站端口可以对公网全关

访客请求沿隧道进来。服务器不必为了「能被访问」而在防火墙上开缝。

这条链路是一步步收紧的:

  1. 直接开端口放行
  2. DNS 代理藏了 IP,但端口还在
  3. Tunnel 把发起方向从入站改成出站,真实入口归零

三步走完才明白:「可达」不是开一道缝,是选择从哪个方向发起连接。

最短上手与隧道配置#

Terminal window
# 1. 安装并登录认证
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
dpkg -i cloudflared.deb
cloudflared tunnel login
# 2. 创建隧道并配置路由
cloudflared tunnel create my-server
cloudflared 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 全要重找替代,而且没有一个能把这三件免费一起给的。所以对它的判断不是日常纠结换不换,而是地基不动,专注在上面稳健演进。

工具的生命力看它站的位置。站成地基的,不轻易推倒重来,只思考如何在坚实底座上生长下一代架构。

s1oopX

登录 s1oopX