常用的抓包工具
tcpdump
特点
- 轻量级命令行工具,适合简单的抓包分析。
- 默认大多数 Linux 系统都会预装。
常用命令
安装
yum install tcpdump -y
tcpdump -i eth0 # 抓取所有流量
tcpdump -i eth0 port 80 # 抓取特定端口流量
tcpdump -i eth0 -w capture.pcap # 保存抓包到文件
tcpdump -r capture.pcap # 读取保存的抓包文件
使用
通常在客户端访问 服务端 出现网络异常
在客户端长ping或者其他方式,在服务器端使用tcpdump抓取对应流量包
比如抓取eth0网卡下8080端口流量包,生成8080_client.pcap文件:
tcpdump -i eth0 host <客户端IP> and port 8080 -w 8080_client.pcap
Wireshark
特点
- 图形界面工具,功能强大,适合详细分析。
- 支持多种协议解析,配合过滤规则使用效果更佳。
windows安装使用
官方下载
https://www.wireshark.org/download.html
安装后使用
打卡软件,进入开始界面,Wireshark直接抓取本机网卡的网络流量
选择网卡 双击进入WLAN 无线网卡开始抓包。左上角有停止按钮
- No.:Number的缩写,是Wireshark对所捕获包进行的标号,并非数据包自带;
- Time:捕获数据包的精确时间,可以在“视图”->“时间显示格式”中去设置(也可以选中任一数据包点鼠标右键设置),默认是“Seconds Since First Captured Packet”,即抓到的第一个包开始计时。
- Source:原IP地址。默认只显示地址,要显示名字信息可在“首选项”的“Name Resolution”里面进行设置。
- Destination:目标IP地址。
- Length:数据包的长度。
- Info:该数据包的摘要信息,是Wireshark解析后提供的分析信息。
结合tcpdump使用
通常linux服务器使用tcpdump 生成.pcap文件,通过Wireshark 读取.pcap 文件
tcpdump -i eth0 -w capture.pcap
打开服务器下载下来的capture.pcap 文件
捕获过滤器
捕获过滤器在数据包捕获之前设置,能大幅减少捕获的数据量。
常用语法
host 192.168.1.1 #仅捕获与 IP 地址 192.168.1.1 相关的数据包。
net 192.168.1.0/24 #捕获与子网 192.168.1.0/24 相关的数据包。
port 80 #捕获与端口 80 (HTTP) 相关的数据包。
src host 192.168.1.1 #捕获源地址为 192.168.1.1 的数据包。
dst host 192.168.1.1 #捕获目标地址为 192.168.1.1 的数据包。
tcp #仅捕获 TCP 协议数据包。
udp #仅捕获 UDP 协议数据包。
icmp #仅捕获 ICMP 数据包(如 ping)。
ether host aa:bb:cc:dd:ee:ff #仅捕获与指定 MAC 地址相关的数据包。
示例
tcp port 80 #捕获 HTTP 流量
udp and net 192.168.1.0/24 #捕获来自特定子网的 UDP 数据包
tcp port 443 or udp port 53 #捕获 HTTPS 和 DNS 流量
显示过滤器
显示过滤器用于分析捕获后的数据包,提供更细粒度的筛选。
常用语法
ip.addr == 192.168.1.1 #筛选 IP 地址为 192.168.1.1 的数据包。
ip.src == 192.168.1.1 #筛选源 IP 地址为 192.168.1.1 的数据包。
ip.dst == 192.168.1.1 #筛选目标 IP 地址为 192.168.1.1 的数据包。
tcp.port == 80 #筛选 TCP 端口为 80 的数据包。
udp.port == 53 #筛选 UDP 端口为 53 的数据包。
源地址IP为10.0.0.8 的数据包
ip.src ==10.0.0.8
组合条件
ip.src == 192.168.1.1 and tcp.port == 80 #筛选源 IP 为 192.168.1.1 且目标端口为 80 的数据包。
http or dns #筛选 HTTP 或 DNS 流量。
!(ip.addr == 192.168.1.1) #排除 IP 地址为 192.168.1.1 的数据包。
小技巧
- 按条件高亮:右键某条流量,选择“Apply as Filter”快速生成过滤条件。
- 使用书签:常用过滤条件可以保存为书签,方便复用。
- 流量统计:使用“统计 > 协议层次结构”查看流量分布。
linux 安装
安装
yum install wireshark -y
使用,启动图形界面
wireshark
命令行版本 tshark:
tshark -v #查看版本
tshark -i eth0 # 抓取eth0流量,默认显示实时抓取的所有数据包
将数据包保存到文件以供后续分析:
tshark -i eth0 -w capture.pcap
读取 .pcap 文件并解析数据包:
tshark -r capture.pcap
列出所有接口
tshark -D
nload
- 实时监控网络流量,可视化流量信息。
- 不支持抓取具体的数据包,但适合快速查看流量概况。
安装
yum install nload -y
使用
nload
iftop
- 实时显示网络连接和流量,可帮助快速识别高流量连接。
- 不支持数据包的详细分析。
安装
yum install iftop -y
使用
iftop
iftop -i eth0 -P
-P 参数会将请求服务的端口显示出来,也就是说是通过服务器哪个端口建立的连接
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
ngrep
- 类似于 grep,但用于网络包数据,支持基于内容的过滤。
安装
yum install ngrep
使用,抓取HTTP流量
ngrep -d eth0 'GET|POST' port 80
nmap
- 主要用于网络扫描和安全分析,但也可以用来检测网络通信。
yum install nmap -y
使用
nmap -A 目标IP
tcping
下载
方法一:直接下载可执行文件(Windows)
https://elifulkerson.com/projects/tcping.php
将下载好的tcping.exe程序复制到C:\Windows\System32目录下。
方法二:使用 PowerShell 模块
Windows 环境下可以用 PowerShell 脚本实现类似功能:
Install-Module -Name Tcping
方法三:Linux 下安装
sudo apt install tcping # Ubuntu/Debian
sudo yum install tcping # CentOS/Red Hat
使用
运行 tcping 持续测试端口连通性,观察响应时间波动
tcping <目标IP或域名> <端口号>
tcping 172.20.10.32 3389
指定重复次数
tcping -n <次数> <目标IP或域名> <端口号>
tcping -n 5 192.168.1.1 80