宝塔面板博客官方技术博客
宝塔拨测

DNS 拨测失败别急着判断域名解析不了,先看失败原因:域名不存在(NXDOMAIN)、递归 DNS 超时、结果无效

对域名做一次 DNS 拨测,结果里冒出失败节点,是不是就能断定「域名解析不了」?不能。DNS 拨测的失败原因有好几种——域名不存在(NXDOMAIN)、递归 DNS 超时、结果无效,其中只有 NXDOMAIN 真正指向「域名本身」,其余大多是节点网络或检测链路的问题。

下面用两次真实 DNS 拨测——一次查正常域名、一次查不存在的域名——拆开看失败原因到底有哪几种、分别该怎么读。

先看正常域名:359 个节点全部解析成功

先建立一个「正常解析」的对照。对 www.bt.cn 的 A 记录做一次 DNS 拨测(2026-10-04,北京时间),请求 500 个节点、选中 359 个、成功 359 个、失败 0 个(成功率 100%),覆盖 59 个省份/地区,其中大陆 31 个、港澳台及海外 28 个。359 个节点全部解析到同一个 IP 157.255.129.251,总耗时中位数 12.4ms、p95 105.2ms。

这就是「域名正常、解析正常」的样子:全国节点一致解析到同一个 IP,耗时毫秒级。记住这个基准,再往下看失败长什么样。

再看不存在的域名:359 个节点全部失败,357 个报 NXDOMAIN

再对一个不存在的域名 no-such-host-20261004xyz.bt.cn(我专门构造的测试域名,没有注册)做 DNS 拨测,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 节点结果无效

也就是说,同样是「失败」,这 359 个节点的失败原因其实是**域名不存在(357 个)、递归 DNS 超时(1 个)、结果无效(1 个)**三种,其中 NXDOMAIN 占了绝对多数。

三种失败原因,分别指向什么问题

NXDOMAIN:域名或记录确实不存在

357 个节点报 NXDOMAIN,底层错误文案是 lookup : rcode 3。rcode 3 是 DNS 协议的 NXDOMAIN 返回码,含义是「查询的域名或记录不存在」。它的完整链路是:检测节点向递归 DNS 服务器查询,递归服务器一路查到权威服务器,权威服务器回答「查无此名」,于是返回 NXDOMAIN。

这是唯一真正指向「域名本身」的失败。查一个没注册的域名、或者查一个不存在某类记录的域名(比如给没有 MX 记录的域名查 MX),全国节点都会一致返回 NXDOMAIN,而不是只有个别节点报错。

反过来,如果你查的是「你确定存在」的域名,却大量节点报 NXDOMAIN,那就不是域名不存在,而要警惕解析链路异常——可能是递归 DNS 被篡改、DNS 劫持或污染导致查询被错误地「查无此名」。这种情况要结合域名拦截与 DNS 污染检查进一步排查。

递归 DNS 超时:节点查询这一步卡住了

1 个节点(俄罗斯节点)报递归 DNS 超时,底层错误文案是 udp: read udp ...:53: i/o timeout; tcp: dial tcp ...。它的意思是:检测节点在向递归 DNS 服务器(这里连的是 114.114.114.114)查询时,UDP 请求超时、TCP 连接也失败,一直没拿到回应。

这类失败发生在「节点 → 递归 DNS 服务器」这一段,指向的是节点自身的网络环境(到递归 DNS 的链路慢、丢包或被阻断),而不是目标域名的问题。本次只有 1 个节点报这种错,属于个别节点的链路问题。

结果无效:节点返回的结果无法使用

1 个节点(浙江-金华-移动)报结果无效,底层错误文案是 task_result timing or result is invalid,对应的失败 code 是 RESULT_INVALID。它表示节点这次拨测返回的结果不完整或不合规,无法作为有效结果使用,是检测链路自身的异常,同样与目标域名无关。

这类失败数量极少,通常可以忽略,但能说明一点:节点「失败」不一定都是「解析失败」,也可能是节点自身没测好。

怎么读自己的 DNS 拨测失败原因

  1. 先看失败原因分布:绝大多数节点报 NXDOMAIN,指向域名/记录本身不存在;个别节点报递归 DNS 超时或结果无效,指向节点自身问题。
  2. 再看域名本身是否应该存在:查的是确定存在的域名,却大量报 NXDOMAIN,优先怀疑 DNS 劫持、污染或解析链路异常,而不是「域名没了」。
  3. 结合成功节点看:查正常域名时,成功节点解析到的 IP 是否一致、是不是预期的 IP,失败节点落在哪些地区、运营商,判断是个别网络环境问题还是解析链路的共性问题。

DNS 拨测的定位是「域名解析到哪里、耗时如何」——比较各节点的解析结果和解析耗时,记录值不一致时确认是否为预期的地区解析策略,官方说明见《进行一次拨测并查看结果》。本文讲的是节点「失败」(没完成解析)的情况;如果你关心的是节点「成功但解析到陌生 IP」(解析被劫持/污染),可参阅《网站被拦截、DNS 被污染、QQ 微信里打不开怎么查?用宝塔的拦截/污染/QQ/微信检测定位》和《DNS 解析异常怎么查?用 DNS 拨测看域名解析正确性和解析耗时》。同一个主题下,PING 测速、TCP 测速和网站测速的失败原因解读,可分别参阅《ping 域名失败别急着判断,先看失败原因:解析到被封锁地址、无响应、节点无权限》、《TCP 拨测失败别急着判断端口不通,先看失败原因:网络不可达、节点无权限、超时》和《网站拨测失败别急着判断网站挂了,先看失败原因:DNS 解析超时、连接超时、网络不可达》。

信息来源

本文「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 拨测,357 个失败节点全部报 NXDOMAIN(底层错误文案 lookup : rcode 3),就是最典型的场景:域名没注册、记录没配,递归 DNS 查不到,就返回 NXDOMAIN。

为什么查一个不存在的域名,全国节点都报 NXDOMAIN?

因为 NXDOMAIN 是递归 DNS 服务器给的标准「查无此名」回答,不是节点网络问题。本文实测对一个不存在的域名做 DNS 拨测,359 个节点里 357 个报 NXDOMAIN,全国一致,说明这是域名本身不存在,而不是个别节点抽风。

递归 DNS 超时(i/o timeout)是什么原因?

它表示检测节点在向递归 DNS 服务器查询时,发出的 UDP/TCP 请求在超时时间内没收到回应。本文实测里只有 1 个节点报这种错(底层错误文案 udp ... i/o timeout; tcp: dial tcp ...),是单个节点到递归 DNS 服务器的链路问题,不是目标域名的问题。

怎么用失败原因判断是域名问题还是网络问题?

先看失败原因分布:绝大多数节点报 NXDOMAIN,指向域名或记录本身不存在;个别节点报递归 DNS 超时或结果无效,指向节点自身的网络/检测链路。再结合成功节点:查正常域名时若大量节点报 NXDOMAIN,就要警惕 DNS 劫持或解析污染,而不是简单当成域名不存在。

节点「失败」和「解析结果异常」是一回事吗?

不是。「失败」指节点没完成解析(报 NXDOMAIN、超时等错误,连结果都没拿到);「解析结果异常」指节点完成了解析,但解析到的 IP 不是预期的(如被劫持解析到陌生 IP)。两者是不同的维度,排查时不要混为一谈。