填域名解析记录时卡住的地方,通常不是不知道有哪几种记录类型,而是不确定「记录类型」和「记录值」两栏到底该写什么。可以先按这条记录要解决的问题倒推:让域名指向一个 IPv4 地址用 A,指向 IPv6 地址用 AAAA,指向另一个域名用 CNAME,收发邮件用 MX,做所有权或策略校验用 TXT,交给谁托管用 NS。类型选错时,值填得再准也不会生效,所以顺序是先定类型,再定值,最后验证。
适用场景:在 DNS 服务商面板新增或修改一条解析记录。操作动作:先用dig +short NS 你的域名确认域名托管在哪家权威服务器,再按用途选记录类型,A/AAAA 填 IP,CNAME/MX/NS 填域名,MX 还要填优先级。验证方式:用dig +noall +answer 主机名 类型逐类型核对,改完先问权威 NS,再问公共递归。风险边界:根域名填 CNAME 多数厂商不支持;同一主机名上 CNAME 与 MX、TXT 通常不能并存;TTL 和递归缓存会让结果延迟,不能凭一次查询就判定失败。
域名解析记录类型有哪些
这一步要确认的是「这条记录该选哪个类型」,它发生在面板填写之前。可核对的位置有三个:服务商面板新增记录时的「记录类型」下拉框;dig 输出中 IN 后面那一列;以及 nslookup -type=MX example.com 返回的段落标题。以 dig +noall +answer www.example.com A 的输出为例,一行通常是「主机名 TTL IN 类型 值」,第四列就是类型名。
常见类型和它们的取值形态可以直接对照:A 对应点分十进制 IPv4 地址;AAAA 对应带冒号的 IPv6 地址;CNAME 对应一个域名;MX 对应「优先级 + 邮件服务器域名」两段;TXT 对应一段带引号的文本;NS 对应权威服务器域名;SRV 对应「优先级 权重 端口 目标域名」;CAA 对应证书颁发机构限制;PTR 用于反向解析,通常在 IP 段管理方那边配置而不是普通域名面板。
确认是不是「类型选错」的方法很直接:把面板里选的类型和 dig 返回的类型对一遍。如果不一致,说明面板上的改动还没生效,或者改的不是同一台权威服务器,这时候继续调记录值是没意义的。

域名解析记录类型CNAME
CNAME 处在「别名指向」这一步,作用是让一个主机名整体跟随另一个主机名,而不是自己保存一个 IP。面板上通常表现为:记录类型选 CNAME,主机记录填子域前缀(如 www,填 @ 表示根域),记录值填目标域名。值必须是域名,填 IP 会被面板直接拒绝或保存后不生效。
确认一条记录到底是不是 CNAME,可核对的位置是:dig +noall +answer www.example.com CNAME,有输出说明是 CNAME;没有输出说明这个主机名上不是 CNAME。再看 dig www.example.com 的 ANSWER 段,如果是 CNAME,会先出现一行 www.example.com. ... IN CNAME target.example.net.,再跟一行 target.example.net. ... IN A x.x.x.x,这是链式结果,属于正常。
需要留意的是 CNAME 与缓存、CDN 的关系:如果面板上有「代理」「加速」一类的开关,开启后 dig 看到的可能是厂商的地址而不是你自己的源站地址,这时候不能用 dig 结果直接判断源站配置对不对,要回到面板里那条记录的「记录值」字段去看。
域名解析记录类型:先把能核对的事实摆清楚
先明确对象:要处理的是一条具体记录,包含主机名(如 www.example.com)、类型、值、TTL、解析线路五项。前提条件是:这个域名的 NS 确实指向当前面板所属的服务商。核对命令是 dig +short NS example.com,把返回的 NS 名字和面板里显示的 NS 地址对一遍,不一致就先别改记录,改 NS 才是第一步。

再核对现象,建议逐类型查而不要依赖 ANY,很多权威服务器对 ANY 做了限制,返回空并不代表没有记录:
dig +noall +answer example.com A
dig +noall +answer example.com AAAA
dig +noall +answer www.example.com CNAME
dig +noall +answer example.com MX
dig +noall +answer example.com TXT
dig +noall +answer example.com NS
最后区分「权威结果」和「递归缓存结果」。dig @ns1.example.net www.example.com A +norecurse 问的是权威服务器,看到的是配置本身;dig @223.5.5.5 www.example.com A 这类公共递归看到的是缓存后的结果。两边不一致时,先看 TTL 剩余时间,不要急着反复改记录。
域名解析记录类型最容易搞错的一点
最常见的误解是「CNAME 可以和其他记录共存在同一个主机名上」,以及「根域名也能填 CNAME」。DNS 规定一个主机名存在 CNAME 时,不应再存在其他类型记录;根域名(@)填 CNAME 通常不被允许,部分厂商用别名或拉平的方式做了兼容,但那属于厂商行为,不能当作通用做法。

能把两种情况区分开的检查动作是:对同一个主机名跑一次 dig +noall +answer 主机名,不带类型参数。如果 ANSWER 段里出现同一主机名既有一行 CNAME 又有一行它自己的 A 记录(而不是指向目标域名的 A),基本可以判定配置有冲突;如果只看到 CNAME 加目标域名的 A,则是正常的链式结果。另一种情况是根域名配了 CNAME,查询根域时会直接查不到 A,或返回 SERVFAIL。
域名解析记录类型:一个照着就能做完的做法
以下路径适合在面板新增或修正一条 A/CNAME 记录后使用,命令中的域名和 NS 名字按实际替换。
# 1. 确认域名托管在哪台权威服务器
dig +short NS example.com
# 期望:返回 2 条以上 NS 域名,且与面板显示的 NS 一致
# 2. 直接问权威服务器,绕开递归缓存
dig @ns1.example.net www.example.com A +norecurse
# 期望:ANSWER 段出现你要的地址,或出现 CNAME 及其目标
# 3. 逐类型核对,确认没有并存冲突
dig +noall +answer www.example.com
# 期望:要么一组 A,要么 CNAME 加目标 A,不要两者并列
# 4. 再用公共递归确认对外可见
dig @223.5.5.5 www.example.com A
# 期望:与第 2 步最终结果一致;不一致时看 TTL 是否还在有效期
# 5. 需要看完整解析路径时
dig +trace www.example.com A
第 1 步结果和面板 NS 不一致,就先修 NS,不要继续往下走。第 2 步没有任何 ANSWER,多半是记录还没保存成功,或记录名填错(比如把完整域名填进了「主机记录」,导致变成 www.example.com.example.com)。第 3 步出现同名并列,按上一节的判断方法处理冲突。第 4 步和第 2 步不一致且 TTL 还很长,属于缓存未过期,等 TTL 到期或临时调小 TTL 后再改,才是可预期的做法。