在 Tshark 中限制捕获大小

WiresharkWiresharkBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将学习使用 Tshark 命令在 Wireshark 中控制数据包捕获大小。你将探索两种重要的技术:使用 -c 500 限制总数据包数量,以及使用 -s 128 限制数据包长度,仅捕获头部信息,从而节省存储空间。

通过在 eth1 接口上进行的实际操作,你将把流量捕获到 limited.pcap 文件中,并观察不同设置如何影响你的捕获结果。这种实践经验将帮助你针对各种分析场景优化数据包收集。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/interface("Interface Overview") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/interface -.-> lab-548932{{"在 Tshark 中限制捕获大小"}} wireshark/packet_capture -.-> lab-548932{{"在 Tshark 中限制捕获大小"}} wireshark/export_packets -.-> lab-548932{{"在 Tshark 中限制捕获大小"}} wireshark/commandline_usage -.-> lab-548932{{"在 Tshark 中限制捕获大小"}} end

使用 -c 500 设置数据包数量

在这一步中,你将学习如何通过限制 Wireshark 收集的数据包数量来控制数据包捕获的时长。当你需要获取网络流量的代表性样本,同时又不想因持续捕获而使系统负担过重时,-c 选项尤为有用。

  1. 首先,在你的 LabEx 虚拟机中打开终端。系统会自动将你置于正确的工作目录(~/project),因此你可以立即开始操作。

  2. 命令结构采用以下基本模式:

tcpdump -c [number] [other options]

在这里,[number] 通过指定要收集的最大数据包数量来精确确定捕获何时停止。这可以防止无限运行导致存储空间被填满。

  1. 让我们以捕获 500 个数据包作为主要练习。执行以下命令:
sudo tcpdump -c 500 -i eth1

注意,我们指定 eth1 作为网络接口。这告诉 tcpdump 要监控哪个网络连接,当你的机器有多个网络适配器时,这一点至关重要。

  1. 当数据包流动时,你将看到实时输出。在恰好捕获 500 个数据包后,tcpdump 会自动终止并显示统计信息:
500 packets captured
500 packets received by filter
0 packets dropped by kernel

这些数字确认了捕获成功(第一行)、过滤正常(第二行)以及没有系统资源问题(零丢包)。

  1. 在进行完整的 500 个数据包捕获之前,先用较小的样本进行测试,以了解其机制。这个 10 个数据包的测试有助于验证你的设置:
sudo tcpdump -c 10 -i eth1

使用 -s 128 定义快照长度

在这一步中,你将学习如何使用 -s 选项在捕获数据包时设置快照长度(snaplen)。该选项决定了每个数据包捕获的字节数,128 字节是一个常见的值,它可以在捕获数据包头部的同时节省存储空间。当你只需要数据包头部进行分析,而不需要完整的数据包内容时,快照长度特别有用。

  1. 首先,确保你在终端的默认工作目录 ~/project 中。我们将在此处运行所有捕获命令,以保持操作的条理性。

  2. 快照长度选项 (-s) 通过指定要记录的字节数来限制每个数据包的捕获量。较小的值可以节省磁盘空间,但可能会丢失重要的有效负载数据。基本语法如下:

tcpdump -s [length] [other options]
  1. 让我们结合上一步的数据包数量设置,以 128 字节的快照长度捕获数据包。此命令将捕获每个数据包的前 128 字节,直到捕获到 500 个数据包为止:
sudo tcpdump -c 500 -s 128 -i eth1
  1. 你将看到显示每个数据包前 128 字节的输出。根据 -c 选项的指定,捕获将在 500 个数据包后自动停止。这种组合有助于同时管理捕获的大小和时长。

  2. 为了更好地理解快照长度如何影响捕获结果,请尝试以下对比命令。注意不同的 -s 值如何改变显示的数据量:

sudo tcpdump -c 5 -s 64 -i eth1 ## Captures only 64 bytes per packet
sudo tcpdump -c 5 -s 0 -i eth1  ## Captures entire packets (default)

-s 0 设置告诉 tcpdump 捕获完整的数据包,当你需要完整的数据包内容时,这很有用,但会消耗更多的存储空间。

使用 -i eth1 捕获流量

