第 2 课 · 输入网址按下回车后:DNS 全程之旅
浏览器只认 IP 地址,不认域名。把 example.com 翻译成 IP 的系统就是 DNS——互联网的电话簿。它是你按下回车后发生的第一件事,也是最容易被忽视的故障点:解析错了,后面一切都不对。
一次解析的完整链条
浏览器缓存 → 操作系统缓存 → 本地递归解析器(如运营商 DNS 或 1.1.1.1)→ 根服务器 → 顶级域(.com)服务器 → 该域名的权威 DNS。拿到最终答案后,每一层按 TTL 缓存,下次同样的问题就地回答,不再长途跋涉。
为什么要分这么多层?因为规模。全球域名以亿计,任何单点都存不下也查不动——分层委派让每一层只回答「下一跳该问谁」,把问题逐级收敛到最终负责人(权威 DNS)。
必须认识的记录类型
| 记录 | 作用 | 典型场景与注意点 |
|---|---|---|
| A | 域名 → IPv4 地址 | 网站指向服务器,最基础的一条 |
| AAAA | 域名 → IPv6 地址 | 双栈部署;移动网络用户受益明显 |
| CNAME | 域名 → 另一个域名 | 接 CDN / 对象存储;根域(@)不能用 CNAME |
| NS | 该域名交给哪台 DNS 负责 | 在注册商处修改;换 DNS 服务商必动 |
| MX | 收信服务器与优先级 | 企业邮箱必配;数字越小优先级越高 |
| TXT | 任意文本 | 域名所有权验证、SPF 发信白名单 |
TTL 决定生效速度
TTL 是各级缓存保存该记录的秒数。计划迁移服务器前,提前 1–2 天把 TTL 降到 300–600 秒,切换当天生效更快;稳定后再调回 3600 秒以降低查询压力。「全球生效要 48 小时」通常只发生在 NS 变更或个别运营商缓存顽固时,普通 A 记录变更多数几分钟内可用——用下面的命令可以立刻验证,不必干等。
动手:六条命令吃透 DNS
# 1) 查 A 记录(+short 只看答案)
dig example.com +short
# 2) 查完整解析链路:用了哪台递归、TTL 多少
dig example.com
# 3) 从根开始逐级追踪(看 NS 委派链是否完整)
dig example.com +trace
# 4) 查邮件与文本记录(SPF 在 TXT 里)
dig example.com MX +short && dig example.com TXT +short
# 5) 指定公共 DNS 对比(排除本地缓存污染)
dig @223.5.5.5 example.com +short && dig @1.1.1.1 example.com +short
# 6) 反查 IP 的 PTR(邮件服务器常被收件方检查)
dig -x 服务器IP +short
常见故障三个样
- SERVFAIL:多为权威侧配置错误(NS 指向失效、DNSSEC 签名损坏)——先用
+trace看委派链断在哪一层; - 改了记录「没生效」:几乎总是某一层缓存未过期——换
dig @公共DNS验证,公共 DNS 已更新而本地没有,就是本地缓存问题; - 能 ping 通 IP 却打不开域名:解析层问题实锤——检查 A 记录是否存在、是否指错 IP、根域是否误用了 CNAME。
DNS 与安全的关系
DNS 默认不加密也不签名,因此存在被劫持与投毒的可能:公共 Wi-Fi 下「网站变广告」多数是解析被劫持。防护的入门动作:服务器与个人设备改用可信的公共 DNS;对外业务开启 DNSSEC(由 DNS 服务商支持);域名注册商处务必开二次验证——解析权限失守等于整个站点失守。
动手:给自己的域名配齐一套记录
以 example.com 指向服务器 203.0.113.10 为例,一套建站加邮件的最小记录集是:
# A 记录:根域与 www 指向服务器(TTL 先设 600,稳定后调 3600)
example.com. 600 IN A 203.0.113.10
www.example.com. 600 IN A 203.0.113.10
# MX 记录:收信交给邮件服务商(数字为优先级,越小越先)
example.com. 3600 IN MX 10 mx1.mailprovider.com.
# TXT 记录:SPF 声明谁有权以你的域名发信
example.com. 3600 IN TXT "v=spf1 include:mailprovider.com -all"
配完逐条用 dig 验证;MX 与 SPF 生效后再发一封测试邮件到 Gmail,查看「显示原始」确认 SPF 通过——发信信誉是从第一天开始积累的。
DNS 与邮件到达率:SPF、DKIM、DMARC 一句话版
- SPF(TXT 记录):声明「哪些服务器有权以我的域名发信」,收件方据此拒收冒名信;
- DKIM(TXT 记录 + 私钥签名):给每封邮件盖防伪章,途中被改立刻能看出来;
- DMARC(TXT 记录):告诉收件方「SPF/DKIM 失败怎么办」,先用 p=none 收报表观察,再逐步收紧到隔离或拒收。
三件套缺一,业务邮件进垃圾箱的概率大增。企业邮箱服务商都会给出对应的记录值,照抄进解析面板即可。
公共 DNS 怎么选
服务器与办公网建议配置两家以上公共 DNS 互为备份(如 223.5.5.5 与 1.1.1.1),避免单一解析商故障导致全站「打不开」。选择标准很简单:稳定、响应快(可以用 dig 的 Query time 对比)、支持 ECS(按用户位置返回就近结果)。个人设备同理——解析被劫持的广告注入,换可信公共 DNS 通常立竿见影。
本节小结
- DNS 是分层委派的查询系统:缓存 → 递归解析器 → 根 → 顶级域 → 权威,答案按 TTL 逐层缓存;分层是为了规模。
- A/AAAA/CNAME/NS/MX/TXT 六类记录覆盖建站与邮件的绝大多数需求;根域不能用 CNAME,迁移前先降 TTL。
- 排查用 dig 三板斧:+short 看答案、+trace 看委派、@公共DNS 排除本地缓存;SERVFAIL 查权威侧,「没生效」查缓存层。