Tshark 限制捕获大小

WiresharkBeginner
立即练习

介绍

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

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

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

本步骤将介绍如何通过限制 Tshark 收集的数据包数量来控制数据包捕获持续时间。Tshark 是 Wireshark 的命令行版本,非常适合自动化捕获。当你需要一个具有代表性的网络流量样本,而无需让系统持续捕获而过载时,-c 选项尤其有用。

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

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

    tshark -c [数字] [其他选项]
    

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

  3. 首先,让我们识别可用的网络接口。运行以下命令:

    tshark -D
    

    你将看到一个接口列表,类似于这样:

    1. eth0
    2. eth1 (虚拟接口)
    3. any
    4. lo (环回)
    ...
    

    我们将使用 eth1 进行我们的捕获,因为它是一个为本实验创建的虚拟接口,以确保流量生成的一致性。

  4. 让我们捕获 500 个数据包作为我们的主要练习。执行此命令:

    tshark -c 500 -i eth1
    

    sudo 命令是必需的,因为数据包捕获需要管理员权限。这告诉 tshark 监控 eth1 网络连接。

  5. 为了生成一些 tshark 可以捕获的流量,请打开一个新的终端标签(或分割当前终端)并运行以下命令:

    ping -c 10 google.com
    

    这将向 google.com 发送 10 个 ICMP 数据包,在 eth1 上创建 tshark 可以捕获的网络活动。

  6. 随着数据包的流动,你将在 tshark 终端中看到实时输出。精确地捕获 500 个数据包后,tshark 会自动终止。输出将类似于这样(尽管对于 500 个数据包,它会长得多):

    Capturing on 'eth1'
        1 0.000000000 192.168.X.X -> 142.250.X.X ICMP 84 Echo (ping) request  id=0xXXXX, seq=1/256, ttl=64 (reply in 2)
        2 0.000000000 142.250.X.X -> 192.168.X.X ICMP 84 Echo (ping) reply    id=0xXXXX, seq=1/256, ttl=117 (request in 1)
    ... (更多行)
    500 packets captured
    
  7. 在完整捕获 500 个数据包之前,先用较小的样本进行测试,以了解机制。这个 10 个数据包的试验有助于验证你的设置:

    tshark -c 10 -i eth1
    

    记住,在运行此命令时,请在另一个终端中生成流量。

使用 -s 128 定义快照长度

本步骤将介绍如何使用 Tshark 中的 -s 选项设置捕获数据包时的快照长度 (snaplen)。这决定了捕获每个数据包的多少字节,128 字节是一个常见的值,它捕获数据包头部信息,同时节省存储空间。当分析仅需要数据包头部信息而非完整数据包内容时,快照长度尤其有用。

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

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

    tshark -s [长度] [其他选项]
    
  3. 让我们使用 128 字节的快照长度,结合上一步骤的数据包数量来捕获数据包。此命令将捕获每个数据包的前 128 字节,直到达到 500 个数据包:

    tshark -c 500 -s 128 -i eth1
    

    记住,在 tshark 运行时,请在另一个终端中生成流量(例如,ping -c 10 google.com)。

  4. 你将看到显示每个数据包前 128 字节的输出。根据 -c 选项指定的 500 个数据包,捕获将自动停止。这种组合有助于同时管理捕获的大小和持续时间。输出将类似于上一步,但如果数据包详情超过 128 字节,则可能会被截断。

    Capturing on 'eth1'
        1 0.000000000 192.168.X.X -> 142.250.X.X ICMP 84 Echo (ping) request  id=0xXXXX, seq=1/256, ttl=64 (reply in 2)
    ... (更多行)
    500 packets captured
    
  5. 为了更好地理解快照长度如何影响捕获,请尝试这些比较命令。注意,不同 -s 值如何改变显示的数据量。记住,对于每个命令,都需要生成流量。

    tshark -c 5 -s 64 -i eth1 ## 仅捕获每个数据包的前 64 字节
    tshark -c 5 -s 0 -i eth1  ## 捕获完整数据包(默认)
    

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

使用 -i eth1 捕获网络流量

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

  1. 打开你的终端并导航到工作目录:

    cd ~/project
    
  2. -i 标志告诉 Tshark 要监控哪个网络接口。基本命令结构是:

    tshark -i [接口] [其他选项]
    

    这里,[接口] 应该替换为你的实际接口名称,对于我们的实验环境,通常是 eth1

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

    tshark -c 500 -s 128 -i eth1
    

    sudo 命令是必需的,因为数据包捕获需要管理员权限。

  4. 为了在捕获的同时生成测试流量,请打开另一个终端标签并运行:

    ping -c 3 google.com
    

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

  5. 捕获将在 500 个数据包后自动停止,但你随时可以通过按下以下按键手动停止它:

    Ctrl+C
    

    此键盘中断安全地终止捕获过程,同时保留任何已捕获的数据。

将数据保存到文件 limited.pcap

本步骤将介绍如何保存捕获的网络流量到文件,以便后续分析。Tshark 中的 -w 选项创建了一个数据包捕获 (pcap) 文件,保存所有捕获的网络数据。当需要离线检查流量模式或与同事共享捕获数据时,此功能非常有用。

  1. 开始之前,请确保你的终端位于正确的当前工作目录。输入:

    cd ~/project
    

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

  2. -w 标志告诉 Tshark 将捕获的数据包存储到哪里。基本命令结构为:

    tshark -w [文件名] [其他选项]
    

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

  3. 现在,让我们将迄今为止学到的所有选项组合成一个实际示例。此命令将:

    • 捕获精确的 500 个数据包 (-c 500)
    • 将每个数据包限制为 128 字节 (-s 128)
    • eth1 接口上监听 (-i eth1)
    • 将所有内容保存到名为 limited.pcap 的文件中 (-w limited.pcap)
    tshark -c 500 -s 128 -i eth1 -w limited.pcap
    
  4. 当 Tshark 正在运行时,请打开另一个终端窗口以生成一些测试流量。这些命令将创建典型的网络活动:

    ping -c 3 google.com
    curl http://example.com
    

    此模拟流量将由正在运行的 Tshark 会话捕获。

  5. 捕获 500 个数据包后(或按 Ctrl+C 提前停止),验证你的捕获文件存在并检查其大小:

    ls -lh limited.pcap
    

    输出显示文件详细信息,包括大小和创建时间,类似于:

    -rw-r--r-- 1 root root 56K Aug 10 XX:XX limited.pcap
    
  6. 稍后查看捕获的数据包,你有两种主要选项:

    • 使用 tshark (命令行):

      tshark -r limited.pcap
      

      这将以捕获时的精确方式显示数据包内容,允许你方便地分析流量。

    • 使用 wireshark (图形界面):

      注意:你需要在桌面界面运行此命令。

      wireshark limited.pcap &
      

      这将在 Wireshark 图形用户界面中打开 limited.pcap 文件,提供一种更直观和交互的方式来分析捕获的数据包。& 符号表示在后台运行命令,这样你就可以继续使用你的终端。

总结

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

练习演示了如何将这些技术与接口选择 (-i eth1) 结合起来,进行有针对性的流量分析。通过像 tshark -c 500 -s 128 -i eth1 -w limited.pcap 这样的命令,你获得了实际操作经验,学习了如何同时应用多个捕获限制,并将结果保存下来,以便使用 tsharkwireshark 进行离线分析。