DNS 查询指南:记录类型、TTL 与故障排查
ToolMellow ·
DNS 查询是向解析器询问某个名称下的某种记录。使用 ToolMellow 的 DNS 查询工具,可以查看返回的地址、别名、邮件路由或文本记录,比较所选服务商的响应,并保存带时间信息的查询结果。开始前,请确认需要查询的准确 DNS 名称和记录类型。
本工具通过可用的 ToolMellow 查询位置访问 Cloudflare 和 Google Public DNS。结果仅反映这些请求,不能说明所有用户、设备或解析器都会看到相同内容。本指南介绍操作方式、结果含义,以及返回值与预期不同时的排查方法。下文中的名称、地址和记录值均为示例,并非实时测量结果。
如何执行 DNS 查询
打开 DNS 查询工具,等待连接配置加载完成。输入 www.example.com 等名称,选择记录类型,再选择一个或两个服务商以及可用的查询位置。点击“检查 DNS”提交请求。仅打开页面或修改名称,不会自动查询该名称的记录。
解读返回值前,先查看服务商、查询位置、状态和时间戳。如果已知需要的值,可以在可选的预期值字段中输入文本,并选择精确匹配或包含匹配。“下载 DNS 报告”会将当前结果保存为 dns-results.json;如需比较变更前后的情况,请保留这个文件。
- 每次查询使用一个 DNS 名称和一种记录类型。排查两种地址协议时,请分别查询 A 和 AAAA。
- 默认选择 A、两个服务商和 ToolMellow 主查询位置。可用位置由服务当前的配置决定。
- 修改名称、记录类型、服务商或查询位置会清除上次结果。修改预期值或匹配模式,只会在本地重新比较当前结果。
根据任务选择 DNS 记录类型
不同 DNS 记录回答不同的问题。查询 A 不等于获取域名的全部记录,查询 MX 也不会发送测试邮件。类型选择器支持九种记录。预期值比较支持下列八种正向查询类型;PTR 结果可以查看和下载,但不支持预期值比较。
| 类型 | 记录内容 | 实际用途与范围 |
|---|---|---|
| A | IPv4 地址数据 | 查看所查名称返回的 IPv4 地址;不会测试该地址上的网站。 |
| AAAA | IPv6 地址数据 | 与 A 分开检查 IPv6;IPv4 目标可用,不代表 IPv6 也可用。 |
| CNAME | 别名的目标名称 | 查看别名及返回文本的写法。DNS 别名本身不会创建 HTTP 重定向。 |
| MX | 邮件交换器的优先值与目标名称 | 同时查看优先值和主机名。记录存在,不代表邮件能够成功投递。 |
| TXT | DNS 中承载的文本 | 在服务商指定的准确记录名称下,查看验证或邮件相关的数据。 |
| NS | 名称服务器名称 | 查看返回的名称服务器数据;这些名称不同于本次查询选择的递归解析服务商。 |
| SOA | 区域的权威信息 | 查看区域元数据及负响应的上下文;查询时间戳不是记录的修改时间。 |
| CAA | 证书颁发机构授权数据 | 查看发布的授权信息;这不是证书或 HTTPS 有效性检测。 |
| PTR | 反向 DNS 的名称指针 | 输入完整的反向 DNS 记录名称。此处不接受原始 IP 地址,也不支持预期值比较。 |
输入准确的 DNS 名称,包括 TXT 名称和国际化域名
输入 DNS 记录所属的名称,不要带 URL 协议、路径、邮件地址或端口。根域名与 www 名称是不同的输入。服务商的验证说明可能要求子域名或以下划线开头的名称;在根域名查询 TXT,不会自动找到其他名称下的 TXT。
工具会去掉输入两端的空白,将支持的 Unicode 点号转换为普通点号,去掉末尾的根点号,使用 Node 的 domainToASCII 将支持的国际化域名转换为 ASCII,并将查询名称转为小写。转换后至少需要两个标签,每个标签不超过 63 个 ASCII 字符,总长度不超过 253 个字符。普通标签允许字母、数字及内部连字符。工具接受支持的下划线前缀服务标签,但不接受任意出现在普通标签内部的下划线。
| 示例输入 | 用途 | 输入说明 |
|---|---|---|
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.arpa | PTR 记录名称输入 | 此反向 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 的基准。如果请求失败而没有记录或标记,应将这些信息视为缺失,不要推测其值。
区分 DNS 中的数据不存在与查询失败
有效的负响应与未能完成的请求,需要采取不同的后续措施。在 ToolMellow 中,正面的 NOERROR 分类表示包含请求类型的答案。其他成功的 DNS 响应会根据 SOA、CNAME 或 NS 上下文分类。下表解释工具显示的状态,避免将所有空答案都当作域名不存在。
被截断的响应是不完整的,即使其中一部分包含预期文本也一样。对于截断响应和运行过程中的失败,工具会将预期值比较标为无法确定。一个服务商可能成功,另一个可能失败;请保留两种结果,不要将失败当成记录缺失的证据。
| 状态或情况 | 在此工具中的含义 | 后续检查建议 |
|---|---|---|
| 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 或 REFUSED | DNS 服务器报告失败或拒绝 | 检查服务商和域名配置;单凭状态不能确定具体原因。 |
| 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 变更。
为什么服务商结果一致不能证明全球解析已更新
Google 与 Cloudflare 的缓存观察或解析行为不同,可能返回不同答案。权威服务器根据位置返回不同内容时,也会影响结果。先在记录的时间点比较相同的规范化名称和类型,再检查状态、所属名称、值和 TTL。出现差异,并不能自动确定哪个答案正确。
每次检查最多选择四个已配置的查询位置,但实际可用的只有界面列出的那些位置。如果只列出一个位置,两个服务商的查询都从该位置发出。若区域验证标记为 false,位置声明的区域不能视为独立确认的地理位置。不要根据服务商数量或选择上限,推断工具部署了全球探测网络。
结果一致,只说明这些查询结果之间一致。你的设备、其他网络或企业内部解析器仍可能看到不同内容,尤其是存在本地缓存或按网络提供不同 DNS 视图时。需要其他位置或本地网络视角时,请使用范围合适的多位置服务或网络自身的诊断工具。
按字面值进行精确匹配或包含匹配
预期值比较会检查 Answer 部分中属于所请求且受比较功能支持的类型的值。精确匹配要求返回文本整体与预期文本相同;包含匹配要求返回文本中存在预期子串。两种方式都区分大小写。只要有一个值匹配,该服务商与位置的结果就会显示匹配,即使其他值不同。这不证明整组记录都符合预期配置。
比较功能不会去掉空白、引号或末尾点号,不会统一 IPv6 的文本写法,也不会解析 DNS 策略语法。它不支持正则表达式。DNS 协议层面的主机名比较可以不区分大小写,但这里的字符串比较仍区分大小写。需要字面精确相等时,请使用返回值的实际写法;将短子串作为证据前,先查看完整数据。
- NXDOMAIN 和 NODATA 响应没有所请求的值时,通常会比较为不同;它们是有效的负响应,不是请求失败。
- 失败或被截断的结果无法确定是否匹配。预期文本为空、超过 4,096 个 JavaScript 字符串单位,或对 PTR 进行比较时,也无法比较。
- 预期文本保留在当前标签页和下载的报告中,不会随 DNS 请求发送。文本匹配本身既不能证明 DNSSEC 验证通过,也不能证明域名所有权。
| 示例返回数据 | 预期文本 | 比较说明 |
|---|---|---|
A:203.0.113.10 | 203.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 | 比较功能不会拼接带引号的文本片段,也不会解释完整策略。 |
结合响应来源解读 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 不代表当前网站正在提供有效证书。
在正确名称下查询 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 名称和类型会通过本服务发送给所选解析器。分享前请检查验证令牌和其他报告数据。
来源与延伸阅读
- RFC 1034:域名、解析与缓存
- RFC 1035:DNS 实现与记录格式
- RFC 3596:IPv6 的 DNS 扩展
- RFC 8659:证书颁发机构授权
- RFC 2181 第 8 节:生存时间
- RFC 2308:DNS 查询的负缓存
- RFC 8767:提供已过期 DNS 数据
- RFC 4035:DNSSEC 与认证数据声明
- RFC 8484:通过 HTTPS 进行 DNS 查询
- Google Public DNS:DNS over HTTPS 的 JSON API
- Cloudflare 1.1.1.1:JSON DNS over HTTPS 请求
- RFC 4343:DNS 大小写不敏感规则
- RFC 5891:国际化域名
- Node.js:URL domainToASCII 转换
- RFC 7208 第 3.1 节:TXT 中的 SPF 策略
- RFC 6376:DKIM 签名与选择器密钥查询
- RFC 9989:DMARC 策略发现与对齐