nslookup 与 dig 使用指南:DNS 查询、区别对比及真实案例解读

在排查“域名打不开”“某个网站能访问、另一个网站不能访问”“修改 DNS 后是否生效”等问题时,最常见的两个工具是 nslookupdig

它们都能向 DNS 服务器查询域名记录,但定位并不完全相同:

  • nslookup 更适合快速确认域名能否解析;
  • dig 更适合分析 DNS 响应细节、TTL、状态码、查询耗时和权威解析链路。

本文将介绍这两个工具的含义、使用方式、典型场景和主要区别,并结合下面这条真实查询进行完整解读:

dig @1.1.1.1 www.flextv.cc

一、理解 DNS 查询

浏览器访问:

https://www.flextv.cc/

首先需要把域名转换成服务器 IP。这个过程就是 DNS 解析。

一个 HTTPS 请求通常要经历:

  1. DNS:把域名解析成 IP;
  2. TCP:连接目标 IP 的 443 端口;
  3. TLS:建立加密连接并验证证书;
  4. HTTP:发送请求并接收网页内容;
  5. 浏览器:加载脚本、样式、图片和接口。

如果 DNS 没有返回 IP,后面的 TCP、TLS 和 HTTP 通常都无法开始。因此,遇到网站打不开时,先确认 DNS 是否正常是一种高效的排查方法。

常见 DNS 记录包括:

记录类型 作用
A 域名对应的 IPv4 地址
AAAA 域名对应的 IPv6 地址
CNAME 域名别名,常用于接入 CDN
NS 域名使用的权威 DNS 服务器
MX 邮件服务器
TXT 文本记录,常用于域名验证、SPF、DKIM 等
SOA DNS 区域的起始授权信息

二、nslookup 是什么

nslookupName 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 获得了答案;如果出现超时、NXDOMAINSERVFAIL,需要继续排查。

场景 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.ccwww.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 诊断和分析的命令行工具。

相比 nslookupdig 会展示更完整的 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 诊断
默认输出 相对简洁 完整且结构化
状态码 通常不突出 明确显示 NOERRORNXDOMAINSERVFAIL
TTL 通常不直观 在 Answer Section 中明确显示
DNS flags 通常不显示 显示 qrrdraaa
查询耗时 通常不显示 显示 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 正常处理了请求,没有返回 NXDOMAINSERVFAILREFUSED

还要结合:

ANSWER: 9

一起判断。NOERROR 加上 9 条 Answer,说明本次查询成功并取得了记录。

如果状态是 NOERRORANSWER: 0,可能表示域名存在,但所查询的记录类型不存在,这种情况常被称为 NODATA。

id: 52961

是本次 DNS 请求的事务 ID,用于匹配请求和响应,没有业务含义。

3. flags

flags: qr rd ra

含义如下:

标志 含义
qr Query Response,当前报文是查询响应
rd Recursion Desired,客户端请求递归查询
ra Recursion Available,DNS 服务器支持递归查询

这里没有 aaaa 表示 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 数量。NOERRORANSWER: 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

总结

nslookupdig 都是 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 结果具有时效性,应以读者实际执行命令时的结果为准。

posted @ 2026-08-17 20:05  sudebao点com  阅读(4)  评论(0)    收藏  举报