您的位置:首页 >Linux怎么监控系统流量使用情况 Linux网络抓包工具使用详解
发布于2026-05-01 阅读(0)
扫一扫,手机访问

开门见山,先说结论:监控实时带宽用 iftop,排查具体进程占用用 nethogs,进行原始数据包深度分析则用 tcpdump。这三者各司其职,定位清晰,如果混用或者用错了场景,很容易得出错误的判断。
iftop 的核心原理是监听网卡的数据包,并通过 libpcap 库进行实时汇总统计。这意味着它能快速、直观地展示IP或端口级别的实时吞吐速率,但它天生就“看”不到背后的进程ID或进程名。这里有个常见的误解:以为加上 -p 参数就能看到进程。其实不然,那个 -p 指的是“混杂模式”,跟进程毫无关系。
sudo,否则会遭遇 socket: Operation not permitted 错误。-n 参数,可以避免额外的DNS查询拖慢工具响应速度,甚至干扰流量统计的准确性。-P(大写)参数,会显示具体的端口号(如 :443),而不是服务名称(如 :https),信息更直接。-F 192.168.1.0/24。但要注意,iftop 本身不支持按端口过滤,如果需要锁定某个端口的流量,通常需要先用 tcpdump 过滤抓包,再将文件交给 iftop 或其它工具分析。nethogs 的独特价值在于,它能将网络流量直接绑定到具体的 pid 和 command 上。这对于排查“哪个进程在偷偷上传/下载”这类问题非常高效。不过,它并不对所有网卡流量进行聚合统计,而是显示每个活跃进程的实时速率,也无法像 iftop 那样按照连接对流量进行排序。
Unable to open /dev/tty,这通常是因为没用 sudo,请直接使用 sudo nethogs。sudo nethogs eth0。m 键可以循环切换速率显示单位(KB/s, KB, B),按 r 键可以反向排序,按 q 键退出。sudo nethogs -t eth0 > /tmp/nethogs.log 2>&1。必须明确,tcpdump 并非实时监控工具,而是一个强大的诊断工具。它直接输出原始字节流,不进行任何聚合或美化。如果无节制地抓包,很容易刷爆终端屏幕,甚至因为巨大的IO操作拖慢系统或撑满磁盘。因此,关键在于学会使用过滤器精准缩小范围,切忌“先抓了再说”。
sudo tcpdump -i eth0 -nn -c 100 port 443。这个命令只抓取100个发往或来自443端口(HTTPS)的包,-nn 避免了域名和端口名解析,效率更高。-s 96 参数可以截断数据包(只抓取每个包的前96字节),这对于分析TCP头部和HTTP头部信息通常已经足够,能显著减小文件大小。-w /tmp/out.pcap 将抓取的包保存为文件,然后下载到本地用 Wireshark 等图形化工具进行深入分析。尽量避免在服务器上直接使用 -A 参数以ASCII形式打印包内容,这极易导致刷屏甚至失去连接。tcpdump -i eth0 'tcp[tcpflags] & (tcp-rst|tcp-syn) != 0',这比无差别全抓要高效得多。需要警惕的是,上述所有工具的数据都依赖于内核提供的统计信息。而底层网卡驱动的特性或卸载功能(如LRO/GRO)可能会影响统计结果的实时性和准确性。举个例子,iftop 显示接收流量突然飙升,但查看 /proc/net/dev 里对应接口的字节计数却变化不大,这很可能是GRO(通用接收卸载)合并了数据包,导致统计出现了延迟。
cat /proc/net/dev 中的原始字节计数,这是内核最底层的计数器。vnstat 这类工具,其数据库是基于对 /proc/net/dev 的定时采样生成的,因此它的数据比 iftop 更稳定,能反映趋势,但实时性就相对较弱。docker stats 或 podman top 看到的网络数据来源于cgroup的 net_cls 控制器统计,这与宿主机上通过 iftop 看到的、经过完整网络栈的流量数值可能存在差异,因为统计的路径和节点不同。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9