a man
2025-12-17
点 赞
1
热 度
76
评 论
0

DNS 解析:记录类型、添加规则、冲突与排障

  1. 首页
  2. 计算机网络
  3. DNS 解析:记录类型、添加规则、冲突与排障

1. DNS相关概念

1.1 DNS解析

DNS(Domain Name System)将人类可读的域名(如 www.example.com)转换为计算机可理解的IP地址(如 192.168.1.1)。当你在浏览器输入域名时,DNS查找对应的IP地址,指引浏览器找到正确的服务器。通过配置域名解析,可以将域名链接至你的网站。

一次解析通常涉及三类角色:

  • 权威 DNS(Authoritative):域名的“最终答案”由谁发布(你的 DNS 服务商/自建权威服务器)。
  • 递归解析器(Recursive Resolver):你电脑/路由器/运营商/公共 DNS(如 114/8.8.8.8)帮你去问权威并缓存结果。
  • 缓存(Cache):解析结果会被缓存到 TTL 到期;不同层都有缓存(浏览器、系统、递归解析器、CDN/网关)。

1.2 DNS记录

DNS记录是域名系统中用于解析域名与IP地址对应关系的关键条目,支持多种类型如A(Address)AAAACNAME(Canonical Name Record)TXTMX(Mail Exchanger)NSCAAPTRSRV等。


1.3 DNS服务器

在DNS查询解析过程中,涉及到多个不同的服务器。通常指的是权威名称服务器(Authoritative Nameserver)。


1.4 站点

站点代表一个具体的域名(如example.com)及其所有相关的DNS记录(A记录、AAAA记录、CNAME记录、MX记录等)。站点是域名管理的最小单位,一个站点包含了所有该域名及其子域名的DNS记录、TTL设置、安全配置、流量管理规则等。


1.5 TTL

英文全称Time To Live ,指的是全球运营商LocalDNS在获得权威DNS返回的解析结果后,将解析结果缓存的有效时间,也称为解析结果在LocalDNS的生存时间。

通常TTL值越小,解析变更对终端用户生效更快。建议将TTL设置为默认10分钟,过小的TTL值会导致Localdns缓存解析结果时间较短,并影响终端用户访问域名的解析速度。日常运维时可以先将TTL调整为1分钟,待2小时后修改记录值并将TTL调整为10分钟,这有助于解析快速生效。


1.6 域名的分层结构

域名层次结构图

  • .com是顶级域TLD
  • aliyun.com是主域名、一级域名、根域名 apex。
  • example.aliyun.com是子域名、二级域名。

也有把aliyun.com称作二级域名的,那么对应的example.aliyun.com就是三级域名。


1.7 CNAME拉平

CNAME拉平(CNAME Flattening)是一种DNS优化技术,它允许在主域名(例如example.com)上添加CNAME记录,CNAME记录通常用于将一个域名指向另一个域名。

在传统的DNS系统中,如果一个主域名使用了CNAME记录,那么它通常不能同时拥有其他类型的记录,如A记录或AAAA记录。ESA提供的CNAME拉平功能解决了这个问题,它允许顶级域名使用CNAME记录,同时保持其他记录的存在。这可以提高DNS解析的性能,因为DNS查询可以直接指向实际的IP地址,而不是再次进行CNAME的解析。


2. 常见记录类型与用途

