介绍
在网络安全领域,理解和分析网络流量是一项至关重要的技能。本教程将指导你使用 Wireshark(一个强大的网络协议分析器)来捕获、过滤和分析 IPv6 流量。
IPv6(Internet Protocol version 6,互联网协议第 6 版)代表了下一代互联网协议,旨在最终取代广泛使用的 IPv4。随着网络持续发展,安全专业人员必须精通这两种协议的监控。完成本实验后,你将掌握增强网络安全监控能力的实用知识。
安装和设置 Wireshark
在捕获和分析 IPv6 流量之前,我们需要在 Ubuntu 系统上安装 Wireshark 并执行一些基本配置。
安装 Wireshark
让我们首先更新软件包列表并安装 Wireshark:
sudo apt update
sudo apt install -y wireshark
在安装过程中,你可能会被提示是否允许非超级用户捕获数据包。对于本实验,请选择“Yes”,允许非 root 用户捕获数据包。
安装完成后,我们需要将你的用户添加到 wireshark 组,以便在没有 root 权限的情况下捕获数据包:
sudo usermod -a -G wireshark labex
为了使更改生效,让我们注销并重新登录:
newgrp wireshark
验证安装
为了验证 Wireshark 是否已成功安装,让我们检查其版本:
wireshark --version
你应该看到类似如下的输出:
Wireshark 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)
启动 Wireshark
现在让我们从终端启动 Wireshark:
wireshark &
& 符号在后台运行应用程序,允许你继续使用终端。
你应该看到 Wireshark 应用程序打开,并显示可用网络接口的列表。界面可能看起来与此类似:

