DNS 拨测出现失败节点就代表域名解析不了吗?NXDOMAIN、递...
一句话答案:不一定。宝塔拨测的 DNS 结果里,失败分三种——域名不存在(NXDOMAIN)、递归 DNS 超时、结果无效;只有 NXDOMAIN 才真正指向"域名本身",剩下两类多半是节点网络或检测链路自身的问题。很多朋友做 DNS 拨测时,看到结果里出现几个失败节点就开始怀疑域名出事了。其实"失败"背后的原因并不一样。下面我用两次真实拨测做对比——一次查正常域名,一次查一个根本不存在的域名——带大家看清楚失败原因到底有哪几种、每种该怎么判断。
对照基准:正常域名 359 个节点全部解析成功
先建立一条"正常"参照线。2026-10-04(北京时间)对 www.bt.cn 的 A 记录做 DNS 拨测:请求 500 个节点、选中 359 个、成功 359 个、失败 0 个(成功率 100%),覆盖 59 个省份/地区(大陆 31 个、港澳台及海外 28 个)。359 个节点一致解析到 157.255.129.251,总耗时中位数 12.4ms、p95 105.2ms。
全国节点解析到同一 IP、耗时毫秒级——记住这个基准,再去看失败长什么样。
实测:不存在的域名 359 个节点全挂,357 个报 NXDOMAIN
接着对一个从未注册的测试域名 no-such-host-20261004xyz.bt.cn(专为本次测试构造)查 A 记录,同一天采集:
指标
本次运行
选中节点
359 个
成功节点
0 / 359(成功率 0%)
失败节点
359 个
这 359 个失败节点,按失败 code 可归为 2 类、按底层错误文案可归为 3 类:
失败原因(底层错误文案)
节点数
含义
NXDOMAIN(lookup : rcode 3)
357
域名不存在
递归 DNS 超时(i/o timeout)
1
节点查询递归 DNS 超时
结果无效(task_result timing or result is invalid)
1
节点结果无效
同样是"失败",实际构成是:域名不存在 357 个、递归 DNS 超时 1 个、结果无效 1 个,其中 NXDOMAIN 压倒性占多数。
三种失败原因分别指向什么
NXDOMAIN:域名或记录确实不存在。
底层文案是 lookup : rcode 3,rcode 3 是 DNS 协议里的 NXDOMAIN 返回码,意思就是"查无此名"。完整链路是:检测节点先问递归 DNS,递归服务器顺着层级问到权威服务器,权威回答"没这个域名",NXDOMAIN 就这么传回来了。它是唯一真正指向"域名本身"的失败类型——查一个没注册的域名,或给没有 MX 记录的域名查 MX,全国节点会一致返回 NXDOMAIN,而不是零星几个节点报错。
反过来要注意:如果你查的是一个你确定存在的域名,却有大量节点报 NXDOMAIN,那问题多半不在"域名没了",而要怀疑解析链路异常——比如递归 DNS 被篡改、DNS 劫持或污染导致查询被错误地回复"查无此名"。这种情况需要结合拦截与污染检测做进一步排查。
递归 DNS 超时:节点查询这一环卡住了。
本次有 1 个节点(俄罗斯)报错,底层文案为 udp: read udp ...:53: i/o timeout; tcp: dial tcp ...。含义是节点向递归 DNS 服务器(本次连的是 114.114.114.114)发起查询,UDP 请求超时、改走 TCP 也连不上,始终等不到回应。问题出在"节点 → 递归 DNS"这一段,指向节点自身的网络环境(链路慢、丢包或被阻断),与目标域名无关。只有 1 个节点报这种错,属于个别节点的链路状况。
结果无效:节点返回的结果没法用。
1 个节点(浙江-金华-移动)报错,文案为 task_result timing or result is invalid,失败 code 是 RESULT_INVALID,表示这次返回的数据不完整或不合规,无法当作有效结果。这是检测链路自身的异常,同样跟目标域名无关。这类失败数量极少,通常可以忽略,但它说明了一个道理:节点"失败"未必是"解析失败",也可能是节点自己没测好。
排查思路:拿到失败原因先做三件事
[*]看失败原因分布:绝大多数节点报 NXDOMAIN → 域名或记录本身有问题;个别节点报递归超时或结果无效 → 节点侧问题,可忽略。
[*]核对域名是否应该存在:查的是确定存在的域名却大面积报 NXDOMAIN,优先怀疑 DNS 劫持、污染或解析链路异常。
[*]结合成功节点看:成功节点解析出的 IP 是否一致、是不是预期的 IP;失败节点集中在哪些地区、哪些运营商——用来区分个别网络环境问题还是解析链路共性问题。
补充说明:DNS 拨测的定位是看"域名解析到哪里、耗时如何",即比较各节点的解析结果与解析耗时,若记录值不一致需确认是否为预期的地区解析策略,官方说明见《进行一次拨测并查看结果》(https://docs.bt.cn/user-guide/baota-probe/monitoring-guide )。本文讨论的是节点"失败"(没完成解析)的情形;如果节点成功了但解析到陌生 IP(劫持/污染),可进一步看《网站被拦截、DNS 被污染、QQ 微信里打不开怎么查?用宝塔的拦截/污染/QQ/微信检测定位》和《DNS 解析异常怎么查?用 DNS 拨测看域名解析正确性和解析耗时》。PING、TCP、网站测速的失败原因解读,可分别参阅《ping 域名失败别急着判断,先看失败原因:解析到被封锁地址、无响应、节点无权限》《TCP 拨测失败别急着判断端口不通,先看失败原因:网络不可达、节点无权限、超时》《网站拨测失败别急着判断网站挂了,先看失败原因:DNS 解析超时、连接超时、网络不可达》。
说明:文中拨测数据为对 www.bt.cn(A 记录)与不存在的域名 no-such-host-20261004xyz.bt.cn(A 记录)的真实 DNS 拨测结果,采集于 2026-10-04(北京时间),失败原因分布与节点数均来自本次结果数据。拨测结果会随时间和网络状况变化,数值仅代表采集时刻的情况。
常见问题
DNS 拨测里出现了失败节点,是不是域名就解析不了了?
要分情况。若你查的是确定存在的域名,只有零星节点失败,且原因属于递归 DNS 超时、结果无效这类节点侧问题,域名本身通常没问题;只有大量节点同时失败才需要警惕解析链路异常。而如果查的是一个根本不存在的域名,全国节点会整齐划一地报 NXDOMAIN——这才是"域名确实不存在"的标志性信号。
NXDOMAIN 到底是什么意思?
NXDOMAIN 是 DNS 协议的返回码之一(rcode 3),表示被查询的域名或记录不存在。比如一个没注册的域名,递归 DNS 层层查不到,最后就回复 NXDOMAIN。实测中 357 个失败节点统一报 lookup : rcode 3,就是这个典型场景。
为什么查一个不存在的域名,全国节点会一致报 NXDOMAIN?
因为 NXDOMAIN 是递归 DNS 服务器给出的标准"查无此名"应答,跟节点自身的网络状况无关。实测 359 个节点里有 357 个报出同样结果,全国口径一致,说明是域名本身不存在,而不是个别节点出了岔子。
递归 DNS 超时(i/o timeout)是怎么造成的?
它表示检测节点向递归 DNS 服务器发起的 UDP/TCP 请求,在超时窗口内始终没有收到应答。本次实测只有 1 个节点出现这种报错,属于该节点到递归 DNS 服务器之间的链路问题(慢、丢包或被阻断),与被查询的域名无关。
怎么通过失败原因区分是域名的问题还是网络的问题?
第一步看分布:大面积 NXDOMAIN 指向域名或记录本身,零星的递归超时/结果无效指向节点自身。第二步看比例:确定存在的域名若大量报 NXDOMAIN,优先排查 DNS 劫持和解析污染,别直接认定域名没了。
节点"失败"和"解析结果异常"是一回事吗?
不是一回事。"失败"是节点压根没拿到解析结果(NXDOMAIN、超时等);"解析结果异常"是节点成功拿到了结果,但 IP 不是预期的——比如被劫持到陌生地址。两者属于不同维度,排查时不要混淆。
有问题欢迎回帖。
页:
[1]