简介
在本次实验中,你将通过实践练习学习使用 Wireshark 的 Tshark 工具来排查 DNS 查询问题。你将使用“udp port 53”过滤器捕获 DNS 流量,使用“dns.qry.name”等显示过滤器分析查询,并使用“dns,tree”选项检查计时统计信息。
本实验将指导你掌握实用技巧,包括隔离 DNS 数据包、可视化查询时间,以及使用“-V”标志提取详细的数据包信息。通过完成这些练习,你将掌握使用专业数据包分析方法诊断 DNS 问题的关键技能。
在本次实验中,你将通过实践练习学习使用 Wireshark 的 Tshark 工具来排查 DNS 查询问题。你将使用“udp port 53”过滤器捕获 DNS 流量,使用“dns.qry.name”等显示过滤器分析查询,并使用“dns,tree”选项检查计时统计信息。
本实验将指导你掌握实用技巧,包括隔离 DNS 数据包、可视化查询时间,以及使用“-V”标志提取详细的数据包信息。通过完成这些练习,你将掌握使用专业数据包分析方法诊断 DNS 问题的关键技能。
在这一步中,你将学习如何使用 Wireshark 的捕获过滤器来捕获 DNS 流量。DNS(域名系统)就像是互联网的电话簿,它将人类可读的域名(如 example.com)转换为机器可读的 IP 地址。大多数 DNS 查询使用 UDP 端口 53,因为这些查询数据量小且速度快,而较大的响应可能会使用 TCP。
首先,如果你还没有打开 LabEx 虚拟机中的终端,请打开它。所有命令都将在默认工作目录 ~/project
中执行。我们将把捕获的文件保存到这个目录。
在终端中使用以下命令启动 Wireshark:
wireshark &
&
符号会让 Wireshark 在后台运行,这样你就可以在 Wireshark 保持打开的同时继续使用终端。当你在进行网络分析时需要运行其他命令,这种方式很有用。
在 Wireshark 的主界面中:
eth1
)。这会告诉 Wireshark 要监控哪个网络连接。udp port 53
。这个过滤器可以确保 Wireshark 只捕获 DNS 流量,减少其他网络活动带来的干扰。为了生成一些用于测试的 DNS 流量,打开另一个终端并运行:
nslookup example.com
这个命令会让你的系统查询“example.com”的 IP 地址,从而产生我们想要捕获的 DNS 流量。你可以把它想象成打一个测试电话,看看我们的监控是否正常工作。
在 Wireshark 中,你现在应该能看到捕获到的 DNS 数据包。这些数据包会在主窗口中以行的形式显示,通常会显示查询和响应信息。当你看到足够的流量后,点击红色方块按钮停止捕获。
保存捕获的文件以便后续分析:
dns_capture.pcapng
,保存路径为 ~/project
目录。这种文件格式可以保留所有原始数据包数据,以便进行详细检查。需要理解的关键点:
-f "udp port 53"
是一个捕获过滤器,它只记录 DNS 流量,就像设置了一个专门的麦克风,只监听 DNS 对话。在这一步中,你将学习如何使用 Wireshark 的显示过滤器来过滤 DNS 查询。DNS(域名系统)就像是互联网的电话簿,它将人类可读的域名转换为机器可读的 IP 地址。在排查网络问题时,检查 DNS 流量可以揭示重要线索。
我们将重点关注 dns.qry.name
字段,该字段专门显示 DNS 查询中所请求的域名。当你需要检查与特定网站或服务相关的流量时,这在我们上一步创建的捕获文件中特别有用。
&
符号会让命令在后台运行,这样你就可以继续使用终端:wireshark ~/project/dns_capture.pcapng &
dns.qry.name == "example.com"
这个严格相等过滤器 (==
) 将仅显示查询的域名与“example.com”完全匹配的数据包。
dns.qry.name
这将显示所有包含 DNS 查询名称的数据包,有助于你了解网络上正在查询哪些域名。
dns.flags.response == 0 || dns.flags.response == 1
在这里,dns.flags.response == 0
显示查询(请求),而 dns.flags.response == 1
显示响应。
dns.qry.name contains "example"
这将匹配任何包含“example”的域名,例如“example.com”、“test.example.org”或“example.net”。
需要理解的关键点:
-Y
是 Wireshark 的显示过滤器选项(相当于在过滤器栏中输入内容)dns.qry.name
是 DNS 数据包中的一个特定字段,包含正在查询的域名==
用于精确匹配!=
用于排除contains
用于部分匹配response == 0
) 和响应 (response == 1
)DNS(域名系统)就像是互联网的电话簿,它将人类可读的域名转换为机器可读的 IP 地址。在排查网络问题时,分析 DNS 响应时间可以揭示性能瓶颈。在这一步中,我们将使用 Wireshark 内置的统计功能和 -z dns,tree
选项来测量 DNS 服务器对查询的响应速度。
&
符号可让你在 Wireshark 运行时继续使用终端:wireshark -z dns,tree ~/project/dns_capture.pcapng &
一个名为“DNS Statistics”的新窗口将打开,以树形结构显示三个主要信息:
让我们仔细查看统计信息列:
为了在分析中看到更多有趣的数据,让我们生成新的 DNS 查询。打开一个新的终端窗口并运行以下常见的查询命令:
nslookup google.com
nslookup labex.io
需要记住的关键概念:
-z dns,tree
命令可激活 Wireshark 的专业 DNS 分析模式在这一步中,你将了解如何使用 Wireshark 的详细模式(-V
选项)来详细检查 DNS 数据包。在排查 DNS 问题时,查看所有协议细节对于准确了解网络流量中发生的情况至关重要。
wireshark -V -r ~/project/dns_capture.pcapng &
-V
标志指示 Wireshark 显示详细输出,展示所有可用的协议信息,而不仅仅是基本的数据包摘要。
在 Wireshark 界面中,关注中间名为“Packet Details”的面板。以下是查看 DNS 信息的方法:
查看 DNS 查询数据包(通常是从客户端发送到服务器)时,请特别注意:
对于 DNS 响应数据包(从服务器发送到客户端),请检查以下重要字段:
若要保存此详细分析结果,以便日后查看或与同事分享,请运行以下命令:
tshark -V -r ~/project/dns_capture.pcapng > ~/project/dns_analysis.txt
这将创建一个文本文件,其中包含捕获文件的所有详细输出。
需要记住的关键概念:
-V
选项可显示每个数据包的完整协议解析信息。dns
),在查看完整细节的同时专注于特定的数据包。在本次实验中,你学习了如何使用 Wireshark 的 Tshark 工具来排查 DNS 查询问题。本练习展示了如何使用 UDP 端口 53 过滤器捕获 DNS 流量,并通过 dns.qry.name
等针对性的显示过滤器分析查询。
你练习了使用 nslookup
生成测试流量,并保存捕获文件以进行分析,从而深入了解了 DNS 协议的行为以及 Wireshark 在隔离特定域名请求方面的强大过滤功能。这些技能对于网络故障排查和与 DNS 相关的调查至关重要。