实时监控Linux网络流量的工具推荐
时间:2026-02-28 10:28:39 199浏览 收藏
本文深入解析了Linux系统中两款互补的实时网络流量监控利器——nethogs与iftop:nethogs按进程维度精准定位“谁在疯狂发包”,尤其擅长捕获短生命周期进程、容器内应用等传统工具易遗漏的流量源头;iftop则聚焦通信关系,以IP和端口为单位直观呈现“正在和谁通信”,是快速识别扫描攻击、异常回源或恶意连接的应急首选;二者统计口径本质不同(nethogs算应用层净荷,iftop算链路层原始帧),偏差并非故障而是视角差异,需协同使用而非取舍——搭配安装指南、典型排障技巧及权限避坑要点,为运维人员提供一套即装即用、直击痛点的网络流量排查闭环方案。

怎么一眼看出哪个进程在疯狂发包
直接上 nethogs,它专治“不知道谁在偷跑流量”。别的工具按协议或IP分,它按进程分——你看到的每一行就是一个 PID 在实时吞吐,不用再从端口反推服务、从服务查进程。
常见错误现象:用 iftop 看到某个 IP 流量爆了,但查 netstat -tulnp 却发现端口没进程监听;其实是容器、沙箱或短生命周期进程(比如 curl 脚本)干的,nethogs 能当场捕获它们。
- Ubuntu/Debian:运行
sudo apt install nethogs,然后sudo nethogs - RHEL/CentOS/AlmaLinux:先
sudo yum install epel-release,再sudo yum install nethogs - 默认监控
eth0,想换网卡就加参数,比如sudo nethogs ens33 - 交互时按
r按接收排序,s按发送排序,q退出 —— 别等它自动刷新,手动冻结排序(o)才能盯住可疑进程
怎么快速定位是哪个外部IP在猛连我
iftop 是这个问题的秒解。它不关心进程是谁,只告诉你“此刻谁和我在通信、流速多大”,特别适合应急判断是否被扫描、被拖库、或 CDN 回源异常。
使用场景:Web 服务器突发高带宽,nethogs 显示 nginx 占得多,但你不确定是正常用户还是恶意爬虫 —— 这时候切到 iftop,一眼看到 100+ 连接来自同一个 /24 段,基本可以判定。
- 安装:
sudo apt install iftop(Debian系)或sudo yum install iftop(RHEL系) - 启动后默认按 10 秒平均流量排序,按
1/2/3可切换看 2s/10s/40s 流量 - 按
N关闭端口转服务名(避免把 80 显示成 http,干扰判断),按P显示端口号,按f输入host 192.168.1.100过滤特定目标 - 注意:如果网卡是 bond 或 veth(如 Docker 容器),
iftop -i docker0才能抓到容器间流量,别只盯着eth0
为什么 nethogs 显示的总流量和 iftop 对不上
不是 bug,是视角不同导致的统计口径差异。简单说:nethogs 统计的是**进程发起的 TCP/UDP 报文净荷**(payload),而 iftop 统计的是**网卡驱动收到/发出的原始帧**(含 TCP 头、IP 头、以太网头、重传包)。
典型偏差场景:
- 大量小包(如 DNS 查询):
iftop会把每个 60 字节的请求+响应都算进去,nethogs可能归到systemd-resolved但数值偏小 - 启用 TCP Segmentation Offload(TSO)的网卡:硬件把大包拆成小帧发出去,
iftop看到的是拆后的帧流速,nethogs仍按应用层发包量统计 - 容器网络:宿主机上
nethogs看不到容器内进程(除非用--net=host),但iftop -i cni0能看到所有进出容器的流量
所以别纠结“哪个准”,该用 nethogs 查责任人,该用 iftop 查通信对象,两者互补,不是替代。
装完跑不起来?常见权限和依赖坑
nethogs 和 iftop 都需要抓包能力,本质是读取 /dev/net/pf_packet 或调用 libpcap,普通用户没权限 —— 这是最常卡住的地方。
- 报错
Unable to get pid of the process或socket: Operation not permitted:一定是没加sudo,别信“文档说可普通用户运行”,那是旧版本或特殊编译配置 - CentOS 8+/AlmaLinux 9 启用
nf_tables后,iftop可能无法解析连接状态:临时切回iptables(sudo update-alternatives --config iptables),或升级到 iftop 1.1.0+ - Alibaba Cloud Linux 默认禁用 promiscuous 模式:
nethogs -p会失败,去掉-p即可;iftop -p同理 - Docker 容器里装不了?别试了。容器默认没
CAP_NET_RAW权限,且网络命名空间隔离,必须在宿主机运行
真要容器内监控,改用 ss -i + cat /proc/net/snmp 粗略估算,或者挂载宿主机 /proc 和 /sys 后跑 nethogs —— 但这就超出“实时排查”范畴了。
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
209 收藏
-
318 收藏
-
193 收藏
-
253 收藏
-
361 收藏
-
359 收藏
-
477 收藏
-
484 收藏
-
253 收藏
-
450 收藏
-
479 收藏
-
443 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习