前言

事情是这样的:

这得从我购买一个域名说起。我先去域名注册商挑选一个喜欢的域名,左挑右挑,发现不是已经被购买,就是高级域名(也就是高价值域名,通常都比较贵)。挑选并购买完成后,我第一时间将 NS 修改为我在 Cloudflare 分配到的 NS 地址。在 Cloudflare 等了一会儿,终于显示已完成。随后,我按照《HEXO 博客搭建指南》的教程将博客托管到 GitHub Pages,并在 Cloudflare 的 DNS 设置中,将我的子域名通过 CNAME 指向 GitHub Pages 地址。

错误排查

一切都结束了吗?当然不是,如果这么顺利,也就不会有这篇文章了,哈哈。

等了几分钟后,我就访问了一下域名,结果提示的是 DNS_PROBE_FINISHED_NXDOMAIN。这个错误码的含义是:浏览器完成了 DNS 查询,但 DNS 服务器明确返回“该域名不存在”。一般来说,造成这种情况的原因有很多,例如:网址拼写错误(当然我不会犯这种错误)、域名未注册、已过期或被暂停、DNS 记录未配置或配置错误、DNS 缓存或传播问题、本地 DNS /网络配置问题,以及 DNSSEC 配置问题等。

刚开始我还以为是 CNAME 配置的问题,检查了一下,发现并没有错误;随后我又检查了 Pages 的配置,也没有发现问题。此时我忽然想到,难道是 DNS 传播问题吗?于是我去在线工具查看传播状态,一看全部都是 ❌,我瞬间意识到问题大概出在 DNS 层面。即使我之后更换了 DNS 地址,情况依然没有改善。

解决方案

我想到了 DNSSEC。这个技术的核心目标,是确保 DNS 响应的真实性和完整性,防止 DNS 欺骗和篡改。它通过数字签名,把域名解析链路上的数据校验串联起来,让解析结果更可信。虽然它并不是直接“解决所有 DNS 异常”的万能钥匙,但在排查这类问题时,它的确能帮助我们确认是否存在 DNS 数据完整性或校验状态异常。

本次的关键点在于:我先确认了域名解析状态,再检查了 DNS 传播结果,最后意识到 DNSSEC 相关配置也需要同步到注册商。于是,我把 Cloudflare 的 DNSSEC 相关设置手动同步到了域名注册商,成功开启了这个功能。随后我再次测试传播,解析状态逐渐恢复正常,最终全部都解析完成了。再用浏览器访问时,页面已经完美显示为我想要的效果。

如果各位想了解如何优化网站访问速度,可以看看我的另一篇文章《Hexo 博客搭建指南》。如果你也想了解 DNSSEC 该怎么配置,欢迎在评论区留言,或者直接发到我的邮箱。收到催更后,我会第一时间更新哦!