nslookup 与 dig 使用指南:DNS 查询、区别对比及真实案例解读
在排查“域名打不开”“某个网站能访问、另一个网站不能访问”“修改 DNS 后是否生效”等问题时,最常见的两个工具是 nslookup 和 dig。
它们都能向 DNS 服务器查询域名记录,但定位并不完全相同:
nslookup更适合快速确认域名能否解析;dig更适合分析 DNS 响应细节、TTL、状态码、查询耗时和权威解析链路。
本文将介绍这两个工具的含义、使用方式、典型场景和主要区别,并结合下面这条真实查询进行完整解读:
dig @1.1.1.1 www.flextv.cc
一、理解 DNS 查询
浏览器访问:
https://www.flextv.cc/
首先需要把域名转换成服务器 IP。这个过程就是 DNS 解析。
一个 HTTPS 请求通常要经历:
- DNS:把域名解析成 IP;
- TCP:连接目标 IP 的 443 端口;
- TLS:建立加密连接并验证证书;
- HTTP:发送请求并接收网页内容;
- 浏览器:加载脚本、样式、图片和接口。
如果 DNS 没有返回 IP,后面的 TCP、TLS 和 HTTP 通常都无法开始。因此,遇到网站打不开时,先确认 DNS 是否正常是一种高效的排查方法。
常见 DNS 记录包括:
| 记录类型 | 作用 |
|---|---|
A |
域名对应的 IPv4 地址 |
AAAA |
域名对应的 IPv6 地址 |
CNAME |
域名别名,常用于接入 CDN |
NS |
域名使用的权威 DNS 服务器 |
MX |
邮件服务器 |
TXT |
文本记录,常用于域名验证、SPF、DKIM 等 |
SOA |
DNS 区域的起始授权信息 |
二、nslookup 是什么
nslookup 是 Name Server Lookup 的缩写,可以理解为“域名服务器查询工具”。
它的核心作用是向 DNS 服务器提问:
某个域名对应什么 DNS 记录或 IP 地址?
Windows、macOS 和多数 Linux 系统都可以使用 nslookup。它最大的优点是普及度高、语法直观,适合快速诊断。
三、nslookup 的基本用法
1. 使用当前默认 DNS 查询
nslookup www.flextv.cc
含义是:
使用当前系统配置的默认 DNS,查询
www.flextv.cc。
常见输出类似:
Server: UnKnown
Address: 192.168.8.1
Name: www.flextv.cc.queniuaa.com
Addresses: 163.181.81.236
Aliases: www.flextv.cc
各字段含义:
| 字段 | 含义 |
|---|---|
Server |
回答本次查询的 DNS 服务器名称 |
Address |
DNS 服务器的 IP,而不是网站服务器 IP |
Name |
最终解析得到的规范名称 |
Addresses |
返回的 IPv4 或 IPv6 地址 |
Aliases |
原查询域名是别名,即 CNAME |
如果 Server 显示 UnKnown,通常只是 DNS 服务器 IP 没有可用的反向解析名称,不等于 DNS 服务器不可用。判断查询是否成功,应继续查看有没有返回答案或错误。
2. 指定 DNS 服务器
nslookup www.flextv.cc 1.1.1.1
语法为:
nslookup 域名 DNS服务器地址
这条命令直接向 Cloudflare DNS 1.1.1.1 查询,而不是使用系统默认 DNS。
还可以查询 Google Public DNS:
nslookup www.flextv.cc 8.8.8.8
指定 DNS 只影响本次 nslookup,不会修改电脑的永久 DNS 配置。
3. 查询指定记录类型
查询 IPv4:
nslookup -type=A www.flextv.cc
查询 IPv6:
nslookup -type=AAAA www.flextv.cc
查询 CNAME:
nslookup -type=CNAME www.flextv.cc
查询权威 DNS:
nslookup -type=NS flextv.cc
查询邮件服务器:
nslookup -type=MX flextv.cc
查询 TXT:
nslookup -type=TXT flextv.cc
4. 进入交互模式
直接执行:
nslookup
进入交互模式后,可以连续设置和查询:
> server 1.1.1.1
> set type=A
> www.flextv.cc
> set type=NS
> flextv.cc
> exit
含义分别是:
server 1.1.1.1:把当前交互会话的查询服务器改为1.1.1.1;set type=A:后续查询 A 记录;set type=NS:后续查询 NS 记录;exit:退出交互模式。
四、nslookup 的常见使用场景
场景 1:快速判断域名能否解析
nslookup www.flextv.cc
如果返回 IP 或 CNAME,说明 DNS 获得了答案;如果出现超时、NXDOMAIN 或 SERVFAIL,需要继续排查。
场景 2:对比默认 DNS 与公共 DNS
nslookup www.flextv.cc
nslookup www.flextv.cc 1.1.1.1
nslookup www.flextv.cc 8.8.8.8
如果默认 DNS 超时,而两个公共 DNS 都成功,问题很可能位于当前默认 DNS、路由器 DNS 转发或其上游链路。
场景 3:对比根域名与子域名
nslookup flextv.cc
nslookup www.flextv.cc
flextv.cc 和 www.flextv.cc 是不同的 DNS 名称,可能配置不同记录。根域名可以解析,不代表 www 的 CNAME 链一定正常。
场景 4:检查 DNS 修改是否生效
更改系统或路由器 DNS 后,重新执行:
nslookup www.flextv.cc
重点检查输出中的 DNS 服务器地址,以及是否还会超时。
场景 5:检查邮件或域名验证记录
nslookup -type=MX example.com
nslookup -type=TXT example.com
适合排查邮件投递、SPF 或第三方域名验证问题。
五、dig 是什么
dig 通常解释为 Domain Information Groper,是一款更偏向 DNS 诊断和分析的命令行工具。
相比 nslookup,dig 会展示更完整的 DNS 响应,包括:
- DNS 状态码;
- 请求与应答数量;
- DNS flags;
- 记录类型和 TTL;
- Answer、Authority、Additional 分区;
- 实际查询的 DNS 服务器;
- UDP 或 TCP 协议;
- 查询耗时和报文大小。
macOS 和多数 Linux 发行版通常可以直接使用 dig。Windows 默认不一定包含它,可以通过 WSL、BIND 工具包或其他 DNS 工具环境使用。
六、dig 的基本用法
1. 使用默认 DNS 查询
dig www.flextv.cc
没有指定记录类型时,默认查询 A 记录。
2. 指定 DNS 服务器
dig @1.1.1.1 www.flextv.cc
语法为:
dig @DNS服务器 域名 [记录类型] [选项]
@1.1.1.1 表示直接向 Cloudflare DNS 查询。
查询 Google DNS:
dig @8.8.8.8 www.flextv.cc
3. 查询指定记录类型
dig www.flextv.cc A
dig www.flextv.cc AAAA
dig www.flextv.cc CNAME
dig flextv.cc NS
dig flextv.cc MX
dig flextv.cc TXT
dig flextv.cc SOA
记录类型通常写在域名后面,这是 dig 常见的书写方式。
4. 只显示简短答案
dig +short www.flextv.cc
可能返回:
www.flextv.cc.queniuaa.com.
163.181.81.236
+short 适合人工快速查看,也方便脚本读取,但它会隐藏状态码、查询服务器和耗时等诊断信息。
5. 只显示 Answer Section
dig +noall +answer www.flextv.cc
含义:
+noall:先关闭所有默认输出分区;+answer:重新启用 Answer Section。
它比 +short 保留更多信息,例如 TTL、记录类型和 CNAME。
6. 查看完整 DNS 委派路径
dig +trace www.flextv.cc
+trace 会从根 DNS 开始,逐级查询顶级域、权威 DNS 和最终记录,适合排查:
- 域名委派错误;
- 权威 DNS 不一致;
- 某一级解析失败;
- DNS 变更尚未在委派链上生效。
需要注意,+trace 产生的是客户端逐级查询结果,与公共递归 DNS 最终返回的缓存结果并不完全等价。
7. 强制使用 TCP
dig +tcp @1.1.1.1 www.flextv.cc
DNS 通常优先使用 UDP 53 端口。+tcp 强制使用 TCP,可用于排查 UDP 被拦截、响应截断或大报文问题。
8. 显示或隐藏统计信息
dig +stats www.flextv.cc
dig +nostats www.flextv.cc
统计信息包含查询耗时、服务器、时间和报文大小。
七、dig 的常见使用场景
场景 1:查看 DNS 状态码
dig www.flextv.cc
常见状态:
| 状态码 | 含义 |
|---|---|
NOERROR |
查询成功;也可能是域名存在但所查类型没有记录,需要结合 Answer 数量判断 |
NXDOMAIN |
查询名称不存在 |
SERVFAIL |
DNS 服务器无法完成查询,可能是权威 DNS、DNSSEC 或上游问题 |
REFUSED |
DNS 服务器拒绝回答 |
超时通常由 dig 客户端直接报告,不会显示成一个正常 DNS 响应状态。
场景 2:查看 TTL
dig +noall +answer www.flextv.cc
TTL 决定递归 DNS 和客户端可以缓存记录多长时间。排查 DNS 变更是否传播时,TTL 非常重要。
场景 3:分析 CNAME 链和 CDN
dig www.flextv.cc
如果 Answer Section 同时出现 CNAME 和多个 A 记录,通常说明域名通过 CDN 或流量调度平台返回边缘节点地址。
场景 4:比较多个 DNS 的结果和延迟
dig @192.168.8.1 www.flextv.cc
dig @1.1.1.1 www.flextv.cc
dig @8.8.8.8 www.flextv.cc
可以比较:
- 是否都能成功返回;
- CNAME 是否一致;
- IP 是否因 CDN 调度而不同;
- TTL 是否不同;
- Query time 是否存在明显差异。
场景 5:排查权威 DNS 与委派问题
dig flextv.cc NS
dig +trace www.flextv.cc
这类分析是 dig 相比 nslookup 更擅长的领域。
八、nslookup 和 dig 的主要区别
| 对比项 | nslookup |
dig |
|---|---|---|
| 名称含义 | Name Server Lookup | Domain Information Groper |
| 核心定位 | 快速查询、基础排错 | 深度分析、专业 DNS 诊断 |
| 默认输出 | 相对简洁 | 完整且结构化 |
| 状态码 | 通常不突出 | 明确显示 NOERROR、NXDOMAIN、SERVFAIL 等 |
| TTL | 通常不直观 | 在 Answer Section 中明确显示 |
| DNS flags | 通常不显示 | 显示 qr、rd、ra、aa 等 |
| 查询耗时 | 通常不显示 | 显示 Query time |
| 报文分区 | 不突出 | 显示 Answer、Authority、Additional |
| 指定 DNS | nslookup 域名 DNS |
dig @DNS 域名 |
| 简短输出 | 能做到但不够统一 | +short |
| 权威链追踪 | 不方便 | +trace |
| 脚本使用 | 输出格式不够稳定 | +short 或 +noall +answer 更方便 |
| 平台普及度 | Windows、macOS、Linux 常见 | macOS/Linux 常见,Windows 可能需安装或使用 WSL |
同一个查询的写法如下。
nslookup:
nslookup www.flextv.cc 1.1.1.1
dig:
dig @1.1.1.1 www.flextv.cc
它们表达的核心意思相同:直接向 1.1.1.1 查询 www.flextv.cc。
实际使用时可以这样选择:
- 只想确认“能不能解析”:优先
nslookup; - 想看 TTL、状态码、耗时和记录细节:使用
dig; - 想分析权威 DNS 和委派路径:使用
dig +trace; - Windows 现场机器没有
dig:先用系统自带的nslookup。
九、案例:解读 dig @1.1.1.1 www.flextv.cc
本次在 Ubuntu 环境执行:
dig @1.1.1.1 www.flextv.cc
得到的核心输出如下:
; <<>> DiG 9.18.39-0ubuntu0.22.04.4-Ubuntu <<>> @1.1.1.1 www.flextv.cc
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52961
;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.flextv.cc. IN A
;; ANSWER SECTION:
www.flextv.cc. 600 IN CNAME www.flextv.cc.queniuaa.com.
www.flextv.cc.queniuaa.com. 60 IN A 163.181.81.236
www.flextv.cc.queniuaa.com. 60 IN A 163.181.81.148
www.flextv.cc.queniuaa.com. 60 IN A 163.181.81.238
www.flextv.cc.queniuaa.com. 60 IN A 163.181.81.234
www.flextv.cc.queniuaa.com. 60 IN A 163.181.81.237
www.flextv.cc.queniuaa.com. 60 IN A 163.181.81.231
www.flextv.cc.queniuaa.com. 60 IN A 163.181.81.233
www.flextv.cc.queniuaa.com. 60 IN A 163.181.81.235
;; Query time: 395 msec
;; SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
;; WHEN: Mon Aug 17 17:08:50 CST 2026
;; MSG SIZE rcvd: 199
下面逐段解释。
1. dig 版本
DiG 9.18.39-0ubuntu0.22.04.4-Ubuntu
表示使用的是 Ubuntu 22.04 软件源中的 BIND dig 9.18.39。
如果输出中出现:
(1 server found)
表示 dig 找到一个要查询的 DNS 服务器,即命令中指定的 1.1.1.1。它不是说 FlexTV 只有一台服务器。
2. DNS 状态
status: NOERROR
表示 Cloudflare DNS 正常处理了请求,没有返回 NXDOMAIN、SERVFAIL 或 REFUSED。
还要结合:
ANSWER: 9
一起判断。NOERROR 加上 9 条 Answer,说明本次查询成功并取得了记录。
如果状态是 NOERROR 但 ANSWER: 0,可能表示域名存在,但所查询的记录类型不存在,这种情况常被称为 NODATA。
id: 52961
是本次 DNS 请求的事务 ID,用于匹配请求和响应,没有业务含义。
3. flags
flags: qr rd ra
含义如下:
| 标志 | 含义 |
|---|---|
qr |
Query Response,当前报文是查询响应 |
rd |
Recursion Desired,客户端请求递归查询 |
ra |
Recursion Available,DNS 服务器支持递归查询 |
这里没有 aa。aa 表示 Authoritative Answer,即权威回答。没有 aa 是正常的,因为 1.1.1.1 是递归 DNS,不是 FlexTV 的权威 DNS。
4.记录数量
QUERY: 1
ANSWER: 9
AUTHORITY: 0
ADDITIONAL: 0
含义:
QUERY: 1:查询了一个问题;ANSWER: 9:Answer Section 中有 9 条记录;AUTHORITY: 0:响应没有附带权威 DNS 记录;ADDITIONAL: 0:响应没有附带额外记录。
AUTHORITY: 0 不表示域名没有权威 DNS,只表示本次递归响应没有把相关权威记录一起放入 Authority Section。
9 条 Answer 由 1 条 CNAME 和 8 条 A 记录组成。
5. Question Section
www.flextv.cc. IN A
表示查询的是 www.flextv.cc 的 IPv4 地址。
- 域名末尾的点表示完整域名;
IN表示 Internet 类别;A表示 IPv4 地址记录。
6. CNAME 记录
www.flextv.cc. 600 IN CNAME www.flextv.cc.queniuaa.com.
表示:
www.flextv.cc
↓ CNAME
www.flextv.cc.queniuaa.com
www.flextv.cc 没有在这份应答中直接指向固定 IP,而是通过 CNAME 接入另一个域名,通常用于 CDN 或流量调度。
其中 600 是 TTL:
600 秒 = 10 分钟
递归 DNS 可以在 TTL 允许的时间内缓存这条 CNAME。
7. 八条 A 记录
CNAME 目标返回了 8 个 IPv4 地址:
163.181.81.236
163.181.81.148
163.181.81.238
163.181.81.234
163.181.81.237
163.181.81.231
163.181.81.233
163.181.81.235
多个 IP 通常说明网站使用了 CDN 或负载均衡:
- 客户端可以连接不同的边缘节点;
- CDN 可以根据地区、运营商和负载返回不同地址;
- 单个节点异常时可以切换到其他节点;
- 不同 DNS 或不同时间查询到的 IP 可能不同。
每条 A 记录的 TTL 是 60 秒,说明 CDN 希望解析器较频繁地更新边缘节点结果。
这些 IP 只代表当次查询结果,不应长期写入 hosts 文件。
8. Query time
Query time: 395 msec
表示从发送 DNS 请求到收到完整应答用了 395 毫秒。
本次查询成功,但 395 毫秒相对偏高。可能原因包括:
- 当前网络到
1.1.1.1的路由距离; - WSL、虚拟网卡或 NAT 转发开销;
- 临时网络拥塞或 UDP 丢包;
- 首次查询没有命中递归 DNS 缓存。
不能用一次查询就判定网络异常,可以连续执行几次,观察后续查询是否明显变快。
9.实际 DNS 服务器、端口和协议
SERVER: 1.1.1.1#53(1.1.1.1) (UDP)
表示:
- 查询服务器是
1.1.1.1; - 使用 DNS 默认端口 53;
- 使用 UDP 传输。
这证明本次查询确实发送给 Cloudflare DNS,而不是系统默认 DNS。
10.时间与报文大小
WHEN: Mon Aug 17 17:08:50 CST 2026
MSG SIZE rcvd: 199
表示:
- 查询发生在输出显示的本地时间;
- 收到的 DNS 响应报文大小为 199 字节。
199 字节可以正常放入 UDP DNS 报文中,没有出现响应过大或被截断的问题。
十、这份查询结果能证明什么
它可以证明:
1.1.1.1能处理本次 DNS 查询;www.flextv.cc存在有效解析结果;- CNAME 链可以正常展开;
- 最终获得了 8 个 CDN IPv4 地址;
- 本次 DNS 响应没有错误;
- 查询通过 UDP 53 完成。
但它不能单独证明:
- 操作系统默认 DNS 也能正常解析;
- 浏览器实际使用的是
1.1.1.1; - TCP 443 一定可以连接;
- HTTPS 证书和 TLS 握手一定正常;
- 所有 CDN 节点都可以访问;
- 首页及其 JavaScript、图片、接口一定正常。
DNS 查询成功,只说明已经获得目标地址。验证网站还需要继续测试 TCP、TLS 和 HTTP。
十一、结合 nslookup 和 dig 建立排障证据链
第一步:测试系统默认 DNS
nslookup www.flextv.cc
dig www.flextv.cc
这两条命令没有指定 DNS 服务器,因此主要用于测试当前系统默认 DNS。
第二步:测试公共 DNS
nslookup www.flextv.cc 1.1.1.1
dig @1.1.1.1 www.flextv.cc
如果公共 DNS 成功,而默认 DNS 超时,问题更可能位于默认 DNS、路由器转发或其上游解析链路。
第三步:测试另一个公共 DNS
nslookup www.flextv.cc 8.8.8.8
dig @8.8.8.8 www.flextv.cc
两个独立公共 DNS 都成功,能够增强交叉验证的可信度。
第四步:验证 HTTPS
curl -I -sS --connect-timeout 10 --max-time 20 https://www.flextv.cc/
参数含义:
-I:只获取响应头,通常发送 HEAD 请求;-sS:隐藏进度条,但保留错误;--connect-timeout 10:连接阶段最多等待 10 秒;--max-time 20:整个操作最多运行 20 秒。
如果默认 DNS 导致 curl 出现:
Resolving timed out
说明 curl 卡在 DNS 解析阶段。
第五步:绕过 DNS 验证 CDN 和 HTTPS
选择当次 DNS 返回的一个 IP:
curl -I -sS \
--resolve www.flextv.cc:443:163.181.81.236 \
https://www.flextv.cc/
--resolve 为这一次 curl 请求提供临时的“域名:端口:IP”映射,不修改系统 DNS 和 hosts。
请求 URL 仍是 www.flextv.cc,所以 HTTP Host、TLS SNI 和证书校验仍使用真实域名。如果它返回 HTTP 200,说明指定节点上的 TCP、TLS 和 HTTP 链路能够工作。
最终可以形成这样的证据链:
默认 DNS 查询超时
↓
1.1.1.1 和 8.8.8.8 查询成功
↓
curl --resolve 绕过 DNS 后返回 HTTP 200
↓
问题位于当前默认 DNS 解析链路,而不是该测试节点的 HTTPS 服务
十二、常见误区
1. DNS 查询成功不等于网站一定能打开
DNS 只是第一步。后续还可能发生 TCP 超时、TLS 证书错误、HTTP 5xx 或前端资源加载失败。
2. NOERROR 不一定代表存在所查记录
还要查看 ANSWER 数量。NOERROR 加 ANSWER: 0 可能表示域名存在,但当前记录类型不存在。
3. AUTHORITY: 0 不代表没有权威 DNS
它只表示当前响应没有在 Authority Section 中附带权威记录。
4. Server: UnKnown 不一定是故障
它通常只是 DNS 服务器 IP 没有反向解析名称。只要查询能返回答案,DNS 仍可能正常工作。
5. 浏览器可能没有使用系统默认 DNS
Chrome、Edge、Firefox 等可能启用 DNS over HTTPS(DoH)。VPN、代理和安全软件也可能接管 DNS。因此:
nslookup www.flextv.cc
正常,不代表浏览器一定使用相同的解析服务器;反过来也一样。
6. CDN IP 不应长期写入 hosts
CDN 地址会随时间、地区、运营商和负载变化。固定某个 IP 会破坏动态调度,还可能在节点调整后再次失败。
7. 一次 Query time 不能代表长期性能
DNS 缓存命中、网络抖动和路由变化都会影响耗时。应多次查询并比较多个 DNS,不能只依据一次结果下结论。
十三、常用命令速查
nslookup
# 使用默认 DNS 查询
nslookup www.flextv.cc
# 指定 Cloudflare DNS
nslookup www.flextv.cc 1.1.1.1
# 指定 Google DNS
nslookup www.flextv.cc 8.8.8.8
# 查询记录类型
nslookup -type=A www.flextv.cc
nslookup -type=AAAA www.flextv.cc
nslookup -type=CNAME www.flextv.cc
nslookup -type=NS flextv.cc
nslookup -type=MX flextv.cc
nslookup -type=TXT flextv.cc
dig
# 使用默认 DNS
dig www.flextv.cc
# 指定 DNS
dig @1.1.1.1 www.flextv.cc
dig @8.8.8.8 www.flextv.cc
# 查询记录类型
dig www.flextv.cc A
dig www.flextv.cc AAAA
dig www.flextv.cc CNAME
dig flextv.cc NS
dig flextv.cc MX
dig flextv.cc TXT
dig flextv.cc SOA
# 简短输出
dig +short www.flextv.cc
# 只显示 Answer Section
dig +noall +answer www.flextv.cc
# 追踪完整委派链
dig +trace www.flextv.cc
# 强制使用 TCP
dig +tcp @1.1.1.1 www.flextv.cc
总结
nslookup 和 dig 都是 DNS 查询工具,但各有侧重:
nslookup简单、普及,适合快速判断域名是否能解析;dig信息完整,适合查看状态码、TTL、flags、查询耗时和权威解析链路;- 快速现场排查可以先用
nslookup; - 需要解释“为什么失败”时,应进一步使用
dig; - DNS 成功后,还要使用
curl等工具验证 TCP、TLS 和 HTTP。
本文案例中的查询结果可以概括为:
Cloudflare DNS
1.1.1.1成功解析www.flextv.cc,得到一个 TTL 为 600 秒的 CNAME,以及 8 个 TTL 为 60 秒的 CDN IPv4 地址。查询状态为NOERROR,使用 UDP 53 完成,耗时 395 毫秒。这能证明公共 DNS 解析成功,但不能单独证明系统默认 DNS、HTTPS 和所有 CDN 节点都正常。
建议标签: DNS、nslookup、dig、网络排错、Linux、Windows、CDN、HTTPS
说明: 本文中的 DNS 记录和 CDN IP 来自 2026-08-17 的一次实际查询。DNS 和 CDN 结果具有时效性,应以读者实际执行命令时的结果为准。

浙公网安备 33010602011771号