跳到主要内容

DNS 记录类型全解:A/AAAA/CNAME/MX/TXT 与域名解析配置实战

讲清 A、AAAA、CNAME、MX、TXT、NS 各自管什么,TTL 怎么设,配网站和邮箱的真实记录长啥样,以及解析不通时按什么顺序排查,附一组可抄的配置。

发布于 作者 李雷
#DNS #域名解析 #运维 #网站配置 #邮箱

DNS 记录类型全解:A/AAAA/CNAME/MX/TXT 与域名解析配置实战

第一次自己配域名的人,十有八九栽在同一个地方:控制台一堆下拉框,A、AAAA、CNAME、MX、TXT、NS 摆在那里,不知道哪条该填、填错了又看不出来。这篇按"网站怎么上线、邮箱怎么收发、解析不通怎么查"三件事,把常用记录讲透,顺带说清 TTL 这个最容易被忽略的字段。

先认清六种主力记录

域名解析的本质,是把一个人能读的名字翻译成机器能找到的地址。不同记录负责翻译的"目标"不一样:

  • A 记录:把域名指到一个 IPv4 地址,比如 example.com 指向 203.0.113.10。这是网站上线最常用的一条。
  • AAAA 记录:A 的 IPv6 版本,指到形如 2001:db8::1 的地址。一般和 A 一起配,两个都给。
  • CNAME 记录:把一个名字指向另一个名字,而不是 IP。比如 www.example.com 指到 example.com,解析器会顺着这条链一路追到末端的 A/AAAA。
  • MX 记录:邮件交换记录,告诉别人"给这个域发信,送到哪台邮件服务器"。
  • TXT 记录:存任意文本,实际用来放 SPF、DKIM、DMARC 这些邮件验证信息,也常用来做域名归属验证。
  • NS 记录:指明这个域由哪几台权威 DNS 服务器负责,换 DNS 服务商时改的就是它。

一句话记区分:A 和 AAAA 是叶子,直接指地址;CNAME 是指针,指向另一个名字。

配一个能上线的网站需要哪几条

假设你买了 example.com,想让主站和 www 都能访问,服务器 IPv4 是 203.0.113.10,IPv6 是 2001:db8::1。一组干净的配置长这样(zone 文件写法):

example.com.        300   IN  A      203.0.113.10
example.com.        300   IN  AAAA   2001:db8::1
www.example.com.    300   IN  CNAME  example.com.

根域(也就是光秃秃的 example.com)用 A 和 AAAA 直接指 IP,www 子域用 CNAME 指回根域。这样维护时只需改根域那两条,www 自动跟着走。

这里有个新手必踩的坑:根域不能挂 CNAME。规范规定一个名字挂了 CNAME 就不能再挂别的记录,而根域必须有 NS 记录,两者冲突。所以 example.com 这一层只能用 A/AAAA,或者用服务商提供的 ALIAS / CNAME flatten 功能。SaaS 平台只给你一个域名不给 IP 时,这一条尤其要记牢。

邮箱靠 MX 和 TXT 撑起来

网站和邮箱解析是两套独立的事。想让 @example.com 能收发邮件,先配 MX 指向邮件服务商的服务器,再用 TXT 放好验证信息:

example.com.   3600  IN  MX   10 aspmx.l.google.com.
example.com.   3600  IN  TXT  "v=spf1 include:_spf.google.com ~all"

MX 前面那个 10 是优先级,数字越小越优先。SPF 写在 TXT 里,声明"谁能以我的名义发信"。

邮件这块最常见的事故是 配了第二条 SPF。比如本来走 Google Workspace,后来又接了 SendGrid 发收据,顺手又加了一条独立的 SPF TXT,结果邮件开始进垃圾箱。原因是一个域只允许一条 SPF,收件方看到两条直接判 PermError。正确做法是合并成一条:v=spf1 include:_spf.google.com include:sendgrid.net ~all。另外 SPF 单次评估有 10 次 DNS 查询的硬上限,堆三四家服务商就可能爆掉,记得提前算一下。

TTL:解析里最被低估的字段

每条记录都带一个 TTL(生存时间,单位秒),意思是"这条解析结果可以被缓存多久"。设 3600 就是各级缓存最多记一小时。

平时把 TTL 设大(比如 3600 或更高)省查询、抗抖动没问题。但迁移服务器或换 IP 之前,务必提前把相关记录的 TTL 降到 300 甚至 60。否则你改了记录,全世界的缓存还按旧值返回老 IP,可能拖上一两个小时才全部生效,期间用户一半连新一半连旧。等迁移稳定了再把 TTL 调回去。上面网站配置我特意用了 300,就是留迁移余地。

解析不通时,我按这个顺序查

说点亲身经验。我帮人接过不少域名,真正卡住的时候,我从不一上来就怀疑服务器,而是从外到内一层层剥:

  1. 先确认 NS 指对了:域名在哪家解析,生效的就得是哪家的 NS,改完 NS 本身也要等缓存,新域名甚至要等一两天。
  2. 再查 A/AAAA 是不是指到正确 IP:用 dig example.com Anslookup 直接看返回值,别信浏览器缓存。
  3. 然后看 是不是 TTL 没降就改了记录:旧值还在缓存里,等就行,或拿没缓存过的网络验证。
  4. 邮件不通就单独查 MX 和 SPF:MX 不能指向 CNAME,SPF 只能有一条。

按这个顺序走,九成问题在前两步就现形了。记不住各记录的语法和坑,可以直接开 DNS 记录解释器,搜 cnamespf 就能弹出对应记录的写法、真实场景和踩过的坑,还能用内置在线查询验一下当前解析结果。服务器那头的反代和站点配置,则可以对着 Nginx 速查表 一条条核。

小结

把记录各管什么记清楚,配置其实没那么玄:网站用 A/AAAA 指 IP、子域用 CNAME 串起来,邮箱用 MX 加一条干净的 SPF TXT,迁移前先降 TTL,出问题从 NS 往下查。这套思路对个人博客和小团队的生产域名都够用了。


Made by Toolora · Updated 2026-06-13