通过优化的 CNAME 解析,改善 cloudflare、Vercel 和 Netlify 在中国大陆的访问速度和稳定性,解决官方默认解析的不稳定问题。附测速结果和常见问题解答

2024年4月1日

1 min read

前言

因为官方默认的 cname 解析出来的 ip 在国内访问的稳定性都很差,所以写了这个项目

Warning (IMPORTENT)

本 post 更新不及时,请点击下方 GitHub repo 查看!

如何使用

先放 repo,欢迎提交 issue。

enhanced-FaaS-in-China

  • 如果你的网站部署在 cf,则把 cname 记录改为:
    • cf-cname.xingpingcn.top
      • 使用此 dns 解析建议:如果你的域名托管在 cloudflare,那么使用这个 cname 很有可能会遇到 403。建议把你的域名托管在非 cloudflare 平台,然后再在 cf 平台中删除你的站点,之后再使用。测速的时候一定要看下面的图。如果有些服务,例如 cf worker,必须要把域名托管在 cf,那么建议你使用 cf 的 saas 功能。
  • 如果你的网站部署在 vercel,则把 cname 记录改为:
    • vercel-cname.xingpingcn.top
  • 如果你的网站部署在 netlify,则把 cname 记录改为:
    • netlify-cname.xingpingcn.top
  • 如果你的网站部署在 netlifyvercel 上,则把 cname 记录改为:
    • verlify-cname.xingpingcn.top
      • 使用此 dns 解析建议:先把 cname 记录改为官方提供的 url,等 ssl/tls证书 生成之后再把 cname 记录改为 verlify-cname.xingpingcn.top
怎么测速
怎么测速

可能存在的问题

  1. 浙江、福建、河南的个别 isp 访问可能会失败 目前似乎只有泉州被墙(官方的 cname 也是同样的问题,或许是 isp 限制导致的)
  2. 对于测速工具的选择,itdog.cn 测出来的结果有点问题(会出现大片的红,原因未知),可以试试用 boce.com、cesu.net 之内的来测

测速结果

CF

cf-22 点
cf-22 点

Vercel

Netlify

Q&A

Q:和官方提供的 cname 有什么差别?

A:

  • 官方的 cname 有时在平均速度上是很快的,但是缺乏稳定性,会出现好几个省份都访问不了的情况,又或者个别省份相应时间非常长
  • 而我的 cname 在平均速度上可能不是最快的,平均响应速度尽量维持在 1 秒内,最长的响应时间控制在 2 秒内,而返回非 200 状态码的省份尽量少于等于 2 个

Q:为什么分路线解析不准确?

A:我使用的是权威 DNS 服务器自带的路线解析,可能存在误判。如果你想要更加精准的分路线解析,可以自行选取其他 DNS 服务器——如 dnspod——并添加Netlify.jsonVercel.json里的 IP 到 A 记录。或使用 NS1.COM 作为权威 DNS 服务器,并设置根据 ASN 进行路线解析。你可以看看我写的ASN 列表

Q:为什么设置了你的 CNAME 解析后网站不能访问?

A:

  • 这大概率是使用了 verlify-cname.xingpingcn.top 导致的。需要先把 CNAME 记录改为官方提供的链接,等待 SSL 证书生成后再重新设置。这是由于该解析包含两个平台的 IP,平台每次访问都会获得二者之一的 IP,因而认为你在平台所填写的域名并不是你所拥有的。但是一旦生成证书后,证书就会缓存在平台上。
  • netlify支持上传自己的证书。如果还是不行就申请一个能自动续期的证书,写 webhook,在证书更新的时候自动部署到 netlify。

Q:为什么有的路线(如电信)的 DNS A 记录解析是官方提供的默认 IP?

A:

这是因为该路线的其他 IP 质量较差,所以暂时停止解析其路线,改用官方提供的默认 IP。你可以通过同时将网站部署在 vercelnetlify,把 cname 解析改为 verlify-cname.xingpingcn.top,从而提高容错率。两个平台同一线路同时失效的概率要低许多。

Q:为什么 json 文件有的路线是一个空列表?

A:

同上