Linux下怎么测试DNS解析延迟和生效情况(dig/nslookup)

秋雪吖_5101

秋雪吖_5101

2026-09-20

531人浏览

原创

dig +stats 提供精确的 query time(服务器响应时间)和缓存/递归信息,比 time dig 更准;server 显示本地地址说明命中缓存;查 ttl 需用 +noall +answer,权威值需直连 ns;+trace 可定位解析卡点。

linux下怎么测试dns解析延迟和生效情况(dig/nslookup)

dig +stats 看单次解析耗时和完整链路

延迟不是靠 time dig 估算的,dig 自带的统计信息更准:它会明确告诉你“QUERY TIME”(服务器响应时间),以及是否走了缓存、是否触发了递归。执行 dig example.com +stats 后,末尾会出现类似这样的输出:

;; Query time: 42 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Sep 20 17:21:33 CST 2026
;; MSG SIZE  rcvd: 65

注意两点:

  • Query time 是从发包到收到 DNS 响应的毫秒数,不包含本地处理开销,是真实网络+服务端延迟
  • 如果 SERVER 显示的是你本机或局域网地址(如 127.0.0.53192.168.x.x),说明命中了本地缓存或 stub resolver,这个时间不能代表公网 DNS 延迟
  • 想绕过本地缓存直测上游,必须加 @DNS_IP,例如 dig @8.8.8.8 example.com +stats

查 TTL 值确认记录是否已更新生效

DNS 修改后“到底有没有生效”,关键不是看能不能解析出 IP,而是看返回的 TTL 是否已变为你新设的值。TTL 决定了这条记录在各级缓存中还能活多久。

执行 dig example.com A +noall +answer,输出形如:

example.com.		300	IN	A	93.184.216.34

其中 300 就是当前缓存中的 TTL(单位秒)。对比你刚在 DNS 控制台设置的 TTL(比如改成了 60),如果仍是旧值(比如 3600),说明权威服务器还没同步,或中间某层缓存还没过期。

  • 若要确认权威服务器当前真实 TTL,强制查权威源:dig @ns1.example.com example.com A +noall +answer(需先用 dig example.com NS 找出权威 NS)
  • 别依赖 dig +short,它不显示 TTL;也别只看 ANSWER SECTION 是否有结果,NXDOMAIN 也可能带 TTL
  • 不同地区看到的 TTL 可能不同——这是正常现象,说明各地递归服务器缓存未同步

dig +trace 定位卡在哪一级解析环节

当解析慢或失败,但 dig @8.8.8.8 又正常,说明问题出在本地到递归 DNS 的链路上,或者递归服务器本身行为异常。dig +trace 会模拟整个递归过程,逐级打印每一步查询结果和耗时。

onewo-rtlinux
onewo-rtlinux

Linux 实时编程助手。生成、审查并修改用于周期性控制任务和中断驱动程序的 C 代码。强制实施实时调度策略。

下载

运行 dig example.com +trace,你会看到类似:

; > DiG 9.16.1-Ubuntu > example.com +trace
;; global options: +cmd
.			518400	IN	NS	a.root-servers.net.
;; Received 239 bytes from 127.0.0.53#53(127.0.0.53) in 0 ms

com.			1728000	IN	NS	a.gtld-servers.net.
;; Received 488 bytes from 198.41.0.4#53(a.root-servers.net) in 22 ms

example.com.		172800	IN	NS	ns1.example.com.
;; Received 169 bytes from 192.5.6.30#53(a.gtld-servers.net) in 143 ms

重点看每段的“Received … in X ms”:

  • 根服务器响应慢(>100ms)→ 全球根节点或你到根的路由有问题
  • TLD 服务器(如 com. 的 NS)响应慢 → 顶级域服务商或你到它的链路异常
  • 最后一跳权威 NS 响应慢或超时 → 权威服务器宕、防火墙拦截、或你被限速
  • 如果卡在某一级没继续往下走,大概率是那台服务器没响应,或你的 UDP 53 被丢包

nslookup 不适合测延迟,但可快速验证递归行为

nslookup 默认不显示耗时,也没有内置统计字段,不能替代 dig +stats 测延迟。但它有个不可替代的用途:交互式切换 DNS 服务器,快速比对不同递归节点的行为差异。

例如:

$ nslookup
> server 8.8.8.8
Default server: 8.8.8.8
> example.com
> server 114.114.114.114
Default server: 114.114.114.114
> example.com

这种交互方式比反复敲 dig @xxx 更快,尤其当你需要连续测试多个域名、多个 DNS 地址时。

  • 注意 server 命令后不能加 #53,否则会报错;端口只能通过 set port=5353
  • nslookuptimeout 和重试次数默认较宽松,有时会掩盖真实超时问题;dig 更可控(可用 +timeout=1 +tries=1
  • 某些老系统或容器镜像里 nslookup 功能受限(如不支持 set),优先确保 dig 可用
实际排查中最容易被忽略的是:**TTL 不是倒计时器,而是缓存生存期上限;你看到的 TTL 值,是权威服务器返回时写死的,之后每经过一个递归服务器,它就按该服务器本地剩余时间递减——所以同一时刻,不同机器上看到的 TTL 数值天然不同。**

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3570

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3113

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2153

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5090

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4782

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2893

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2385

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2599

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

CLion 远程开发实战
CLion 远程开发实战

共0课时 | 0人学习