在这一步中,我们将重点介绍如何使用 Tshark 的 -i 选项从特定接口捕获网络流量。网络接口是计算机用于与网络进行通信的物理或虚拟连接。当你有多个接口(如 Wi-Fi 和以太网)时,指定正确的接口对于有针对性的数据包分析至关重要。

  1. 打开终端并导航到工作目录:
cd ~/project
  1. -i 标志告诉 Tshark 要监控哪个网络接口。基本命令结构如下:
tcpdump -i [interface] [other options]

在这里,[interface] 应替换为你实际的接口名称,通常以太网为 'eth1',Wi-Fi 为 'wlan0'。

  1. 现在,让我们将此选项与我们之前学到的数据包限制(-c)和快照长度(-s)结合起来。以下命令将从 eth1 接口捕获 500 个数据包,每个数据包仅保存前 128 字节:
sudo tcpdump -c 500 -s 128 -i eth1

由于数据包捕获需要管理员权限,因此需要使用 sudo

  1. 如果你不确定系统上有哪些可用的接口,请运行:
tcpdump -D

这将显示所有活动网络接口的编号列表,帮助你确定用于捕获的正确接口。

  1. 为了在捕获时生成测试流量,打开另一个终端并运行:
ping -c 3 google.com

这会向谷歌的服务器发送 3 个 ICMP 数据包,这些数据包应该会出现在你的捕获结果中。观察这些已知的数据包有助于验证你的捕获是否正常工作。

  1. 捕获将在 500 个数据包后自动停止,但你可以随时通过按下以下组合键手动停止:
Ctrl+C

这个键盘中断可以安全地终止捕获过程,同时保留已捕获的数据。

使用 -w limited.pcap 保存到文件

在这一步中,你将学习如何将捕获的网络流量保存到文件中,以便后续分析。tcpdump 中的 -w 选项可以创建一个数据包捕获(pcap)文件,该文件会保存所有捕获到的网络数据。当你需要离线检查流量模式或与同事共享捕获结果时,这一功能特别有用。

  1. 在开始之前,确保你的终端处于正确的工作目录。输入以下命令:
cd ~/project

这可以确保你所有的捕获文件都将保存在指定的项目文件夹中。

  1. -w 标志告诉 tcpdump 将捕获的数据包存储在哪里。基本命令结构如下:
tcpdump -w [filename] [other options]

文件名应以 .pcap 扩展名结尾,这是数据包捕获文件的标准格式。

  1. 现在,让我们将目前学到的所有选项组合成一个实际的示例。以下命令将:
  • 精确捕获 500 个数据包 (-c 500)
  • 将每个数据包限制为 128 字节 (-s 128)
  • 监听 eth1 接口 (-i eth1)
  • 将所有内容保存到名为 limited.pcap 的文件中 (-w limited.pcap)
sudo tcpdump -c 500 -s 128 -i eth1 -w limited.pcap
  1. 当 tcpdump 运行时,打开另一个终端窗口以生成一些测试流量。以下命令将创建典型的网络活动:
ping -c 3 google.com
curl http://example.com

这些模拟的流量将被正在运行的 tcpdump 会话捕获。

  1. 在捕获 500 个数据包后(或者按 Ctrl+C 提前停止),验证你的捕获文件是否存在并检查其大小:
ls -lh limited.pcap

输出将显示文件的详细信息,包括大小(在这个示例中为 56K)和创建时间:

-rw-r--r-- 1 root root 56K Aug 10 15:30 limited.pcap
  1. 若要稍后查看你捕获的数据包,请使用 -r 选项读取 pcap 文件:
tcpdump -r limited.pcap

这将精确显示捕获时的数据包内容,让你可以在方便的时候分析流量。

总结

在本次实验中,你学习了如何使用 Tshark 中的基本命令行参数来控制数据包捕获的大小。你练习了使用 -c 500 限制数据包数量,以及使用 -s 128 限制数据包长度,并观察了这些选项如何影响捕获行为和存储效率。

这些练习展示了如何将这些技术与接口选择(-i eth1)相结合,以进行有针对性的流量分析。通过像 sudo tcpdump -c 500 -s 128 -i eth1 这样的命令,你获得了同时应用多个捕获约束条件的实践经验。