Skip to content

03 · DNS 原理与排查 ​

输入域名按下回车,第一件事不是发请求,而是查 DNS。域名解析慢、解析到旧 IP、某些地方能访问某些地方不能,都是 DNS 的典型问题。本篇讲清解析链路、缓存与 TTL,再给一套排查套路。

速览卡 ​

项内容
一句话定位从域名到 IP 的解析链路与排障
核心内容递归/迭代查询、各级缓存、TTL、常见失败定位
读完能回答为什么改完解析不生效?为什么本地能访问线上不行?
相关板块N04 HTTP | N10 CDN 与负载均衡

一、解析链路:一次"地址簿"查询 ​

text
浏览器 → 系统缓存 → 本地 DNS(递归) → 根 → 顶级域 → 权威 DNS → 拿到 IP
环节角色
本地缓存 / hosts最快,但可能过期或被人改
递归解析器替你逐级查询并缓存结果(运营商 / 公共 DNS)
根 / 顶级域服务器只管"告诉你去哪一级问"
权威 DNS域名真实记录的所有者

心智模型:DNS 像"按目录查电话",每一级只告诉你下一级在哪,最后才返回真实 IP。


二、记录类型 ​

类型含义
A / AAAA域名 → IPv4 / IPv6
CNAME域名 → 另一个域名(别名)
MX邮件服务器
TXT文本记录(SPF、验证等)
NS指定权威服务器

三、TTL 与缓存:为什么"改了不生效" ​

概念说明
TTL记录可被缓存的秒数
改 TTL 时机变更前先调小 TTL,变更完再调回
缓存层级浏览器 / 系统 / 递归解析器各有一层

改解析不生效,八成是 TTL 未到。排障前先确认"你查到的 IP 是旧值还是新值",再决定是否等待或清缓存。


四、常见失败定位 ​

现象可能原因排查方向
ERR_NAME_NOT_RESOLVED域名拼错 / 记录不存在nslookup 确认
本地通、线上不通hosts 或本地缓存覆盖对比公共 DNS 结果
解析到旧 IPTTL 未过 / CDN 切换中等 TTL 或换解析器
时快时慢递归解析器距离远 / 有故障换公共 DNS 对比
解析成功但连不上域名没问题,是连通性转到 N11 抓包

五、自检清单 ​

  • [ ] 能画出递归查询到权威服务器的链路
  • [ ] 知道 A/CNAME/MX/NS 记录各是什么
  • [ ] 能解释"改了不生效"与 TTL 的关系
  • [ ] 会用手头的 nslookup / dig 查看解析结果
  • [ ] 能把 DNS 问题与连通性问题区分开

六、常见误区 ​

误区事实
"改解析立即生效"要等所有缓存层的 TTL 过期
"DNS 慢就是解析器问题"也可能是多个 A 记录之一失效
"CDN 只解决静态缓存"CDN 也做 DNS 智能调度(见 N10)
"清了浏览器缓存就够"系统与递归解析器也有缓存

七、动手练习 ​

练习 A:看当前解析 ​

nslookup github.com(Windows)或 dig +trace github.com(Linux/macOS),观察返回的 IP 与 TTL。

练习 B:对比解析器 ​

分别用运营商 DNS 与 1.1.1.1 解析同一个域名,对比结果差异与耗时,思考差异来源。

练习 C:走完整链路 ​

dig +trace 观察根 → 顶级域 → 权威的每一跳,把输出与第一篇的链路图对上。


相关文档 ​

本区 ​

其他域 ​