菜鸟科技网

DNS查询命令行有哪些常用指令?

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

DNS查询命令行有哪些常用指令?-图1
(图片来源网络,侵删)

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查询命令行有哪些常用指令?-图2
(图片来源网络,侵删)
  • 头部:显示查询的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

实际应用场景

  1. 故障排查:当网站无法访问时,通过dig +trace检查DNS解析是否正常传递。
  2. 记录管理:验证新添加的CNAME或TXT记录是否生效(通过dig +short快速确认)。
  3. 性能分析:通过比较不同DNS服务器的解析速度(如time dig @1.1.1.1 example.com)选择最优DNS。
  4. 安全审计:查询域名的MX记录验证邮件服务器配置,或通过TXT记录检查SPF策略。

命令行工具对比

工具 操作系统 优点 缺点
nslookup 全平台 基础功能齐全,预装 输出格式不统一,部分参数不兼容
dig Linux/macOS 输出详细,参数丰富 Windows需额外安装
host Linux/macOS 轻量,输出简洁 功能相对有限
Resolve-DnsName Windows PowerShell 模块化,支持管道 需PowerShell环境

相关问答FAQs

Q1: 如何判断DNS查询是否被劫持?
A: 通过以下方法检测:

DNS查询命令行有哪些常用指令?-图3
(图片来源网络,侵删)
  1. 使用dig +trace 域名查看解析路径,若中间节点返回异常IP(如非权威服务器的错误地址),则可能被劫持。
  2. 对比本地DNS和公共DNS(如8.8.8)的查询结果,若IP不一致,需检查本地DNS配置或网络设备。
  3. 检查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)。

分享:
扫描分享到社交APP
上一篇
下一篇