一次 DNS 解析要走多少步

先看一个现象

同一条命令,在你自己电脑上 ping 你的域名 能通,在别人电脑上提示“找不到主机”;过半小时再试又好了。服务器没重启、配置没改、也没人动过。

这种事九成发生在域名解析上,和服务器本身一点关系都没有。要判断这类问题,得知道一个域名是怎么变成 IP 的。

两种查询:递归和迭代

这是第一个容易混淆的概念。DNS 里有两类角色在做不同的事:

  • 递归查询:你的电脑问本地 DNS“mcstudio.top 的 IP 是多少”,本地 DNS 的回答必须是最终答案,不能说“你去问别人”。这种负责到底的行为叫递归。
  • 迭代查询:本地 DNS 去问根服务器,根服务器不给答案,只说“我不知道具体的,但 .top 的服务器在那儿,你去问它”。一级一级指路,这叫迭代。

换句话说:你的电脑对本地 DNS 是递归,本地 DNS 对上层是迭代。你电脑里填的那个 192.168.1.1 或 223.5.5.5 就是本地 DNS,严格的名字叫递归解析器。

一条 A 记录要经过哪几层

按顺序:

  1. 浏览器 DNS 缓存。Chrome 自己有缓存,通常 60 秒到几分钟。在 chrome://net-internals/#dns 可以看和清。
  2. 操作系统 hosts 文件。Windows 在 C:WindowsSystem32driversetchosts,优先级高于任何 DNS 服务器。这里写错一行,怎么刷新 DNS 都没用——排查时这是第一个要看的地方。
  3. 系统 DNS 缓存。Windows 用 ipconfig /flushdns 清;Linux 用 systemd-resolved 的话是 resolvectl flush-caches。
  4. 递归解析器(运营商 DNS 或公共 DNS)。它自己也有缓存,命中就是 1 毫秒内返回。
  5. 根服务器。13 组逻辑根,靠任播在全球部署了上千个物理节点。它只知道 .com / .top / .cn 这些顶级域的服务器地址,不知道你的域名。
  6. 顶级域服务器。负责 .top 的那组服务器,告诉你 mcstudio.top 的权威 NS 是哪几台。
  7. 权威 NS。你的域名注册商或 DNS 服务商的服务器,这里存着你真正填的那条 A 记录。

一个从没被查过的域名,走完 5–7 步大约要 20–150 毫秒;命中缓存后不到 1 毫秒。差三个数量级,这就是“第一次打开慢、之后快”的原因。

记录类型速查

类型 作用 例子
A 域名指向 IPv4 地址 mcstudio.top A 8.146.230.105
AAAA 域名指向 IPv6 地址 没有 IPv6 就留空,绑定 CDN 时再填
CNAME 域名指向另一个域名 www CNAME mcstudio.top
MX 邮件服务器,带优先级数字 @ MX 10 mx.qq.com
TXT 任意文本,用于域名验证、SPF、DKIM 搜索引擎和证书验证会要求填
NS 这个域由哪几台服务器解析 决定权威服务器是谁
TTL 不是记录类型,是缓存存活秒数 600 表示 10 分钟

“改了 DNS 不生效”的真相

绝大多数情况不是没生效,而是你看到的还是旧的缓存。上面三层缓存任意一层没到期,你看到的都是旧值。

判断方法是绕开缓存直接问权威,再和本地看到的结果对比:

# 1) 直接问公共 DNS,绕过运营商
nslookup mcstudio.top 8.8.8.8

# 2) 问本机默认 DNS,看它返回什么
nslookup mcstudio.top

# 3) Linux / macOS 上追踪完整解析路径
dig +trace mcstudio.top

如果第 1 条已经是新 IP、第 2 条还是旧 IP,那纯粹是本机或运营商缓存,等 TTL 到期就行,不用改任何配置。反过来如果第 1 条也是旧值,说明权威记录确实没改成功,要去域名控制台查。

常踩的几个坑

  • 只解析了 @,没解析 www。这是“你的站能开、我的打不开”最常见的原因。mcstudio.top 和 www.mcstudio.top 是两条完全独立的记录,必须分别设置。
  • CNAME 和 MX 冲突。域名根(@)如果设了 CNAME,就不能再设 MX 和 TXT,协议不允许。要用域名邮箱就得老实写 A 记录。
  • CNAME 双跳。A 指向 B,B 又 CNAME 到 C。能解析,但多一次查询,部分老解析器会直接失败。
  • 泛解析(*)滥用。加了 * 记录后,任何不存在的子域名都会返回同一个 IP。表面省事,实际会让错误域名也返回 200,被搜索引擎当成重复内容。
  • 迁移服务器前忘改 TTL。迁机前应先把 TTL 调小(比如 60 秒),等于提前缩短“凝固时间”,迁完再调回去。这一步做不做,决定了切站是“几分钟生效”还是“一个小时后还有人称打不开”。

本站的实际配置

这台站用了两条记录指向同一个 IP:mcstudio.top 和 www.mcstudio.top 都解析到 8.146.230.105,然后在 Nginx 里把 www 和所有 http 请求统一 301 到 https://mcstudio.top。这样两个写法都能访问,但搜索引擎只会看到一个规范地址,权重不会分散到两个域名上。

想看一个域名当前在各处解析成什么,可以用 DNS 查询工具 一次性对比多个公共解析器的返回,缓存不一致的情况一眼就能看出来。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容