介绍
在网络安全领域,理解和分析网络流量是一项至关重要的技能。本教程将指导你使用 Wireshark(一个强大的网络协议分析器)来捕获、过滤和分析 IPv6 流量。
IPv6(Internet Protocol version 6,互联网协议第 6 版)代表了下一代互联网协议,旨在最终取代广泛使用的 IPv4。随着网络持续发展,安全专业人员必须精通这两种协议的监控。完成本实验后,你将掌握增强网络安全监控能力的实用知识。
在网络安全领域,理解和分析网络流量是一项至关重要的技能。本教程将指导你使用 Wireshark(一个强大的网络协议分析器)来捕获、过滤和分析 IPv6 流量。
IPv6(Internet Protocol version 6,互联网协议第 6 版)代表了下一代互联网协议,旨在最终取代广泛使用的 IPv4。随着网络持续发展,安全专业人员必须精通这两种协议的监控。完成本实验后,你将掌握增强网络安全监控能力的实用知识。
在捕获和分析 IPv6 流量之前,我们需要在 Ubuntu 系统上安装 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 现在已准备好捕获和分析网络流量。在下一步中,我们将生成一些 IPv6 流量,以便我们可以捕获和分析。
在分析 IPv6 流量之前,我们需要在我们的网络上生成一些 IPv6 数据包。在此步骤中,我们将使用各种工具来生成 IPv6 流量。
IPv6 地址是 128 位地址,通常用十六进制表示法书写,用冒号分隔每组 16 位,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。IPv6 比 IPv4 具有几个优势:
首先,让我们通过检查网络接口来检查我们的系统是否具有 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 流量,我们可以使用 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 地址:
nc -6 -l 8888
这会启动一个服务器,监听端口 8888 上的 IPv6 连接。
在第二个终端中,连接到此服务器:
nc -6 ::1 8888
现在你可以在任一终端中键入消息,它们将通过 IPv6 发送到另一个终端。这会创建 TCP 流量,我们可以在 Wireshark 中捕获该流量。
在每个终端中键入几条消息以生成流量,然后在两个终端中按 Ctrl+C 以关闭连接。
现在我们已经生成了一些 IPv6 流量,我们已准备好在下一步中使用 Wireshark 捕获和分析它。
现在我们已经生成了一些 IPv6 流量,我们可以使用 Wireshark 捕获并检查它。在此步骤中,我们将学习如何设置 Wireshark 以捕获 IPv6 数据包。
首先,启动 Wireshark(如果它尚未运行):
wireshark &
在 Wireshark 主窗口中,你将看到可用网络接口的列表。我们希望在处理网络流量的接口上进行捕获:
lo(回环)的接口或者,你可以选择该接口,然后单击工具栏中的“开始捕获数据包”按钮(蓝色鲨鱼鳍图标)。
Wireshark 现在将开始捕获回环接口上的所有数据包,包括任何 IPv6 流量。
当 Wireshark 正在捕获时,让我们生成一些 IPv6 流量。打开一个新的终端并运行:
ping6 -c 10 ::1
这向回环地址发送 10 个 ICMPv6 回显请求,这些请求将在 Wireshark 中可见。
你应该看到数据包在 Wireshark 窗口中出现,因为它们被捕获了。每一行代表一个单独的数据包。
在生成一些流量后,让我们停止捕获:
Wireshark 界面由三个主要面板组成:
让我们在数据包列表面板中查找并选择一个 IPv6 数据包。查找“协议”列中列出“IPv6”的数据包。
当你选择一个 IPv6 数据包时,数据包详细信息面板将显示 IPv6 标头的结构,包括:
你可以通过单击其旁边的箭头来展开每个字段,以查看更多详细信息。
让我们保存我们的捕获以供以后分析:
/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 显示过滤器允许你仅显示符合特定条件的数据包。过滤器语法丰富而强大,可以精确控制显示哪些数据包。
显示过滤器在 Wireshark 窗口顶部的过滤器栏中输入。当你键入时,背景颜色会提供反馈:
让我们从打开我们保存的捕获文件开始:
/home/labex/projectipv6_capture.pcapng现在,让我们应用一些基本的 IPv6 过滤器:
要仅显示 IPv6 数据包,请在过滤器栏中输入以下内容:
ipv6
按 Enter 或单击“应用”以应用过滤器。将仅显示使用 IPv6 协议的数据包。
要按 IPv6 源地址过滤数据包:
ipv6.src == ::1
这仅显示源自回环地址的数据包。
要按 IPv6 目标地址过滤数据包:
ipv6.dst == ::1
这仅显示发往回环地址的数据包。
你可以使用逻辑运算符组合过滤器:
ipv6.src == ::1 and ipv6.dst == ::1
这仅显示源和目标都是回环地址的数据包。
IPv6 使用“下一个标头”字段来指示 IPv6 数据包中封装的协议。常见的下一个标头值包括:
要过滤 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现在,你可以根据需要快速应用此过滤器。
Wireshark 提供了一种方便的方式,可以从数据包详细信息中创建过滤器:
这使得无需记住字段名称即可轻松构建复杂的过滤器。
尝试以下操作:
过滤器栏现在将显示该特定下一个标头值的过滤器。
在下一步中,我们将超越基本过滤,进入更高级的 IPv6 分析技术。
现在你已经熟悉了基本的 IPv6 过滤,让我们在 Wireshark 中探索更高级的分析技术,以更深入地了解 IPv6 流量模式。
ICMPv6 在 IPv6 网络中起着至关重要的作用,尤其是在邻居发现协议(NDP,Neighbor Discovery Protocol)中,它取代了 IPv4 中的 ARP。让我们分析 NDP 流量:
使用我们的捕获文件打开 Wireshark
应用以下过滤器以查看所有 NDP 消息:
icmpv6.type >= 133 and icmpv6.type <= 137
此过滤器包括:
如果你的捕获中没有看到任何 NDP 消息,让我们生成一些:
## 在一个新的终端中,在适当的接口上启动一个新的 Wireshark 捕获
wireshark -i eth0 &
## 然后运行此命令以触发邻居请求
ping6 -c 2 ff02::1
这会 ping IPv6 所有节点多播地址,这应该会触发邻居发现消息。
IPv6 使用扩展标头来包含可选信息。要过滤具有扩展标头的数据包:
ipv6.nxt != 6 and ipv6.nxt != 17 and ipv6.nxt != 58
这显示了没有 TCP、UDP 或 ICMPv6 作为其下一个标头的 IPv6 数据包,表明它们可能使用扩展标头。
Wireshark 提供了几个统计工具,这些工具对于分析 IPv6 流量很有价值。
要查看 IPv6 会话:
这将显示捕获中的所有 IPv6 会话,显示源和目标地址、数据包计数和字节计数。
你可以通过单击列标题按任何列对会话进行排序。
要查看捕获中协议的分布:
这将显示协议的分层视图,其中包含每个协议的数据包和字节的百分比。你可以看到你的流量中有多少是 IPv6,以及在其中,有多少是 ICMPv6、TCP、UDP 等。
要分析 IPv6 端点:
这将显示捕获中看到的所有 IPv6 地址,以及数据包和字节计数。它有助于识别最活跃的 IPv6 主机。
对于数据包交换的直观表示:
这将创建主机之间数据包流的直观表示,从而更容易理解通信模式。
要导出 IPv6 数据以在其他工具中进行分析:
让我们导出一些基本的 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 流量模式、识别潜在问题并更深入地了解 IPv6 网络行为。
在这个实验中,你学习了如何使用 Wireshark(一个强大的网络分析工具)有效地捕获、过滤和分析 IPv6 流量。
你首先在你的 Ubuntu 系统上安装和配置了 Wireshark,然后生成了用于分析的 IPv6 流量。你学习了如何捕获此流量并将其保存以供详细检查。
接下来,你掌握了基本的 IPv6 过滤技术,使你能够专注于 IPv6 通信的特定方面。你还探索了高级分析方法,包括:
这些技能对于现代网络安全专业人员至关重要,因为 IPv6 的采用持续增长。有效监控、分析和排除 IPv6 流量故障的能力有助于识别潜在的安全威胁,优化网络性能,并确保正确的网络功能。
通过在你的安全实践中应用这些技术,你可以增强你组织的网络可见性,并提高你检测和响应涉及 IPv6 流量的安全事件的能力。