Wireshark 现在已准备好捕获和分析网络流量。在下一步中,我们将生成一些 IPv6 流量,以便我们可以捕获和分析。
生成用于捕获的 IPv6 流量
在分析 IPv6 流量之前,我们需要在我们的网络上生成一些 IPv6 数据包。在此步骤中,我们将使用各种工具来生成 IPv6 流量。
了解 IPv6 基础知识
IPv6 地址是 128 位地址,通常用十六进制表示法书写,用冒号分隔每组 16 位,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。IPv6 比 IPv4 具有几个优势:
- 更大的地址空间(128 位 vs 32 位)
- 简化的标头格式,以提高路由效率
- 通过 IPsec 内置安全性
- 改进了对服务质量(QoS)的支持
检查 IPv6 连接
首先,让我们通过检查网络接口来检查我们的系统是否具有 IPv6 连接:
ip -6 addr show
此命令显示分配给系统上网络接口的所有 IPv6 地址。你应该看到类似如下的输出:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 fe80::215:5dff:fe00:1/64 scope link
valid_lft forever preferred_lft forever
fe80:: 地址是链路本地地址,它们在启用 IPv6 的接口上自动配置。
生成 IPv6 流量
让我们生成一些 IPv6 流量,我们可以使用 Wireshark 捕获这些流量。我们将使用 ping6 命令向 IPv6 地址发送 ICMPv6 回显请求。
首先,让我们 ping IPv6 回环地址:
ping6 -c 4 ::1
这向回环地址 (::1) 发送 4 个 ICMPv6 回显请求。你应该看到类似如下的输出:
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.073 ms
64 bytes from ::1: icmp_seq=4 ttl=64 time=0.074 ms
--- ::1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3072ms
rtt min/avg/max/mdev = 0.035/0.064/0.074/0.017 ms
接下来,让我们 ping 一个众所周知的 IPv6 地址。Google 的 DNS 服务器支持 IPv6,可用于测试:
ping6 -c 4 2001:4860:4860::8888
如果你的系统具有公共 IPv6 连接,你应该看到成功的 ping 响应。如果没有,你可能会看到错误,指示没有到主机的路由。
使用 netcat 进行 IPv6 流量
我们也可以使用 netcat 生成 IPv6 流量。让我们打开两个终端窗口。
在第一个终端中,启动一个 netcat 服务器,监听 IPv6 地址:
nc -6 -l 8888
这会启动一个服务器,监听端口 8888 上的 IPv6 连接。
在第二个终端中,连接到此服务器:
nc -6 ::1 8888
现在你可以在任一终端中键入消息,它们将通过 IPv6 发送到另一个终端。这会创建 TCP 流量,我们可以在 Wireshark 中捕获该流量。
在每个终端中键入几条消息以生成流量,然后在两个终端中按 Ctrl+C 以关闭连接。
现在我们已经生成了一些 IPv6 流量,我们已准备好在下一步中使用 Wireshark 捕获和分析它。
使用 Wireshark 捕获 IPv6 流量
现在我们已经生成了一些 IPv6 流量,我们可以使用 Wireshark 捕获并检查它。在此步骤中,我们将学习如何设置 Wireshark 以捕获 IPv6 数据包。
开始捕获
首先,启动 Wireshark(如果它尚未运行):
wireshark &
在 Wireshark 主窗口中,你将看到可用网络接口的列表。我们希望在处理网络流量的接口上进行捕获:
- 在列表中找到名为
lo(回环)的接口 - 双击此接口以开始在其上捕获数据包
或者,你可以选择该接口,然后单击工具栏中的“开始捕获数据包”按钮(蓝色鲨鱼鳍图标)。
Wireshark 现在将开始捕获回环接口上的所有数据包,包括任何 IPv6 流量。
在捕获期间生成流量
当 Wireshark 正在捕获时,让我们生成一些 IPv6 流量。打开一个新的终端并运行:
ping6 -c 10 ::1
这向回环地址发送 10 个 ICMPv6 回显请求,这些请求将在 Wireshark 中可见。
你应该看到数据包在 Wireshark 窗口中出现,因为它们被捕获了。每一行代表一个单独的数据包。
停止捕获
在生成一些流量后,让我们停止捕获:
- 单击工具栏中的“停止捕获数据包”按钮(红色方块图标)
- Wireshark 现在将仅显示在会话期间捕获的数据包
了解 Wireshark 界面
Wireshark 界面由三个主要面板组成:
- 数据包列表面板(顶部):按顺序显示所有捕获的数据包
- 数据包详细信息面板(中间):以分层视图显示所选数据包的详细信息
- 数据包字节面板(底部):以十六进制和 ASCII 格式显示所选数据包的原始字节
让我们在数据包列表面板中查找并选择一个 IPv6 数据包。查找“协议”列中列出“IPv6”的数据包。
当你选择一个 IPv6 数据包时,数据包详细信息面板将显示 IPv6 标头的结构,包括:
- 版本(对于 IPv6 应为 6)
- 流量类别
- 流标签
- 有效载荷长度
- 下一个标头
- 跳数限制
- 源地址
- 目标地址
你可以通过单击其旁边的箭头来展开每个字段,以查看更多详细信息。
保存捕获
让我们保存我们的捕获以供以后分析:
- 单击“文件”菜单
- 选择“另存为”
- 导航到
/home/labex/project目录 - 输入文件名,例如
ipv6_capture.pcapng - 单击“保存”
捕获的数据包现在保存在一个文件中,该文件可以稍后打开以进行进一步分析。
ls -l /home/labex/project/ipv6_capture.pcapng
你应该看到输出,确认文件已创建:
-rw-r--r-- 1 labex labex 12345 Sep 10 12:34 /home/labex/project/ipv6_capture.pcapng
在下一步中,我们将学习如何过滤和分析我们捕获的 IPv6 流量。
Wireshark 中的基本 IPv6 过滤
Wireshark 可以捕获大量数据包,因此过滤数据以专注于特定流量至关重要。在此步骤中,我们将学习如何使用显示过滤器来隔离 IPv6 流量。
了解 Wireshark 显示过滤器
Wireshark 显示过滤器允许你仅显示符合特定条件的数据包。过滤器语法丰富而强大,可以精确控制显示哪些数据包。
显示过滤器在 Wireshark 窗口顶部的过滤器栏中输入。当你键入时,背景颜色会提供反馈:
- 绿色:有效的过滤器语法
- 红色:无效的过滤器语法
- 黄色:有效但可能存在问题的过滤器
基本 IPv6 过滤器
让我们从打开我们保存的捕获文件开始:
- 单击“文件”菜单
- 选择“打开”
- 导航到
/home/labex/project - 选择
ipv6_capture.pcapng - 单击“打开”
现在,让我们应用一些基本的 IPv6 过滤器:
过滤所有 IPv6 流量
要仅显示 IPv6 数据包,请在过滤器栏中输入以下内容:
ipv6
按 Enter 或单击“应用”以应用过滤器。将仅显示使用 IPv6 协议的数据包。
按 IPv6 地址过滤
要按 IPv6 源地址过滤数据包:
ipv6.src == ::1
这仅显示源自回环地址的数据包。
要按 IPv6 目标地址过滤数据包:
ipv6.dst == ::1
这仅显示发往回环地址的数据包。
你可以使用逻辑运算符组合过滤器:
ipv6.src == ::1 and ipv6.dst == ::1
这仅显示源和目标都是回环地址的数据包。
按 IPv6 协议过滤
IPv6 使用“下一个标头”字段来指示 IPv6 数据包中封装的协议。常见的下一个标头值包括:
- 6:TCP
- 17:UDP
- 58:ICMPv6
要过滤 ICMPv6 数据包:
ipv6.nxt == 58
或者你可以简单地使用:
icmpv6
要过滤 IPv6 TCP 数据包:
ipv6.nxt == 6
或者等效地:
ipv6 and tcp
组合过滤器
Wireshark 过滤器可以使用逻辑运算符组合:
and或&&:两个条件都必须为真or或||:至少一个条件必须为真not或!:否定一个条件
例如,要查找所有 IPv6 数据包,除了 ICMPv6:
ipv6 and not icmpv6
要查找 ICMPv6 回显请求或回显回复的数据包:
icmpv6.type == 128 or icmpv6.type == 129
保存过滤器
如果你经常使用某些过滤器,你可以保存它们以供以后使用:
- 在过滤器栏中输入你的过滤器
- 单击“保存此过滤器”按钮(右侧的加号)
- 输入过滤器的名称
- 单击“确定”
要应用已保存的过滤器,请单击“过滤器”按钮(漏斗图标),然后从下拉菜单中选择你已保存的过滤器。
让我们为 ICMPv6 数据包保存一个过滤器:
- 在过滤器栏中输入
icmpv6 - 单击加号
- 将其命名为“ICMPv6 流量”
- 单击“确定”
现在,你可以根据需要快速应用此过滤器。
使用数据包详细信息中的过滤器表达式
Wireshark 提供了一种方便的方式,可以从数据包详细信息中创建过滤器:
- 在数据包列表中选择一个数据包
- 在数据包详细信息面板中,右键单击一个字段
- 选择“应用为过滤器”,然后选择:
- “已选择”以过滤该确切值
- “未选择”以排除该值
- “和已选择”以将条件添加到当前过滤器
- “或已选择”以添加备用条件
这使得无需记住字段名称即可轻松构建复杂的过滤器。
尝试以下操作:
- 选择一个 IPv6 数据包
- 展开数据包详细信息中的“Internet Protocol Version 6”部分
- 右键单击“下一个标头”字段
- 选择“应用为过滤器” > “已选择”
过滤器栏现在将显示该特定下一个标头值的过滤器。
在下一步中,我们将超越基本过滤,进入更高级的 IPv6 分析技术。
Wireshark 中的高级 IPv6 分析
现在你已经熟悉了基本的 IPv6 过滤,让我们在 Wireshark 中探索更高级的分析技术,以更深入地了解 IPv6 流量模式。
IPv6 协议分析
分析 ICMPv6 以进行邻居发现
ICMPv6 在 IPv6 网络中起着至关重要的作用,尤其是在邻居发现协议(NDP,Neighbor Discovery Protocol)中,它取代了 IPv4 中的 ARP。让我们分析 NDP 流量:
使用我们的捕获文件打开 Wireshark
应用以下过滤器以查看所有 NDP 消息:
icmpv6.type >= 133 and icmpv6.type <= 137此过滤器包括:
- 类型 133:路由器请求(Router Solicitation)
- 类型 134:路由器通告(Router Advertisement)
- 类型 135:邻居请求(Neighbor Solicitation)
- 类型 136:邻居通告(Neighbor Advertisement)
- 类型 137:重定向消息(Redirect Message)
如果你的捕获中没有看到任何 NDP 消息,让我们生成一些:
## 在一个新的终端中,在适当的接口上启动一个新的 Wireshark 捕获 wireshark -i eth0 & ## 然后运行此命令以触发邻居请求 ping6 -c 2 ff02::1这会 ping IPv6 所有节点多播地址,这应该会触发邻居发现消息。
分析 IPv6 扩展标头
IPv6 使用扩展标头来包含可选信息。要过滤具有扩展标头的数据包:
ipv6.nxt != 6 and ipv6.nxt != 17 and ipv6.nxt != 58
这显示了没有 TCP、UDP 或 ICMPv6 作为其下一个标头的 IPv6 数据包,表明它们可能使用扩展标头。
使用 Wireshark 统计工具
Wireshark 提供了几个统计工具,这些工具对于分析 IPv6 流量很有价值。
IPv6 会话统计
要查看 IPv6 会话:
- 单击“统计”菜单
- 选择“会话”
- 单击“IPv6”选项卡
这将显示捕获中的所有 IPv6 会话,显示源和目标地址、数据包计数和字节计数。
你可以通过单击列标题按任何列对会话进行排序。
IPv6 协议层次结构
要查看捕获中协议的分布:
- 单击“统计”菜单
- 选择“协议层次结构”
这将显示协议的分层视图,其中包含每个协议的数据包和字节的百分比。你可以看到你的流量中有多少是 IPv6,以及在其中,有多少是 ICMPv6、TCP、UDP 等。
IPv6 端点统计
要分析 IPv6 端点:
- 单击“统计”菜单
- 选择“端点”
- 单击“IPv6”选项卡
这将显示捕获中看到的所有 IPv6 地址,以及数据包和字节计数。它有助于识别最活跃的 IPv6 主机。
流量图分析
对于数据包交换的直观表示:
- 单击“统计”菜单
- 选择“流量图”
- 在选项中,确保为流量类型选择了“IPv6 地址”
- 单击“确定”
这将创建主机之间数据包流的直观表示,从而更容易理解通信模式。
导出数据以进行进一步分析
要导出 IPv6 数据以在其他工具中进行分析:
- 单击“文件”菜单
- 选择“导出数据包解析”
- 选择“作为 CSV”(或根据你的需要选择其他格式)
- 选择要导出的字段
- 单击“保存”
让我们导出一些基本的 IPv6 信息:
## 从命令行创建一个简单的导出
tshark -r /home/labex/project/ipv6_capture.pcapng -T fields -e frame.number -e ipv6.src -e ipv6.dst -e ipv6.nxt -E header=y -E separator=, > /home/labex/project/ipv6_analysis.csv
这将创建一个 CSV 文件,其中包含帧号、源和目标 IPv6 地址以及下一个标头值。
要查看导出的文件:
cat /home/labex/project/ipv6_analysis.csv
你应该看到类似于以下内容的输出:
frame.number,ipv6.src,ipv6.dst,ipv6.nxt
1,::1,::1,58
2,::1,::1,58
...
创建自定义 IPv6 配置文件
对于频繁的 IPv6 分析,创建自定义配置文件很有帮助:
- 单击“编辑”菜单
- 选择“配置配置文件”
- 单击“+”按钮以添加新的配置文件
- 将其命名为“IPv6 分析”
- 单击“确定”
现在,你可以使用你喜欢的 IPv6 过滤器、列布局和颜色自定义此配置文件。每当你需要分析 IPv6 流量时,你都可以切换到此配置文件。
要为 IPv6 分析添加一个有用的列:
- 右键单击任何列标题
- 选择“列首选项”
- 单击“+”以添加新列
- 对于“标题”,输入“下一个标头”
- 对于“类型”,选择“自定义”
- 对于“字段”,输入“ipv6.nxt”
- 单击“确定”
这将添加一个列,显示 IPv6 下一个标头值,从而更容易识别每个 IPv6 数据包中封装的协议。
通过这些高级分析技术,你现在拥有一个全面的工具包,用于调查 IPv6 流量模式、识别潜在问题并更深入地了解 IPv6 网络行为。
总结
在这个实验中,你学习了如何使用 Wireshark(一个强大的网络分析工具)有效地捕获、过滤和分析 IPv6 流量。
你首先在你的 Ubuntu 系统上安装和配置了 Wireshark,然后生成了用于分析的 IPv6 流量。你学习了如何捕获此流量并将其保存以供详细检查。
接下来,你掌握了基本的 IPv6 过滤技术,使你能够专注于 IPv6 通信的特定方面。你还探索了高级分析方法,包括:
- 分析 ICMPv6 流量以进行邻居发现协议
- 检查 IPv6 扩展标头
- 使用 Wireshark 的统计工具来深入了解会话和端点
- 创建可视化流量图以了解通信模式
- 导出数据以进行进一步分析
- 使用为 IPv6 分析优化的配置文件自定义 Wireshark
这些技能对于现代网络安全专业人员至关重要,因为 IPv6 的采用持续增长。有效监控、分析和排除 IPv6 流量故障的能力有助于识别潜在的安全威胁,优化网络性能,并确保正确的网络功能。
通过在你的安全实践中应用这些技术,你可以增强你组织的网络可见性,并提高你检测和响应涉及 IPv6 流量的安全事件的能力。


