网络

DNS 查询指南:记录类型、TTL 与故障排查

ToolMellow ·

DNS 查询是向解析器询问某个名称下的某种记录。使用 ToolMellow 的 DNS 查询工具,可以查看返回的地址、别名、邮件路由或文本记录,比较所选服务商的响应,并保存带时间信息的查询结果。开始前,请确认需要查询的准确 DNS 名称和记录类型。

本工具通过可用的 ToolMellow 查询位置访问 Cloudflare 和 Google Public DNS。结果仅反映这些请求,不能说明所有用户、设备或解析器都会看到相同内容。本指南介绍操作方式、结果含义,以及返回值与预期不同时的排查方法。下文中的名称、地址和记录值均为示例,并非实时测量结果。

DNS 查询

如何执行 DNS 查询

打开 DNS 查询工具,等待连接配置加载完成。输入 www.example.com 等名称,选择记录类型,再选择一个或两个服务商以及可用的查询位置。点击“检查 DNS”提交请求。仅打开页面或修改名称,不会自动查询该名称的记录。

解读返回值前,先查看服务商、查询位置、状态和时间戳。如果已知需要的值,可以在可选的预期值字段中输入文本,并选择精确匹配或包含匹配。“下载 DNS 报告”会将当前结果保存为 dns-results.json;如需比较变更前后的情况,请保留这个文件。

  • 每次查询使用一个 DNS 名称和一种记录类型。排查两种地址协议时,请分别查询 A 和 AAAA。
  • 默认选择 A、两个服务商和 ToolMellow 主查询位置。可用位置由服务当前的配置决定。
  • 修改名称、记录类型、服务商或查询位置会清除上次结果。修改预期值或匹配模式,只会在本地重新比较当前结果。

根据任务选择 DNS 记录类型

不同 DNS 记录回答不同的问题。查询 A 不等于获取域名的全部记录,查询 MX 也不会发送测试邮件。类型选择器支持九种记录。预期值比较支持下列八种正向查询类型;PTR 结果可以查看和下载,但不支持预期值比较。

根据任务选择 DNS 记录类型
类型记录内容实际用途与范围
AIPv4 地址数据查看所查名称返回的 IPv4 地址;不会测试该地址上的网站。
AAAAIPv6 地址数据与 A 分开检查 IPv6;IPv4 目标可用,不代表 IPv6 也可用。
CNAME别名的目标名称查看别名及返回文本的写法。DNS 别名本身不会创建 HTTP 重定向。
MX邮件交换器的优先值与目标名称同时查看优先值和主机名。记录存在,不代表邮件能够成功投递。
TXTDNS 中承载的文本在服务商指定的准确记录名称下,查看验证或邮件相关的数据。
NS名称服务器名称查看返回的名称服务器数据;这些名称不同于本次查询选择的递归解析服务商。
SOA区域的权威信息查看区域元数据及负响应的上下文;查询时间戳不是记录的修改时间。
CAA证书颁发机构授权数据查看发布的授权信息;这不是证书或 HTTPS 有效性检测。
PTR反向 DNS 的名称指针输入完整的反向 DNS 记录名称。此处不接受原始 IP 地址,也不支持预期值比较。

RFC 1035:DNS 实现与记录格式RFC 3596:IPv6 的 DNS 扩展RFC 8659:证书颁发机构授权

输入准确的 DNS 名称,包括 TXT 名称和国际化域名

输入 DNS 记录所属的名称,不要带 URL 协议、路径、邮件地址或端口。根域名与 www 名称是不同的输入。服务商的验证说明可能要求子域名或以下划线开头的名称;在根域名查询 TXT,不会自动找到其他名称下的 TXT。

工具会去掉输入两端的空白,将支持的 Unicode 点号转换为普通点号,去掉末尾的根点号,使用 Node 的 domainToASCII 将支持的国际化域名转换为 ASCII,并将查询名称转为小写。转换后至少需要两个标签,每个标签不超过 63 个 ASCII 字符,总长度不超过 253 个字符。普通标签允许字母、数字及内部连字符。工具接受支持的下划线前缀服务标签,但不接受任意出现在普通标签内部的下划线。

