使用 Tshark 分析 IPv6 流量

WiresharkBeginner
立即练习

介绍

在这个实验中,你将学习使用 Wireshark 的命令行工具 Tshark 来分析 IPv6 网络流量。你将练习一些基本技术,例如使用 IPv6 过滤器捕获数据包,以及检查特定数据包的详细信息,包括跳数限制和流量类别。

通过实际操作练习,你将获得捕获实时 IPv6 流量的经验,并学会应用显示过滤器来分析已保存的捕获文件。本实验涵盖了从基本命令到利用 Tshark 强大功能进行高级分析的方法。

使用 -f "ip6" 捕获 IPv6 流量

在这一步中,你将学习如何使用 Wireshark 的捕获过滤器选项 -f "ip6" 来捕获 IPv6 网络流量。此过滤器可确保在网络嗅探过程中仅捕获 IPv6 数据包。IPv6 是互联网协议的最新版本,旨在以其更大的地址空间取代 IPv4。在分析网络流量时,专注于像 IPv6 这样的特定协议通常有助于减少捕获数据中的干扰信息。

  1. 首先,通过点击 Xfce 桌面的终端图标或使用快捷键 Ctrl+Alt+T,在你的 LabEx 虚拟机中打开一个终端。你将在该终端中执行本实验的所有命令。

  2. 导航到用于存储捕获文件的默认工作目录:

cd ~/project
  1. 使用 IPv6 捕获过滤器启动 Wireshark。此命令指示 Wireshark 仅捕获使用 IPv6 协议的数据包:
sudo wireshark -k -f "ip6" -i any

让我们来拆解这个命令:

  • -k 使 Wireshark 启动时立即开始捕获
  • -f "ip6" 应用 IPv6 捕获过滤器(仅捕获 IPv6 数据包)
  • -i any 从所有可用的网络接口进行捕获
  1. 你应该会看到 Wireshark 的图形用户界面 (GUI) 打开,并且仅捕获 IPv6 数据包。如果你的网络中没有 IPv6 流量(在许多环境中这很常见),你可以通过向一个 IPv6 地址发送 ping 请求来生成一些测试流量:
ping6 -c 4 ipv6.google.com

ping6 命令会发送 ICMPv6 数据包以测试 IPv6 连接性。-c 4 选项表示在停止之前恰好发送 4 个数据包。

  1. 在 Wireshark 中观察捕获的数据包。所有显示的数据包都应该是 IPv6 数据包。数据包列表将显示基本信息,例如:

    • 源 IPv6 地址(数据包的来源)
    • 目的 IPv6 地址(数据包的去向)
    • 协议(这是哪种类型的 IPv6 流量)
    • 数据包长度和其他基本细节
  2. 当你完成分析后,若要停止捕获,点击 Wireshark 工具栏中的红色方形“停止”按钮。这将冻结数据包显示,以便你在没有新数据包干扰的情况下检查捕获的流量。

使用 -Y "ipv6" 过滤 IPv6 数据包

在这一步中,你将学习如何使用 Wireshark 的显示过滤器选项 -Y "ipv6" 来应用显示过滤器,以分析已捕获的 IPv6 流量。此过滤器会从现有的捕获文件中仅显示 IPv6 数据包,帮助你专注于 IPv6 流量,同时忽略其他协议的数据包。

  1. 首先,确保你有上一步的捕获文件。如果没有,我们将先捕获一些 IPv6 流量。以下命令将启动 Wireshark,仅在所有接口上捕获 IPv6 数据包:
cd ~/project
sudo wireshark -k -f "ip6" -i any -w ipv6_capture.pcapng

(让它运行 10 - 15 秒以捕获足够的数据包,然后通过点击 Wireshark 中的停止按钮停止捕获)

  1. 现在,我们将使用 Wireshark 的显示过滤器功能来过滤已捕获的 IPv6 数据包。-Y 选项允许我们指定从捕获文件中显示哪些内容:
sudo wireshark -r ipv6_capture.pcapng -Y "ipv6"

这个命令主要做两件事:

  • -r 告诉 Wireshark 从指定的捕获文件(ipv6_capture.pcapng)中读取数据
  • -Y 应用显示过滤器 "ipv6",该过滤器仅显示 IPv6 数据包
  1. 当 Wireshark 打开时,你会看到界面中仅显示 IPv6 数据包。注意顶部的显示过滤器栏显示 "ipv6" 作为活动过滤器。这意味着所有非 IPv6 数据包暂时被隐藏。

  2. 让我们尝试一些更具体的 IPv6 过滤器,以了解显示过滤器的工作原理。这些示例展示了如何缩小流量范围:

## 仅过滤 IPv6 ICMP 数据包(如 ping6 流量)
sudo wireshark -r ipv6_capture.pcapng -Y "icmpv6"

