登录
首页 >  文章 >  linux

实时监控Linux网络流量的工具推荐

时间:2026-02-28 10:28:39 199浏览 收藏

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

Linux怎么监控实时网络流量_Linux iftop和nethogs工具【追踪】

怎么一眼看出哪个进程在疯狂发包

直接上 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 查通信对象,两者互补,不是替代。

装完跑不起来?常见权限和依赖坑

nethogsiftop 都需要抓包能力,本质是读取 /dev/net/pf_packet 或调用 libpcap,普通用户没权限 —— 这是最常卡住的地方。

  • 报错 Unable to get pid of the processsocket: Operation not permitted:一定是没加 sudo,别信“文档说可普通用户运行”,那是旧版本或特殊编译配置
  • CentOS 8+/AlmaLinux 9 启用 nf_tables 后,iftop 可能无法解析连接状态:临时切回 iptablessudo 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学习网公众号。

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>