输入准确的 DNS 名称,包括 TXT 名称和国际化域名
示例输入用途输入说明
example.com根域名的记录选择所需类型;不会列出全部类型或子域名。
www.example.com.www 名称下的记录可以输入末尾的根点号;规范化查询名称时会去掉它。
_dmarc.example.com观察 DMARC 相关 TXT选择 TXT。单次查询不评估完整的 DMARC 策略发现过程或邮件标识符对齐。
selector._domainkey.example.com观察 DKIM 相关 TXT用邮件服务提供的选择器替换 selector。
bücher.example国际化域名输入支持的国际化域名会转为 ASCII 兼容的查询名称;请查看结果中的规范化名称。
10.113.0.203.in-addr.arpaPTR 记录名称输入此反向 DNS 示例将 IPv4 的四段数字倒序排列;预期值比较不可用。
https://example.com/path、203.0.113.10、*.example.com不接受的输入形式请改用 DNS 名称。若输入的是 IP 地址,请使用单独的 IP 查询或反向 DNS 工具。

RFC 5891:国际化域名Node.js:URL domainToASCII 转换RFC 1035:DNS 实现与记录格式RFC 6376:DKIM 签名与选择器密钥查询RFC 9989:DMARC 策略发现与对齐

递归解析服务与权威名称服务器的职责不同

权威名称服务器发布 DNS 区域的数据。递归解析器代客户端获取答案,也可以复用缓存信息。选择 Google Public DNS 或 Cloudflare,表示本次查询使用该递归服务;并不说明该服务托管你的 DNS 区域,或就是域名的权威名称服务器。

ToolMellow 的服务器或配置的探测节点向固定的服务商 HTTPS 端点发送请求,并读取 JSON 响应。这种由服务商定义的 JSON 格式,与 DNS over HTTPS 标准规定的 DNS 二进制报文不同。查询不会更改设备的 DNS 设置,也不支持输入任意名称服务器直接查询,或跟踪从根开始的每一级委派。

RFC 1034:域名、解析与缓存RFC 8484:通过 HTTPS 进行 DNS 查询Google Public DNS:DNS over HTTPS 的 JSON APICloudflare 1.1.1.1:JSON DNS over HTTPS 请求

结合记录名称、TTL 和查询信息解读结果

每条答案记录包含所属名称、记录类型、返回的 TTL(秒)和文本数据。除了值,还要查看名称:递归响应可能包含别名链,以及别名目标的地址。辅助 CNAME 或其他返回类型,不能替代你请求的记录类型。遇到负响应或转介响应时,可以展开“权威记录”查看上下文。

每个服务商与位置的结果都有查询时间戳和耗时。时间戳描述本次查询,而不是域名管理员最后修改 DNS 的时间。耗时包含请求路径以及 HTTP 和处理开销,不能作为你自己的连接上仅测 DNS 的基准。如果请求失败而没有记录或标记,应将这些信息视为缺失,不要推测其值。

RFC 1035:DNS 实现与记录格式RFC 2308:DNS 查询的负缓存

区分 DNS 中的数据不存在与查询失败

有效的负响应与未能完成的请求,需要采取不同的后续措施。在 ToolMellow 中,正面的 NOERROR 分类表示包含请求类型的答案。其他成功的 DNS 响应会根据 SOA、CNAME 或 NS 上下文分类。下表解释工具显示的状态,避免将所有空答案都当作域名不存在。

被截断的响应是不完整的,即使其中一部分包含预期文本也一样。对于截断响应和运行过程中的失败,工具会将预期值比较标为无法确定。一个服务商可能成功,另一个可能失败;请保留两种结果,不要将失败当成记录缺失的证据。

区分 DNS 中的数据不存在与查询失败
状态或情况在此工具中的含义后续检查建议
NOERROR成功响应中存在请求类型的答案查看相关值、所属名称和 TTL;DNS 查询成功不等于目标服务可用。
NXDOMAIN解析器报告查询名称不存在检查拼写和预期的记录名称。这不是域名注册可用性查询。
NODATA没有请求类型的答案,成功响应的 Authority 部分包含 SOA确认该名称是否应该有这种记录。缺少 AAAA 不等于整个域名不存在。
ALIAS_ONLY在 SOA 检查之后,发现 CNAME,但没有请求类型的答案查看别名并检查其目标;只含 CNAME 的 A 响应没有提供预期的 A 值。
REFERRAL经过前面的分类检查后,没有请求的答案,但 Authority 部分包含 NS查看权威记录;这不代表已完成所需记录的查询。
EMPTY_ANSWER没有请求的答案,也没有识别到 SOA、CNAME 或 NS 上下文保留响应详情,不要自行改判为 NXDOMAIN。
SERVFAIL 或 REFUSEDDNS 服务器报告失败或拒绝检查服务商和域名配置;单凭状态不能确定具体原因。
HTTP 错误、超时、格式错误或探测节点失败未能可靠地完成本次查询查看连接提示,适时手动重试;尚不能证明记录不存在。
被截断 / TC服务商报告响应不完整将比较结果视为无法确定,并保留部分响应的标记。