## 过滤涉及特定地址的 IPv6 流量(这里以本地主机 ::1 为例)
sudo wireshark -r ipv6_capture.pcapng -Y "ipv6.addr == ::1"
  1. 当你尝试不同的过滤器时,观察数据包列表如何立即更新。这种实时过滤功能有助于你在大型捕获文件中快速找到特定的流量模式。显示过滤器的语法功能强大,你可以组合条件来创建非常具体的过滤器。

使用 -z ip6_hop,tree 检查跳数限制

在这一步中,你将学习如何使用 Wireshark 的统计功能来分析 IPv6 跳数限制(Hop Limit)值。IPv6 中的跳数限制字段类似于 IPv4 中的 TTL(Time To Live,生存时间)字段,它指定了一个数据包在被丢弃之前可以经过的路由器数量(跳数)。这是防止数据包在网络中无限循环的关键机制。

  1. 首先,导航到用于处理捕获文件的项目目录。这样可以确保我们的所有文件都组织在一个地方:
cd ~/project
  1. 如果你还没有创建捕获文件,现在我们将创建一个专门捕获 IPv6 流量的文件。-f "ip6" 过滤器告诉 Wireshark 仅捕获 IPv6 数据包,而 -i any 表示它将监听所有可用的接口:
sudo wireshark -k -f "ip6" -i any -w ipv6_hoplimit.pcapng

(让捕获运行 10 - 15 秒以收集足够的数据包,然后通过点击 Wireshark 中的停止按钮停止捕获)

  1. 现在,我们将使用 Tshark(Wireshark 的命令行版本)来分析跳数限制值。-z ip6_hop,tree 选项会生成一个统计树,显示捕获的数据包中跳数限制值的分布情况:
sudo tshark -r ipv6_hoplimit.pcapng -z ip6_hop,tree
  1. 输出将显示在数据包中找到的每个跳数限制值的三个重要信息:
  • 实际的跳数限制值(常见值为 64、128 或 255)
  • 具有该特定跳数限制的数据包数量
  • 该值占总数据包的百分比
  1. 以下是典型输出的样子。实际数字可能会根据你的网络流量而有所不同:
===================================================================
IPv6 Hop Limit Tree
===================================================================
Hop Limit    Count     %
      64       12    60%
     128        6    30%
     255        2    10%
===================================================================
  1. 若要查看包含 IPv6 地址的更详细信息,我们可以使用此命令。-q 选项通过抑制数据包计数信息使输出更简洁:
sudo tshark -r ipv6_hoplimit.pcapng -z ip6_hop,ipv6 -q

使用 -V 显示详细信息

在这一步中,我们将探索如何使用 Wireshark 的详细模式深入检查 IPv6 数据包。当你需要逐层查看构成网络数据包的所有技术细节时,-V 标志特别有用。这有助于理解不同协议在 IPv6 通信中是如何相互作用的。

  1. 首先,让我们进入正确的工作目录。这样可以确保我们能够轻松访问捕获文件:
cd ~/project
  1. 如果你还没有捕获文件,我们将创建一个专门用于 IPv6 流量的新文件。以下命令将启动实时捕获:
sudo wireshark -k -f "ip6" -i any -w ipv6_verbose.pcapng

(让捕获运行大约 10 - 15 秒以收集足够的数据,然后手动停止)

  1. 现在,我们将使用 tshark 详细检查捕获的数据包。详细模式(-V)可以让我们全面剖析数据包:
sudo tshark -r ipv6_verbose.pcapng -V -c 5

分解这个命令:

  • -r 指定要读取的输入文件
  • -V 启用详细输出,显示所有协议层
  • -c 5 将输出限制为 5 个数据包,以便于初步分析
  1. 输出将显示几个重要部分:
  • 帧信息(显示数据包的捕获时间和方式)
  • 以太网层(MAC 地址和链路层详细信息)
  • IPv6 详细信息(包括版本、流量类别和流标签)
  • 传输层协议(是 TCP、UDP 还是 ICMPv6)
  • 可用的实际有效负载数据
  1. 在处理特定协议时,我们可以将过滤器与详细输出结合使用。这个示例仅关注 ICMPv6 数据包:
sudo tshark -r ipv6_verbose.pcapng -Y "icmpv6" -V -c 3
  1. 为了便于文档记录或后续分析,我们可以将详细输出保存到文本文件中。这样就可以永久记录我们的检查结果:
sudo tshark -r ipv6_verbose.pcapng -V > ipv6_packet_details.txt

总结

在本次实验中,你学习了使用 Wireshark 的命令行工具 Tshark 分析 IPv6 流量的关键技术。你练习了使用 -f "ip6" 过滤器捕获 IPv6 数据包,并使用 -i any 监控接口,同时通过 ping6 测试流量验证结果。

此外,你还通过应用 -Y "ipv6" 等显示过滤器、使用 -z ip6_hop,tree 检查跳数限制,以及使用 -V 详细模式选项查看详细的数据包结构,探索了高级 IPv6 分析方法。这些技能使你能够在网络环境中高效地检查和排查 IPv6 流量问题。