Linux Sniffer如何进行流量统计
小樊
39
2025-11-25 13:51:58
Linux Sniffer流量统计实用指南
一、工具选型与适用场景
- 实时总带宽:优先用nload、bmon、bwm-ng,读取**/proc/net/dev或内核统计,开销小,适合看接口级**实时速率。
- 按连接/主机:用iftop、iptraf、tcptrack,基于pcap捕获并按连接聚合,能按IP/端口过滤,适合定位“谁在占用带宽”。
- 按进程:用nethogs,直接把PID/用户/路径与带宽对应,快速找出异常进程。
- 历史与报表:用vnstat守护进程持续记录,生成日/月报表;配合sar -n DEV查看系统级历史网络统计。
- 抓包与深度分析:用tcpdump/tshark/Wireshark做pcap抓取与协议解析,适合取证、问题复现与细粒度统计。
二、快速上手命令
- 实时总带宽
- nload:查看各接口的Rx/Tx实时速率与图形
- 命令:
nload(或nload eth0指定接口)
- bwm-ng:简洁的总带宽与条形图
- 按连接/主机
- iftop:按连接显示带宽,支持BPF过滤
- 命令:
sudo iftop -i eth0 -n(禁用DNS解析更快)
- tcptrack:按TCP连接跟踪速率
- 命令:
sudo tcptrack -i eth0 port 80
- 按进程
- 历史与系统统计
- vnstat:查看历史/实时使用
- 命令:
vnstat -l -i eth0(实时),vnstat -i eth0(历史)
- sar:系统活动报告中的网络接口统计
- 命令:
sar -n DEV 1 10(每秒1次,共10次)
- 抓包与报表导出
- tcpdump:抓取并保存pcap
- 命令:
sudo tcpdump -i eth0 -w capture.pcap
- tshark:命令行统计并导出CSV
- 命令:
tshark -r capture.pcap -T fields -e frame.number -e ip.src -e ip.dst -e tcp.port -E separator=, -E quote=d -E header=y > report.csv
三、进阶用法与统计口径
- 精准过滤后再统计:在抓包工具中使用BPF表达式只统计目标流量,减少噪声与开销。
- 示例:
tcpdump -i eth0 'tcp port 80 and host 10.0.0.1' -w http_only.pcap
- 报告与分析:抓包后用Wireshark的“统计”菜单查看协议分布、会话、端点等;用tshark批量导出字段做二次统计与可视化。
- 高流量环境建议:优先选择低开销工具(如vnstat、nload)做持续观测;需要连接级/进程级分析时再用pcap类工具,并配合过滤器与采样/分段策略,避免丢包与性能抖动。
四、常见问题与排错
- 权限不足:抓包与基于pcap的工具通常需要root或CAP_NET_RAW能力,使用sudo运行。
- 丢包与性能:在10Gbps+或高PPS场景,优先用vnstat/nload等统计型工具;若必须抓包,减少捕获范围(接口、BPF)、缩短保存时长、分段分析。
- 名称解析慢:iftop加**-n**禁用DNS解析;抓包分析时也可关闭解析以提升速度。
- 进程未知:按连接统计(如iftop/tcptrack)默认不显示PID,用nethogs直接定位进程。
五、合规与安全提示
- 仅在授权的网络与主机上进行嗅探与流量统计,避免违反法律法规与合规要求。
- 抓包文件可能包含敏感信息(如明文凭据、会话内容),应妥善存储与访问控制,必要时进行脱敏与最小化保留。