wireshark dns报文分析

admin|
31


nslookup 是一个查询 Internet 域名服务器的程序。我们通常使用nslookup工具来测试DNS解析,获取DNS报文的详细数据,这也是我们想要使用协议分析工具nslookup来分析DNS流量进行分析。

只要你上网,都会涉及DNS解析。简单起见,我们这里不会搭建一个DNS服务器,而是使用Internet域名解析来分析验证。

使用nslookup工具进行DNS查询

nslookup 命令可用于许多操作系统,如 Windows、macOS 和 Linux 发行版。 您可以使用它来执行 DNS 查询并接收:域名或 IP 地址,或任何其他特定的 DNS 记录。

nslookup命令可以在两种模式下允许:交互式和非交互式。当需要返回单一查询的结果,可以使用非交互式模式,语法如下:

例如我们查询一个baidu.com的命令结果如下

wireshark dns报文分析_linux

nslookup 后跟域名将显示域的“A 记录”(IP 地址)。 使用此命令查找域的地址记录。 它查询域名服务器并获取详细信息。

如何检查反向 DNS 查找?

很多时候您会检查 A 记录以查看域的 IP,但有时您需要验证 IP 地址是否与特定域相关。 为此,我们需要反向 DNS 查找。

wireshark dns报文分析_nslookup_02


下面来看看如何开启nslookup调试模式。

wireshark dns报文分析_linux_03

下面给出的是debug模式下部分代码具体实现。

nslookup的交互模式

nslookup在交互模式下使用,进入交互状态并执行相应的子命令,交互命令如下:

常用的子命令为

nslookup [exit | finger | help | ls | lserver | root | server | set | view] [options]

exit :退出 nslookup 命令行工具
finger :与当前计算机上的finger 服务器连接
help : 显示子命令的简短摘要
ls: 列出 DNS 域的信息
lserver : 改变默认域名服务器
root :将默认服务器挂到DNS域名空间根的服务器上
server :指定域名服务器
set :此命令用于更改影响查找的状态信息
view:排序并列出前一个 ls 子命令或命令的输出

在交互模式下正向解析,查询域名信息。要中断交互命令,可以使用ctrl + c组合键,要退出交互模式并返回到命令提示符,在命令提示符下输入“exit”即可。

wireshark dns报文分析_运维_04

直接输入要查询的域名可返回域名的IP地址。输入server可返回当前DNS服务器的信息。

无论是交互式和非交互式,如果没有指定DNS服务器地址,nslookup命令将查询当前计算机的默认DNS服务器。

默认查询主机地址,想要测试其他类型的资源记录,先使用 set type命令设置要查询的DNS记录类型,然后输入域名,可得到相应类型的域名测试结果。

类型值如下:

举例如下:

wireshark dns报文分析_linux_05


如何查找域的所有可用 DNS 记录。

nslookup -type=any baidu.com

这个查找范围很大。 在这里,我们要查看所有可用的 DNS 记录。 在看到所有这些之后,我们可以对不同类型的 DNS 记录进行特定查找。

wireshark dns报文分析_linux_06

捕获DNS流量验证报文格式

网络访问只要涉及域名,都会执行DNS解析,如ping ,web访问等等。下面我们使用nslookup命令查询域名baidu.com 。

下图是使用wireshark进行抓取DNS数据包

wireshark dns报文分析_运维_07

这是一个简单的DNS解析过程,序号为56的数据包显示的是DNS查询报文,序号为57是数据包是DNS应答报文。

下面我们讲讲56序号的详细数据。

wireshark dns报文分析_DNS_08

这里我们展开了Domain Name System节点。客户端向服务器发送DNS查询报文,这是一个标准查询(Standard Query),我们可以理解为正向解析。

查询报文分为首部和问题两个部分。首部包含ID,标志和计数器3类字段。Opcode值为0表示标准查询。

Question为1表示只有一个查询报文,其他3个资源记录数均为0。问题部分给出了要查询的域名、类型、和类。

这个报文封装在UDP协议上,发往DNS服务器,传输的目的端口号为53.

下面我们讲讲57序号的详细数据。

wireshark dns报文分析_DNS_09

这里我们展开了Domain Name System节点。服务器返回客户端DNS应答报文。应答报文分为首部、问题、回答、权威、附加5个部分。

首部包含ID,标志和计数器3类字段。ID与查询报文相同。Question为1表示只有一个查询报文,其他3个资源记录数给出了相应的数目,问题部分与查询部分相同

wireshark dns报文分析_运维_10


在展开Answers节点。每条记录都包括名称、类型、类、生存时间、数据长度和数据6个字段。

总结

nslookup 是流行的 DNS 探测命令行软件之一。 可以使用它来监控您的网络并发现有问题的区域。如果大家感兴趣,可以研究研究类似的工具,比如dig、traceroute 、ping等等。