IPconf
返回教程列表
DNS 9 分钟阅读

开发者常用 DNS 记录说明

理解 A、AAAA、CNAME、MX、TXT、NS 记录,覆盖 TTL、传播和根域 CNAME 陷阱,并在上线前验证解析结果。

为什么上线前要做 DNS 检查

多数被归咎于"DNS"的故障,其实不是 DNS 慢或不稳定,而是记录写错了、只改了一半、或还没传播到位。把客户切到新域名之前花 30 秒 `dig` 一下,能拦住绝大部分。

下面这几类记录是开发者实际会动到的。知道每种记录是干什么的、怎么读、怎么从外部验证,基本就够用了。

A 与 AAAA:地址记录

A 记录把主机名映射到一个或多个 IPv4 地址,AAAA 对应 IPv6。同一名称配多条 A 记录就是 round-robin DNS,客户端每次查询挑一个。

服务支持双栈时,A 和 AAAA 一起上线。AAAA 先上而服务器还没准备好 IPv6,偏好 IPv6 的客户端(大多数现代系统)会直接连不上。

dig A example.com +short
dig AAAA example.com +short

# 指定公共解析器,绕过本地缓存:
dig @1.1.1.1 A example.com
dig @8.8.8.8 AAAA example.com

CNAME 与根域陷阱

CNAME 把一个主机名别名到另一个,常见于 CDN(`www.example.com → d12345.cloudfront.net`)、SaaS 接入、证书验证子域。

关键规则:根域(如 `example.com`)按 RFC 不能有 CNAME,因为根上必须存在 SOA 和 NS 记录,CNAME 会和它们冲突。服务商用非标准的 "ALIAS"、"ANAME"、"CNAME flattening" 来解决——表面像 CNAME,查询时返回 A/AAAA。DNS 服务商不支持这些就只能在根域用 A 记录。

dig CNAME www.example.com

# 一般无 CNAME,只有 A/AAAA:
dig CNAME example.com

MX 与邮件路由

MX 记录指明谁收这个域的邮件。每条 MX 有一个优先级,数字越小优先级越高。客户端先试最小的,失败才退到大的。

邮件迁移时要注意优先级。旧 MX 留在 10、新 MX 加在 20,意味着只有旧服务器挂了才会走新服务器——这通常不是迁移想要的效果。

dig MX example.com +short
# 返回类似:
#   10 mail1.example.com.
#   20 mail2.example.com.

TXT 记录:SPF / DKIM / DMARC 与服务验证

TXT 记录可以放任意字符串。实际用途主要是:SPF(哪些服务器可以以你的域发邮件)、DKIM(邮件签名的公钥)、DMARC(接收方对失败邮件的处理方式),以及 Google Workspace、GitHub Pages、AWS ACM 等服务的短验证 token。

一个域可以有很多条 TXT 记录,互不排斥。值太长在传输层会被切成多段引号包裹,但逻辑上仍是同一条。大部分工具会自动拼起来。

dig TXT example.com +short

# 过滤单一机制:
dig TXT example.com +short | grep "v=spf1"
dig TXT _dmarc.example.com +short

NS 记录与委派

NS 记录指明一个区域的权威名字服务器。注册商在父级(TLD)写一份 NS,子区域本身也应发布对应的 NS——两者必须一致。

把子域委派给其他服务商(如 `apps.example.com` 交给另一个云)就要在父区域设这个子域的 NS。父子 NS 不一致是"部分用户能访问、部分访问不到"这种典型故障的来源。

dig NS example.com +short

# 看 TLD 实际是怎么委派的(类似 whois):
dig NS example.com @a.iana-servers.net

TTL、传播与验证

每条记录都有 TTL,决定解析器允许缓存多久。计划变更前一天先降低 TTL(如设到 300 秒),切换才能快速生效;变更稳定后再恢复正常 TTL。

"DNS 传播"实质是"缓存过期"。变更在权威服务器上是立即可见的,全球可见要等各处缓存到期。验证时务必从多个公共解析器看,不要只看自己的机器。

# 从多个解析器查:
for R in 1.1.1.1 8.8.8.8 9.9.9.9 208.67.222.222; do
  echo -n "$R: "
  dig @$R A example.com +short
done

# 查看当前 TTL 值:
dig A example.com