RFC 2308:DNS 查询的负缓存Google Public DNS:DNS over HTTPS 的 JSON APICloudflare 1.1.1.1:JSON DNS over HTTPS 请求

修改记录后,DNS TTL 表示什么

TTL 以秒表示缓存寿命。递归解析器可能返回缓存信息剩余的有效时间,因此内容相同的两个响应,也可能显示不同的 TTL。返回的数值不是全球所有解析器改用新值的倒计时。

正响应、负响应和委派信息可能各有不同的缓存历史。现在降低记录 TTL,不会追溯缩短已缓存副本原先获得的寿命。一些解析器还可以按规定的恢复策略提供已过期数据。因此,再次查询只是新增一次观察,不能证明所有缓存都已更新。

计划变更时,先向 DNS 托管服务确认预期的记录名称和值,保留新旧查询结果,并在有用的时间间隔后再次检查相关记录。根据托管服务的变更说明和先前的缓存情况安排验证。统一的 24 小时或 48 小时说法,无法描述每一种 DNS 变更。

RFC 2181 第 8 节:生存时间RFC 2308:DNS 查询的负缓存RFC 8767:提供已过期 DNS 数据

为什么服务商结果一致不能证明全球解析已更新

Google 与 Cloudflare 的缓存观察或解析行为不同,可能返回不同答案。权威服务器根据位置返回不同内容时,也会影响结果。先在记录的时间点比较相同的规范化名称和类型,再检查状态、所属名称、值和 TTL。出现差异,并不能自动确定哪个答案正确。

每次检查最多选择四个已配置的查询位置,但实际可用的只有界面列出的那些位置。如果只列出一个位置,两个服务商的查询都从该位置发出。若区域验证标记为 false,位置声明的区域不能视为独立确认的地理位置。不要根据服务商数量或选择上限,推断工具部署了全球探测网络。

结果一致,只说明这些查询结果之间一致。你的设备、其他网络或企业内部解析器仍可能看到不同内容,尤其是存在本地缓存或按网络提供不同 DNS 视图时。需要其他位置或本地网络视角时,请使用范围合适的多位置服务或网络自身的诊断工具。

RFC 1034:域名、解析与缓存RFC 8767:提供已过期 DNS 数据

按字面值进行精确匹配或包含匹配

预期值比较会检查 Answer 部分中属于所请求且受比较功能支持的类型的值。精确匹配要求返回文本整体与预期文本相同;包含匹配要求返回文本中存在预期子串。两种方式都区分大小写。只要有一个值匹配,该服务商与位置的结果就会显示匹配,即使其他值不同。这不证明整组记录都符合预期配置。

比较功能不会去掉空白、引号或末尾点号,不会统一 IPv6 的文本写法,也不会解析 DNS 策略语法。它不支持正则表达式。DNS 协议层面的主机名比较可以不区分大小写,但这里的字符串比较仍区分大小写。需要字面精确相等时,请使用返回值的实际写法;将短子串作为证据前,先查看完整数据。

  • NXDOMAIN 和 NODATA 响应没有所请求的值时,通常会比较为不同;它们是有效的负响应,不是请求失败。
  • 失败或被截断的结果无法确定是否匹配。预期文本为空、超过 4,096 个 JavaScript 字符串单位,或对 PTR 进行比较时,也无法比较。
  • 预期文本保留在当前标签页和下载的报告中,不会随 DNS 请求发送。文本匹配本身既不能证明 DNSSEC 验证通过,也不能证明域名所有权。
