Wireshark
Wireshark 是一个自由开源的数据包分析器。它用于网络故障排除、分析、软件和通信协议开发以及教育。
安装
安装 wireshark-qt 软件包以使用 Wireshark GUI,或 wireshark-cli 软件包仅使用 tshark(1) CLI。
termshark 是一个备选的终端 UI。
捕获权限
不要以 root 身份运行 Wireshark;这不安全。Wireshark 实现了权限分离,这意味着 Wireshark GUI(或 tshark CLI)可以作为普通用户运行,而 dumpcap 捕获实用程序以 root 身份运行[1]。
wireshark-cli 安装脚本 在 /usr/bin/dumpcap
可执行文件上设置数据包捕获能力。
/usr/bin/dumpcap
只能由 root 用户和 wireshark
组的成员执行,因此要以普通用户身份使用 Wireshark,您必须将您的用户添加到 wireshark
用户组。
一些捕获技巧
通过应用捕获过滤器或显示过滤器,有很多不同的方法可以在 Wireshark 中准确捕获您正在寻找的内容。
过滤 TCP 数据包
如果您想查看当前所有的 TCP 数据包,请在过滤器栏中键入 tcp
,或在 CLI 中输入
$ tshark -f "tcp"
过滤 UDP 数据包
如果您想查看当前所有的 UDP 数据包,请在过滤器栏中键入 udp
,或在 CLI 中输入
$ tshark -f "udp"
过滤到特定 IP 地址的数据包
- 如果您想查看所有发往特定地址的流量,请输入显示过滤器
ip.dst == 1.2.3.4
,将1.2.3.4
替换为传出流量发送到的 IP 地址。 - 如果您想查看特定地址的所有传入流量,请输入显示过滤器
ip.src == 1.2.3.4
,将1.2.3.4
替换为传入流量发送到的 IP 地址。 - 如果您想查看特定地址的所有传入和传出流量,请输入显示过滤器
ip.addr == 1.2.3.4
,将1.2.3.4
替换为相关的 IP 地址。
排除来自特定 IP 地址的数据包
ip.addr != 1.2.3.4
过滤到局域网的数据包
要仅查看局域网流量而不查看互联网流量,请运行
(ip.src==10.0.0/8 AND ip.dst==10.0.0/8) OR (ip.src==172.16.0.0/12 AND ip.dst==172.16.0.0/12) OR (ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16)
这将过滤任何私有网络空间内的流量。
按端口过滤数据包
查看两个或多个端口上的所有流量
tcp.port==80||tcp.port==3306 tcp.port==80||tcp.port==3306||tcp.port==443
使用 dumpcap 进行无头捕获
dumpcap 是 Wireshark 的一部分,可用于在没有 GUI 的情况下捕获数据包。与 tmux 结合使用将允许在分离的会话中捕获数据包。
要查看所有 dumpcap 选项,请使用 -h
标志。
以下示例将提供环形缓冲区捕获。它捕获二十个每个 100MB 的 .pcap
文件,用第二十一个文件替换最旧的文件,依此类推……这允许连续捕获而不会耗尽磁盘空间。
# dumpcap -i 1 -b filesize:100000 -b files:20 -w mycapture.pcapng
-i
− 接口号(从dumpcap -D
列出)
-b filesize:
− 启动新的.pcap
文件之前的文件大小(以 kB 为单位)
-b files:
− 在覆盖最旧文件之前要捕获的文件数
-w
− 将输出写入文件mycaptureidentifier.pcapng