在命令行环境中进行DNS查询是网络管理和故障排查的重要技能,通过命令行工具可以高效获取域名与IP地址的映射关系、域名解析路径、邮件服务器记录等信息,以下将详细介绍常用的DNS查询命令行工具及其使用方法、参数解析和实际应用场景。

nslookup命令
nslookup(Name Server Lookup)是最基础且广泛使用的DNS查询工具,支持交互式和非交互式两种模式,在Windows和Linux/macOS系统中均默认安装,使用灵活。
基本查询语法
nslookup [域名] [DNS服务器]
- 示例1:查询
www.example.com
的A记录(默认查询)nslookup www.example.com
- 示例2:指定DNS服务器(如8.8.8.8)进行查询
nslookup www.example.com 8.8.8.8
交互式模式
输入nslookup
后按回车进入交互模式,可使用set
命令配置查询参数:
set type=A
:查询A记录(默认)set type=MX
:查询邮件交换记录set type=NS
:查询域名服务器记录set type=ANY
:查询所有记录类型set debug
:显示详细调试信息
常见记录类型查询
记录类型 | 功能 | nslookup命令示例 |
---|---|---|
A | 将域名指向IPv4地址 | set type=A + www.example.com |
AAAA | 将域名指向IPv6地址 | set type=AAAA + www.example.com |
MX | 邮件服务器记录 | set type=MX + example.com |
NS | 域名服务器记录 | set type=NS + example.com |
CNAME | 别名记录 | set type=CNAME + www.example.com |
TXT | 文本记录(如SPF) | set type=TXT + example.com |
高级功能
- 反向查询:通过IP地址查询域名
nslookup 93.184.216.34
- 查询权威域名服务器:使用
set=querytype=NS
后查询域名,可获取该域名的权威DNS服务器列表。
dig命令
dig(Domain Information Groper)是Linux/macOS系统中更强大的DNS查询工具,输出信息详细且格式化,适合深度分析。
基本语法
dig @DNS服务器 [域名] [记录类型]
- 示例1:查询
www.example.com
的A记录dig @8.8.8.8 www.example.com
- 示例2:查询MX记录
dig example.com MX
输出字段解析
dig的输出分为五个部分:

- 头部:显示查询的DNS服务器和查询选项。
- 查询问题:显示查询的域名和记录类型。
- 回答区域:返回的DNS记录详情。
- 权威区域:权威域名服务器的信息。
- 附加区域:额外记录(如NS记录对应的IP地址)。
常用参数
参数 | 功能 |
---|---|
+short |
简化输出,仅返回核心结果 |
+trace |
显示完整的DNS解析路径 |
+noall + [answer,authority,additional] |
自定义输出部分 |
-x |
反向查询(等同于nslookup的反向查询) |
实用示例
- 简化输出:
dig +short www.example.com
- 跟踪解析路径:
dig +trace example.com
- 查询特定记录的TTL值:
dig example.com A +noall +answer +ttlid
host命令
host是轻量级DNS查询工具,输出简洁,适合快速检查域名解析状态。
基本语法
host [域名] [DNS服务器]
- 示例1:查询域名A记录
host www.example.com
- 示例2:反向查询
host 93.184.216.34
常用参数
参数 | 功能 |
---|---|
-t |
指定记录类型(如-t MX ) |
-a |
显示所有记录(等同于dig ANY ) |
-v |
详细输出模式 |
Windows专用命令
nslookup
Windows的nslookup功能与Linux/macOS基本一致,但交互式模式中不支持部分set
参数(如set debug
需通过options
命令替代)。
Resolve-DNS(PowerShell)
在PowerShell中可使用Resolve-DnsName
cmdlet,功能更现代化:
Resolve-DnsName -Name www.example.com -Type A -Server 8.8.8.8
实际应用场景
- 故障排查:当网站无法访问时,通过
dig +trace
检查DNS解析是否正常传递。 - 记录管理:验证新添加的CNAME或TXT记录是否生效(通过
dig +short
快速确认)。 - 性能分析:通过比较不同DNS服务器的解析速度(如
time dig @1.1.1.1 example.com
)选择最优DNS。 - 安全审计:查询域名的MX记录验证邮件服务器配置,或通过TXT记录检查SPF策略。
命令行工具对比
工具 | 操作系统 | 优点 | 缺点 |
---|---|---|---|
nslookup | 全平台 | 基础功能齐全,预装 | 输出格式不统一,部分参数不兼容 |
dig | Linux/macOS | 输出详细,参数丰富 | Windows需额外安装 |
host | Linux/macOS | 轻量,输出简洁 | 功能相对有限 |
Resolve-DnsName | Windows PowerShell | 模块化,支持管道 | 需PowerShell环境 |
相关问答FAQs
Q1: 如何判断DNS查询是否被劫持?
A: 通过以下方法检测:

- 使用
dig +trace 域名
查看解析路径,若中间节点返回异常IP(如非权威服务器的错误地址),则可能被劫持。 - 对比本地DNS和公共DNS(如
8.8.8
)的查询结果,若IP不一致,需检查本地DNS配置或网络设备。 - 检查
dig
输出的authority
部分,确认权威服务器是否为域名注册商指定的服务器。
Q2: 如何批量查询多个域名的DNS记录?
A: 可通过脚本实现批量查询,例如在Linux中使用for
循环结合dig
:
for domain in "example.com" "test.org" "demo.net"; do echo "查询 $domain 的A记录:" dig +short $domain A echo "---------------------" done
或在Windows PowerShell中使用:
$domains = "example.com", "test.org", "demo.net" foreach ($domain in $domains) { Resolve-DnsName -Name $domain -Type A | Select-Object Name, IPAddress }
对于大量域名,可编写CSV文件并使用脚本逐行处理,或使用专业的DNS管理工具(如dnsrecon
)。