使用教程

根域名用 Cloudflare 解析,为什么会被调度到海外节点?

CNAME Flattening 会让调度系统误判用户位置,导致大陆访问变慢。讲清技术原因,并给出两个可直接落地的解决方案。

阅读时长约 5 分钟

现象:明明接入了 CDN,大陆访问却变慢了

我们监测到部分将根域名(@ 主机记录)接入 QEdgeCDN 的用户,在使用 Cloudflare 作为 DNS 解析服务商时,出现了中国大陆地区访问速度变慢、或被调度至海外节点的现象。

如果你的站点符合以下两个条件,大概率就是本文描述的问题:

  • 业务部署在根域名上(example.com 而不是 www.example.com);
  • 域名的 DNS 托管在 Cloudflare。

技术原因:CNAME Flattening 抹掉了用户位置

由于 RFC 标准限制,根域名 @ 通常不支持直接设置 CNAME 记录。Cloudflare 为了绕开这一限制,使用了 "CNAME Flattening"(CNAME 拉平)技术:

  1. 用户访问 example.com,Local DNS 向 Cloudflare 的权威 DNS 发起查询;
  2. Cloudflare 的权威服务器代替用户的 Local DNS,向 QEdgeCDN 的调度系统发起递归查询;
  3. 调度系统看到的请求来源,是 Cloudflare 的递归节点,而不是真实用户。

问题就出在第 2 步:Cloudflare 的递归查询节点分布于海外,且未透传客户端所在的 EDNS Client Subnet(ECS)地理信息。QEdgeCDN 的智能调度系统因此将请求来源误判为海外用户, 返回了物理距离较远的海外节点 IP——大陆用户就这样被"调"去了海外。

简单说:不是节点变慢了,而是调度系统"看不见"真实用户在哪,只能按 Cloudflare 海外递归节点的位置就近分配。

解决方案

方案一:更换境内 DNS 服务商(推荐)

将域名的 DNS 托管迁移至支持国内线路智能调度的服务商,如阿里云 DNS、DNSPod 等。 这些服务商对国内地域的 CNAME 解析支持更为精准,能确保国内用户被准确调度至最近的 CDN 节点。

方案二:改用 www 子域名部署 + 301 重定向

如果必须保留 Cloudflare 作为 DNS 服务商,建议不要在根域名(@)上直接部署业务:

  1. 将业务内容部署到 www.example.com 等子域名上,并将该子域名 CNAME 到 QEdgeCDN 分配的接入点;
  2. 使用 Cloudflare 的 Page Rules 功能,将根域名 example.com 设置 301 重定向www.example.com

www 子域名支持标准的 CNAME 解析,不会触发拉平机制,DNS 请求会直接到达 QEdgeCDN 的调度系统,从而避免调度误判。

两个方案怎么选?

方案适合场景注意事项
迁移到境内 DNS可以更换 DNS 托管、希望根域名直接提供服务迁移 NS 记录需等待全球生效(最长 48 小时)
www + 301 重定向依赖 Cloudflare 的其他功能,不便迁移SEO 上以 www 为规范地址,需同步更新站内链接与 canonical

配置过程中有任何疑问,欢迎通过控制台工单系统联系我们获取技术支持。想了解 CNAME 的更多细节,可以继续阅读《CNAME 解析详解》

把这些能力直接用起来

QEdgeCDN 提供亚太边缘加速、CN2 优化线路、智能 WAF 与 SSL 自动托管,注册即可接入,体验版 ¥2/月 起。

继续阅读