按字面值进行精确匹配或包含匹配
示例返回数据预期文本比较说明
A:203.0.113.10203.0.113.10精确匹配此值;其他 A 答案仍可能包含不同地址。
CNAME:target.example.com.target.example.com末尾点号导致精确匹配不同;包含匹配可找到子串。
MX:10 mail.example.com.mail.example.com优先值和末尾点号导致精确匹配不同;包含匹配只检查文本片段。
TXT:"verification=sample-token"verification=sample-token返回值带引号时,精确匹配不同;包含匹配可找到片段。
CNAME:Target.example.com.target.example.com.大小写导致字面精确匹配不同;DNS 名称是否相等有另外的语义规则。
TXT:"part-one" "part-two"part-onepart-two比较功能不会拼接带引号的文本片段,也不会解释完整策略。

RFC 4343:DNS 大小写不敏感规则

结合响应来源解读 DNSSEC 的 AD 标记

“已验证”反映所选递归解析器的 AD 标记。是该解析器声明数据已通过认证;ToolMellow 不会独立验证 DNSSEC 签名或信任链。能否依赖这一声明,也取决于是否信任该解析器以及承载响应的通道。

“未验证”表示服务商没有设置 AD。未签名的数据也可能产生这一结果,因此单凭该标记不能说明域名损坏或恶意。SERVFAIL 同样需要调查,不能自动诊断为 DNSSEC 故障。工具会请求 DNSSEC 相关响应数据,并保持服务商端的检查开启,但不执行完整的 DNSSEC 审计或浏览器 DNS 泄漏检测。

RFC 4035:DNSSEC 与认证数据声明Google Public DNS:DNS over HTTPS 的 JSON APICloudflare 1.1.1.1:JSON DNS over HTTPS 请求

先检查网站 DNS,再检查托管和 HTTPS

网站指向旧目标时,检查访客实际使用的完整主机名。分别比较 A 和 AAAA,并查看 www 等别名的 CNAME。不要假设根域名和 www 配置完全相同。将结果与托管服务说明中的预期记录比较,包括要求的别名目标。

DNS 值看起来正确,只是网站排查的一部分。HTTP 重定向、虚拟主机路由、证书有效性和应用响应,都需要另外检查。CNAME 是 DNS 别名,将访客转向另一个 URL 是 HTTP 行为。CAA 与证书颁发机构授权有关;存在 CAA 不代表当前网站正在提供有效证书。

RFC 1035:DNS 实现与记录格式RFC 8659:证书颁发机构授权

在正确名称下查询 TXT 验证、SPF、DKIM 和 DMARC

进行域名验证时,从服务说明中复制记录名称并选择 TXT。将完整返回记录与要求的令牌比较,留意显示的引号及文本分段。在响应中找到令牌可以提供有用证据,但申请验证的服务会按自身流程确认所有权。

SPF 策略使用相关邮件域名下的 TXT。DKIM 密钥查询使用选择器对应的名称,例如 selector._domainkey.example.com;应从邮件服务获取选择器,而不是猜测。DMARC 相关检查通常从 _dmarc.example.com 的 TXT 开始。现行 DMARC 的策略发现与标识符对齐还有其他规则,单次 TXT 查询不会评估这些规则。

MX 描述邮件路由,上述基于 TXT 的机制各有不同职责。此工具不会遍历全部 SPF include 依赖、验证已签名的邮件、评估完整的 DMARC 策略发现过程、分析 DMARC 报告或测试投递。记录存在或包含匹配,不能代替这些检查。

RFC 7208 第 3.1 节:TXT 中的 SPF 策略RFC 6376:DKIM 签名与选择器密钥查询RFC 9989:DMARC 策略发现与对齐

了解查询隐私并分享有用的 DNS 报告

查询的名称和类型经过 ToolMellow 的代理服务器或所选探测节点,发往所选公共解析器。解析器看到的是探测节点的网络地址;ToolMellow 不会将访客的客户端 IP 请求头转发给它。托管基础设施仍会收到通常的请求元数据。HTTPS 传输不等于整个活动匿名,也不能证明零日志;查询名称本身也可能敏感。

预期文本在本地比较,并可能以 expectedComparison 的形式包含在 dns-results.json 中。分享报告前,请检查查询名称、返回数据和预期文本,特别是验证令牌。将相关结果交给需要它的接收方,不要默认所有导出值都适合公开发布。

向支持人员求助时,提供准确名称和类型、预期配置、服务商与位置、观察时间、状态、相关 Answer 和 Authority 数据,以及是否有响应被截断或失败。下载报告是一次快照;工具不会维护服务器端的历史记录,也不会导出整个 DNS 区域。

逐步排查缺失或不符合预期的 DNS 答案

