介绍
在本次实验中,你将学习使用 Wireshark 的命令行工具 tshark 捕获实时网络流量。你将练习使用 -D 选项识别网络接口,使用 -i 选项选择像 eth1 这样的接口,并使用默认设置捕获数据包。
本实验将指导你使用 -w 选项将捕获的内容保存到 pcap 文件中,以便后续分析。这些基本技能对于实际场景中的网络故障排除和流量监控至关重要。
使用 -D 列出接口
在这一步中,你将学习如何使用 Wireshark 的命令行工具 tshark 列出可用的网络接口。网络接口是计算机连接到网络的物理或虚拟节点。在捕获网络流量之前,识别系统上哪些接口处于活动状态至关重要,因为不同的接口处理不同类型的网络流量。
- 首先,在你的 LabEx 虚拟机环境中打开终端。终端是你通过命令与 Linux 系统进行交互的入口。默认工作目录是
~/project,这意味着除非你另行指定,否则你创建的任何文件都将保存在这里。
2. 要列出所有可用的网络接口,请运行以下命令:
tshark -D
- 该命令将显示输出,列出所有具备捕获功能的网络接口。典型的输出如下所示:
1. eth1
2. any
3. lo (Loopback)
4. nflog
5. nfqueue
6. docker0
-D标志是一个特定的命令选项,用于指示tshark显示可用的接口。每个接口都有不同的用途:eth1:这通常是你的主要有线网络接口,处理大多数外部网络通信。lo:回环接口处理你自己机器内部的网络流量。any:一个特殊的虚拟接口,可同时捕获所有可用接口的流量。
花点时间仔细查看接口列表。当我们开始捕获数据包时,你需要参考这些接口名称,因为你必须确切指定要监控哪个网络接口的流量。编号在后续命令中选择接口时会有所帮助。
使用 -i eth1 选择接口
在这一步中,你将学习如何使用 Wireshark 的 tshark 工具选择特定的网络接口进行数据包捕获。网络接口是计算机连接到网络的物理或虚拟节点。eth1 接口通常是 Linux 系统上的第一个以太网端口,负责处理大多数外部网络流量。
- 首先,确保你处于正确的工作目录,我们将在此存储捕获的文件:
cd ~/project
- 要开始在
eth1接口上专门捕获数据包,请执行以下命令:
sudo tshark -i eth1
让我们来了解这个命令各部分的作用:
sudo:为你提供访问网络接口所需的管理员权限。tshark:Wireshark 的命令行版本。-i eth1:告诉 tshark 监听eth1接口(如果你的系统使用不同的接口名称,请更改此参数)。
运行命令时,你会在终端中看到实时网络流量显示如下:
Capturing on 'eth1'
1 0.000000000 192.168.1.100 → 192.168.1.1 TCP 74 55942 → 80 [SYN] Seq=0 Win=64240 Len=0
2 0.000123456 192.168.1.1 → 192.168.1.100 TCP 74 80 → 55942 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
每行代表一个网络数据包,显示源/目的 IP、协议类型和其他技术细节。
要停止捕获数据包,请按
Ctrl+C。然后,终端将显示有关捕获流量的汇总统计信息。给初学者的重要提示:
eth1是大多数 Linux 系统上第一个以太网接口的默认名称。- 始终使用你在列出接口时找到的确切接口名称。
- 需要使用
sudo,因为捕获网络流量需要特殊权限。 - 输出显示了系统上正在进行的真实网络通信。
使用默认设置开始捕获
在这一步中,你将学习如何使用 Wireshark 的 tshark 工具,以默认设置开始进行基本的数据包捕获。这是在你之前识别接口并选择 eth1 的基础上进行的。我们将从捕获流经 eth1 接口的所有网络流量开始,eth1 通常是 Linux 系统上的第一个以太网接口。
- 首先,确保你处于正确的工作目录,我们将在此存储捕获的文件:
cd ~/project
- 要在
eth1接口上以默认设置开始捕获数据包,请运行以下命令:
sudo tshark -i eth1
sudo 命令是必需的,因为捕获网络流量需要 root 权限。-i eth1 标志告诉 tshark 专门监听 eth1 网络接口。
此命令的关键要点:
- 捕获通过
eth1的所有类型的数据包(如 TCP、UDP、ICMP 等)。 - 在捕获数据包时实时显示数据包摘要。
- 使用默认的捕获过滤器(捕获所有流量,不进行过滤)。
- 显示基本的数据包信息,包括:
- 数据包编号(从 1 开始的顺序计数)。
- 时间戳(显示每个数据包的捕获时间)。
- 源 IP 和目的 IP(显示流量的来源和去向)。
- 协议(识别网络协议的类型)。
- 关于数据包内容的基本信息。
- 捕获通过
你应该会看到类似以下的输出:
1 0.000000000 192.168.1.100 → 8.8.8.8 DNS 74 Standard query
2 0.000123456 8.8.8.8 → 192.168.1.100 DNS 90 Standard query response
每行代表一个网络数据包。箭头(→)表示源 IP 地址和目的 IP 地址之间的流量流向。
要暂时暂停输出(不停止捕获),请按
Ctrl+S。按Ctrl+Q可恢复。当你想查看特定数据包而又不想让新数据包滚动过快时,这很有用。记住关于此基本捕获的这些要点:
- 默认捕获仅显示数据包头部(而非完整的有效负载),以保持显示的可管理性。
- 捕获将持续进行,直到你使用
Ctrl+C停止。 - 目前还没有将数据包保存到磁盘(我们将在下一步中介绍)。
- 终端输出只是实时视图 —— 我们尚未永久存储这些信息。
使用 -w capture.pcap 停止并将数据包保存到文件
在这一步中,你将学习如何正确地停止数据包捕获会话,并将捕获的数据包保存到文件中以供后续分析。这完成了我们基本的 Wireshark/tshark 工作流程。当你需要在稍后的时间分析网络流量或与同事共享数据时,将数据包保存到文件至关重要。
- 首先,确保你在要保存捕获文件的正确工作目录中。
~/project目录通常用于实验(Lab)练习:
cd ~/project
- 要启动一个新的捕获会话,该会话将自动将数据包保存到文件,请运行以下命令。
-w标志告诉 tshark 将捕获的数据存储在哪里:
tshark -i eth1 -w capture.pcap
让我们分解一下这个命令的关键方面:
-w capture.pcap:指定输出文件名,并将数据包以标准 PCAP 格式保存- 该文件将在你当前的工作目录(
~/project)中创建 - 与实时监控不同,此命令在保存到文件时以静默方式运行,没有屏幕输出
关于权限的重要说明:
- 不要在此命令中使用
sudo(例如,sudo tshark -i eth1 -w capture.pcap) ~/project目录具有特定的权限,限制访问,包括 root 访问- 使用
sudo运行将导致“Permission denied(权限被拒绝)”错误 - 使用不带
sudo的命令以确保使用正确的权限正确创建文件
让捕获运行约 30 秒,以收集有意义的网络流量。此持续时间允许你捕获各种类型的数据包,而不会创建过大的文件。
要正常停止捕获并完成文件,请按
Ctrl+C。终端将显示有关你的捕获会话的摘要信息:
^CCapturing on 'eth1'
45 packets captured
- 通过列出目录内容来验证你的捕获文件是否已成功创建。
-lh标志以人类可读的格式显示文件大小:
ls -lh capture.pcap
- 你应该看到类似于以下的输出,表明该文件已使用正确的权限创建,并且包含捕获的数据:
-rw-r--r-- 1 labex labex 12K Aug 10 15:30 capture.pcap
- 关于使用 PCAP 文件的重要说明:
- PCAP 文件稍后可以使用 Wireshark GUI 或 tshark 命令进行分析
- 文件大小随捕获持续时间而增加——请注意磁盘空间
- 为单独的捕获会话使用唯一的文件名,以避免覆盖
.pcap扩展名是数据包捕获文件的标准
总结
在本次实验中,你学习了如何使用 Wireshark 的命令行工具 tshark 捕获实时网络流量。你练习了使用 -D 标志列出可用接口,并使用 -i 参数在特定接口上捕获数据包,同时观察了 IP 地址和协议等关键网络细节。
本次练习让你亲身体验了基本的 tshark 命令,包括正确使用 sudo 权限和基本的捕获控制。这些重要技能是进行更高级的网络分析和故障排除任务的基础。