记录类型用途说明记录值格式常见场景
A将域名指向一个 IPv4 地址。IPv4 地址,如 192.0.2.1网站服务器解析
AAAA将域名指向一个 IPv6 地址。IPv6 地址,如 2001:db8::1为网站提供 IPv6 访问
CNAME将域名指向另一个域名(别名),实现间接指向。另一个有效域名(FQDN),如 cdn.example.net将域名指向 CDN 或 SaaS 服务
MX指定处理该域名邮件的邮件服务器。优先级(数字)+ 邮件服务器域名,如 10 mx1.mailprovider.com企业邮箱配置
TXT提供文本信息,常用于验证域名所有权或配置安全策略。自由文本字符串,如 v=spf1 include:example.com ~all各类验证(如 SSL、SPF、邮箱、DNS 验证)
NS指定某个域/子域的权威 DNS 服务器(委派)。权威 DNS 主机名(FQDN),如 ns1.dnsprovider.com更换 DNS 服务商;把 sub.example.com 委派给另一套 DNS
SRV服务发现:指定某服务的目标主机与端口(可含优先级/权重)。优先级 权重 端口 目标主机,如 10 5 443 svc.example.com(记录名通常为 _service._protoSIP/IM/某些游戏与企业服务的自动发现(如 _sip._tcp_xmpp-server._tcp
CAA声明哪些 CA 允许为该域签发 HTTPS 证书。标志 标签 "值",如 0 issue "letsencrypt.org"0 issuewild "letsencrypt.org"防止误签/限制证书签发机构;提升证书管理安全性
PTR反向解析:把 IP 映射回域名(IP → 域名)。域名(FQDN),如 host.example.com(通常在反向域 in-addr.arpa/ip6.arpa 配置)邮件服务器信誉/反垃圾校验;部分服务要求 IP 有反解
SOA区域起始授权记录:描述一个 DNS 区的元信息(序列号、刷新等)。一组区级字段(一般由 DNS 服务商自动生成/维护)自建权威 DNS 或高级 DNS 运维场景(普通面板通常不手动改)

A:IPv4 地址

  • 含义:把域名解析到 IPv4(例如 192.0.2.1
  • 典型场景:服务器直连、没有 CDN、或根域需要指向 IP
  • 示例
    主机记录(域名前缀)记录类型记录值
    @A192.0.2.1
    wwwA192.0.2.1

    记录值是任意合法公网 IPv4 地址。
    不涉及端口设置,DNS 仅完成域名到IP的解析,不涉及具体应用层访问。

AAAA:IPv6 地址

  • 含义:把域名解析到 IPv6(例如 2001:db8::10
  • 典型场景:站点支持 IPv6;和 A 可同时存在
  • 示例
    主机记录(域名前缀)记录类型记录值
    @AAAA2001:db8::10
    wwwAAAA2001:db8::10

    记录值是任意合法公网IPv6地址。

CNAME:别名(指向另一个域名)

  • 含义:将域名解析指向另一个域名, 由另一个域名提供 IP 地址解析结果。

  • 典型场景:接入 CDN / 负载均衡(CDN 通常给你一个 xxxxx.cdnprovider.net

  • 重要限制:任何其他 DNS 记录都不能与任何给定的 CNAME 记录同名。这意味着如果example.com上有一个指向www.example.cdnprovider.netexample.com上不能有任何其他类型的 DNS 记录。

    假设 Sam 以笔名“Mark”撰写文章。尽管 Mark 和 Sam 是同一个人,但他的法律文件(如出生证明和护照)仍将使用他的真实姓名 Sam。DNS 记录也是如此:别名域只能指向实际域,而“法律文件”(其他 DNS 记录)必须位于该真实域下。

    有一个例外,即在 CNAME 拉平的情况下,此时 CNAME 的行为类似于 A/AAAA 记录。事实上,所有代理 CNAME 记录的行为都是如此。但是,其他记录仍不允许与拉平的 CNAME 记录同名。详细了解 CNAME 拉平。

  • 示例

    主机记录记录类型记录值
    @CNAMEwww.example.cdnprovider.net

    当我们访问example.com这个域名的时候,DNS会通过CNAME记录获取到映射值www.example.cdnprovider.net,基于A记录(通常都是 CDN 服务维护的,我们无需添加),example.com域名最终也会解析到 CDN 边缘节点的IP地址"10.10.10.10"。

MX:邮件交换记录

  • 含义:告诉全世界“发往某域的邮件应该投递到哪些邮件服务器”

  • :必须是域名(mail server hostname),并带优先级(Priority,数值越小优先级越高)

  • 典型场景:企业邮箱(腾讯/阿里/Google Workspace/Exchange 等)

  • 示例

    主机记录记录类型记录值
    mailMXmx01.dm.aliyun.com | 1

    记录值若指向企业邮箱,则为托管型,收信(SMTP 入站)、存储等主要由服务商负责。通常还需要配套加 TXT(SPF/DKIM/DMARC) 做发信防伪与送达率优化。

    示例这种就是托管型, MX 的记录值指向的是阿里邮箱。
    MX 的主机记录决定“哪个域名收信”:

    • 主机记录为 @:邮箱地址形如 name@example.com
    • 主机记录为 mail:邮箱地址形如 name@mail.example.com

    记录值若指向自己的邮件服务器主机名(并且这个主机名必须有 A/AAAA 指到你的公网 IP),属于自建 MTA。需要自己负责:公网 IP/端口 25 可达、反垃圾、灰名单/黑名单、被封禁/退信处理等。

  • 例如:小明(xiaoming@gmail.com)要发送一封邮件给小红(xiaohong@example.com)。

    1. 撰写与发送: 小明在邮件客户端写好邮件,点击“发送”。他的邮件客户端会通过SMTP协议,将邮件提交给小明的邮件服务器(比如Gmail的SMTP服务器)。
    2. 查询MX记录(关键一步): Gmail的SMTP服务器需要找到负责接收 example.com 这个域邮件的服务器。它会向DNS系统发起查询:“example.com 的MX记录是什么?”
    3. DNS返回结果: DNS系统返回查询结果,例如:example.com 的 MX 记录:优先级 5: mx1.qiye.aliyun.com优先级 10: mx2.qiye.aliyun.com。这表示负责接收邮件的主服务器是 mx1.qiye.aliyun.com,备份服务器是 mx2.qiye.aliyun.com
    4. 投递邮件: Gmail的SMTP服务器会尝试连接优先级更高的 mx1.qiye.aliyun.com25端口(SMTP服务默认端口),并通过SMTP协议将小明的邮件“中继”或“传输”给这台服务器。
    5. 接收与存储: mx1.qiye.aliyun.com 这台服务器(运行着SMTP服务守护进程,如Postfix、Exchange等)接收并存储了这封邮件。
    6. 小红收取邮件: 当小红想查看邮件时,她的邮件客户端会使用 POP3IMAP 协议,连接到 对应的邮件服务器(通常是同一个服务器集群,但服务端口是110/POP3或143/IMAP),从自己的邮箱里下载或读取这封邮件。

TXT:文本记录(验证、反垃圾、声明)

  • 含义:放任意文本,常用于验证与策略
  • 典型场景
    • 域名归属验证(例如“添加一条 TXT 证明你拥有此域名”)
    • 反垃圾:SPF(v=spf1 ...)、DKIM(通常是 selector 子域的 TXT)、DMARC(_dmarc 子域 TXT)
    • 其他:Google/Office 站点验证、应用回调校验

NS:域名服务器(委派)

  • 含义:告诉上级“这个区由哪些权威 DNS 服务器负责”
  • 典型场景:把子域委派给另一套 DNS(例如把 dev.example.com 交给公司内部 DNS)

SRV:服务发现(端口 + 主机)

  • 含义:用于定位某服务的主机与端口(例如 SIP、某些 IM/游戏服务)
  • 典型格式_service._proto.name,如 _sip._tcp.example.com

其他记录

  • CAA:声明哪些 CA 允许给该域签证书(HTTPS 证书)
  • PTR:反向解析(IP → 名字),一般由 ISP/云厂商控制,不在普通域名解析面板里配
  • SOA:区域起始授权记录(区级元数据,权威区必有)

3. 解析冲突表

情况一:主机记录为 @(根域 / apex)

在主机记录相同、解析线路相同的情况下,这几种不同类型的解析记录不能共存:

  • ❌:冲突,在相同的主机记录情况下,同一条解析线路下,该两种类型的解析记录不允许共存。如:已经设置了example.com的 A 记录,则不允许再设置 example.com的 CNAME 记录;
  • ✅:不冲突,在相同的主机记录情况下,同一条解析线路下,该两种类型的解析记录可以共存。如:已经设置了example.com的 A 记录,则还可以再设置example.com的 MX 记录;
  • ↔️:可重复,指在同一类型下,同一条线路下,可设置相同的多条记录值。如:已经设置了example.com的 A 记录,还可以继续再设置example.com的 A 记录。
NSCNAMEAURLMXTXTAAAASRVCAASVCB(别名模式)SVCB(服务模式)HTTPS(别名模式)HTTPS(服务模式)
NS↔️
CNAME↔️
A↔️
URL
MX↔️
TXT↔️
AAAA↔️
SRV↔️
CAA↔️
SVCB(别名模式)↔️
SVCB(服务模式)↔️
HTTPS(别名模式)↔️
HTTPS(服务模式)↔️

情况二:主机记录不为 @(如 www / mail 等子域)

在主机记录相同、解析线路相同的情况下,这几种不同类型的解析记录不能共存:

  • ❌:冲突,在相同的主机记录情况下,同一条解析线路下,该两种类型的解析记录不允许共存。如:已经设置了www.example.com的 A 记录,则不允许再设置www.example.com的 CNAME 记录;
  • ✅:不冲突,在相同的主机记录情况下,同一条解析线路下,该两种类型的解析记录可以共存。如:已经设置了www.example.com的 A 记录,则还可以再设置www.example.com的 MX 记录;
  • ↔️:可重复,指在同一类型下,同一条线路下,可设置相同的多条记录值。如:已经设置了www.example.com的 A 记录,还可以继续再设置www.example.com的 A 记录。
NSCNAMEAURLMXTXTAAAASRVCAASVCB(别名模式)SVCB(服务模式)HTTPS(别名模式)HTTPS(服务模式)
NS↔️
CNAME↔️
A↔️
URL
MX↔️
TXT↔️
AAAA↔️
SRV↔️
CAA↔️
SVCB(别名模式)↔️
SVCB(服务模式)↔️
HTTPS(别名模式)↔️
HTTPS(服务模式)↔️

4. 为什么很多网站主站不用 apex,而是用 www

背景

企业网站基于访问加速或者安全访问等方面的考虑,使用了CDN、WAF、OBS等场景,不能直接配置A记录解析到网站IP,需要添加CNAME解析到CDN、WAF、OBS等服务的CNAME地址。

由于DNS标准协议不允许同域名CNAME解析和其他解析类型(例如邮箱MX)共存,而域名又要用作企业办公邮箱,所以会存在特殊情况(例如CNAME与MX解析记录冲突)导致邮箱不可用,影响企业正常办公。


行业通用配置方案

网站解析:

  • 主域名example.com添加A/AAAA记录解析到网站入口IP(或使用 DNS 的 ALIAS/ANAME/Flattening 指向云服务域名)。
  • 子域名www.example.com添加CNAME记录解析到CDN、WAF、OBS等云服务域名。
  • 在网站入口上配置301/302跳转(nginx/Apache/CDN 规则等),将example.com跳转到www.example.com

邮箱解析:

主域名example.com配置MX解析记录(常见配在 apex),与 A/AAAA 不冲突。正常配置 SPF/DKIM/DMARC 即可。

示例

主机记录记录类型记录值/目标说明
@A / AAAA203.0.113.10 / 2001:db8::10根域入口,可用于 301 跳转或直连
wwwCNAMEwww.example.cdnprovider.net主站接入 CDN/WAF/OBS
@MX10 mx1.mailprovider.com企业邮箱入口(托管)
@TXTv=spf1 include:mailprovider.com ~allSPF
_dmarcTXTv=DMARC1; p=none; rua=mailto:dmarc@example.comDMARC
selector1._domainkeyTXTk=rsa; p=...DKIM(由邮箱服务商提供)

当然这个冲突也有其他的解决方案,比如CNAME拉平等


总结

同一主机名下不能同时存在 CNAME 与其他类型(DNSSEC 元记录除外)。因此:

  • 绝大多数邮箱收信地址是 name@example.com,MX 需配置在 apex;apex 就不能放 CNAME。
  • 如果 apex 放了 CNAME,就无法再配 MX/TXT 等,邮箱不可用。
  • 采用www 做 CNAME 接 CDN,apex 用 A/AAAA/ALIAS + MX + 301/302 跳转到 www可以同时满足网站加速与企业邮箱。

对SEO的影响

www 或根域本身不会影响 SEO;关键是不要被判定为两个站点。建议:

  • 统一入口:只认一个主域(www 或 apex),另一侧做 301 永久跳转。
  • Canonical:页面加 <link rel="canonical" href="https://www.example.com/..."> 指向主域 URL。
  • 站长工具:在搜索引擎站长平台验证两个主机名,提交同一站点地图,设置首选域。
  • 证书一致:HTTPS 证书覆盖 example.comwww.example.com
  • 内链一致:站内链接和 sitemap 使用同一主域,避免混用。

5. 使用dig|nslookup命令查询

一般常用的命令查询方法是dig(信息详细,适合调试)或nslookup(Windows 默认支持)。

判断方法:DNS查询返回的结果如果和您在云解析DNS中设置的一致,则代表解析已生效。
如果不一致,则查看缓存时间,如果缓存未到期,请等待缓存到期后再进行测试。
如果缓存到期且结果不一致,参考解析不生效问题快速排查

dig命令

Linux(Debian Ubuntu等) 可通过 sudo apt install bind9-dnsutils 安装,通过man dig 以及 dig -h查看手册和帮助信息。
Windows 用nslookup就行

1 . 最常用的查询命令

命令: dig 域名(示例:dig example.com

dig 域名


2 . 根据记录类型进行查询,比如MX,CNAME,NS,PTR等,只需将类型加在命令后面即可。

命令: dig 域名 记录类型(示例:dig example.com NS)

成功解析记录的示例:
dig 域名 记录类型 成功解析记录


解析未生效、或者未设置解析记录场景的示例:
dig 域名 记录类型 未设置解析记录

如果该域名没有设置对应记录,有些 DNS 服务器会默认返回 SOA 记录


3 . 指定域名DNS服务器测试解析是否生效的命令,以下以指定云解析DNS服务器和公共DNS服务器作为查询解析是否生效的示例演示。

云解析DNS服务器命令:dig 域名 @ns1.alidns.com (示例:dig example.com @ns1.alidns.com )
公共DNS服务器命令:dig 域名 @8.8.8.8(示例:dig example.com @8.8.8.8 )

云解析DNS服务器:
云解析DNS服务器


公共DNS服务器:
公共DNS服务器


4 . 使用dig +trace参数,使用这个参数之后将显示从根域逐级查询的过程,trace查询可以看到根域、 顶级域、以及一级域名的权威服务器的地址,及其各自的返回结果,这样对于追踪DNS解析中的问题有很大的帮助。

命令:dig 域名 +trace(示例:dig example.com +trace)

dig 域名 +trace


nslookup 命令

1 . 查看本地DNS解析结果。

命令:nslookup 域名(示例:nslookup example.com

nslookup 域名


2 . 指定公共DNS,查询解析生效情况。

命令:nslookup 域名 公共DNS(以公共DNS服务器为示例:nslookup example.com 8.8.8.8)

指定公共DNS


3 . 根据记录类型进行查询,比如MX,CNAME,NS,PTR等

命令:nslookup -type=记录类型 域名(示例:nslookup -type=NS example.com

根据记录类型进行查询


qq邮箱服务查询

如果该域名没有设置对应记录,有些 DNS 服务器会默认返回 SOA 记录



我行走在现实与幻想的交界线,左手是被岁月磨钝的理性,右手却仍紧握着不肯熄灭的狂想。世界在我眼中不过是一盘尚未解完的棋局,而我早已越界成子,亦是执棋之人。

a man

enfj 主人公

站长

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

文章目录

欢迎来到云游记

5 文章数
5 分类数
3 评论数
8标签数
最近评论
zeus

zeus


joker一个 🤡

a man

a man


🤣🐔