首先,根据 DNS 托管服务的说明核对规范化后的名称和所选类型。然后区分 DNS 负响应与请求失败,查看别名及权威记录,并比较两个服务商的结果。使用预期值时,先检查完整返回文本和匹配模式,再判断底层配置是否存在差异。

变更后保存报告,再有计划地进行后续检查。工具不会自动重试查询,反复请求也不会清空所有缓存。配置出现问题且界面提供“重试连接”时,可以使用该操作;请遵守限流提示,适时重新提交 DNS 检查。“取消”会停止待处理的客户端工作并向上游传递取消信号,但无法撤回已经发出的查询。

从地址开始排查时,使用单独的 IP 查询或反向 DNS 工具;调查某台设备实际使用的解析路径时,使用其操作系统的本地 DNS 诊断。本工具不会枚举全部子域名,不提供 SRV、DS、DNSKEY 或 ANY 选择,不执行区域传送,也不检查域名注册可用性。先让诊断方式与问题相符,再解读成功响应能说明的范围。

常见问题

如何查询一个域名的全部 DNS 记录?

根据任务所需的名称和支持的类型,分别执行查询。ToolMellow 每次请求使用一个名称和一种类型;不会枚举全部子域名、执行区域传送,或提供完整的所有记录清单。

为什么 Google 和 Cloudflare 显示不同的 DNS 结果?

它们的缓存历史和解析行为可能不同,权威答案也可能随位置变化。请比较相同的规范化名称和类型,以及时间、状态、所属名称、值和 TTL。差异本身不能确定哪个答案正确。

TTL 能告诉我 DNS 的全球更新何时完成吗?

不能。返回的 TTL 是本次观察到的数据的缓存寿命信息。正缓存和负缓存、委派及过期数据策略可能影响其他观察结果。它不能确定全球更新完成的时间。

NXDOMAIN 与 NODATA 有什么区别?

NXDOMAIN 报告查询名称不存在。NODATA 表示请求类型没有答案;此工具根据成功响应中的 SOA 权威记录识别这一情况。同一个名称可以有 A 记录,却没有 AAAA 数据。

为什么 TXT 或 CNAME 的精确匹配失败?

工具按完整返回文本进行区分大小写的比较。引号、空格、末尾点号、MX 优先值文本及不同写法都可能影响结果。请查看完整值;包含匹配只检查子串,不验证完整记录或策略。

匹配是否表示所有 DNS 记录都正确?

不是。所请求且受比较功能支持的类型中,只需一个 Answer 值匹配,该服务商与位置的结果就会显示匹配。其他值可能不同;字面匹配不能证明所有权、DNSSEC 验证、邮件投递或全球一致。

可以输入 IP 地址查询 PTR 吗?

原始 IP 地址请使用单独的 IP 查询或反向 DNS 工具。在此 DNS 查询工具中,PTR 要求完整的反向 DNS 记录名称,例如示例 10.113.0.203.in-addr.arpa。PTR 不支持预期值比较。

如何检查 SPF、DKIM 和 DMARC 记录?

在相关 SPF 域名、邮件服务提供的 _domainkey 下的 DKIM 选择器名称,或适当的 _dmarc 名称下选择 TXT。这些查询查看发布的文本,不评估全部 SPF 依赖、邮件的 DKIM 签名,或完整的 DMARC 策略发现与对齐。

“未验证”是否说明域名不安全?

“未验证”表示所选服务商没有设置 AD 标记。未签名的数据也可能产生此结果。ToolMellow 不独立验证 DNSSEC,单凭这一提示不能判断域名不安全。

此工具检测的是我设备的 DNS 服务器吗?

它通过 ToolMellow 的可用查询位置访问所选公共服务商。这条路径可能不同于设备、浏览器或私有网络实际使用的解析器与缓存。该问题需要使用本地诊断工具。

两个服务商结果一致能证明全球解析已更新吗?

只能证明已完成的这些查询结果一致。通过一个列出的位置访问两个服务商,并不构成全球探测网络。报告范围由可用位置和区域置信信息决定。

预期值会发送给 DNS 服务商吗?

不会。预期文本保留在浏览器标签页,并可能出现在下载报告中。实际查询的 DNS 名称和类型会通过本服务发送给所选解析器。分享前请检查验证令牌和其他报告数据。

来源与延伸阅读

动手试试。