iftop 和 nethogs 是Linux网络流量分析的互补工具:iftop用于宏观查看网卡流量,识别高带宽的IP通信对;nethogs则从微观定位具体消耗带宽的进程。排查时先用iftop发现异常IP,再用nethogs锁定对应进程,结合使用可高效定位带宽占用根源。

在Linux系统里,当我们面对网络流量的迷雾,想知道到底是谁在“吃”带宽时,iftop 和 nethogs 这两个小工具简直是我们的左膀右臂。简单来说,iftop 像个总览者,告诉你网卡上哪个IP地址对的流量最大,而 nethogs 则更像个侦探,直接揪出是哪个进程在搞事情。它们一个看宏观,一个看微观,搭配使用,网络问题往往无所遁形。
要深入分析Linux系统的网络流量,iftop 和 nethogs 是不可或缺的工具。它们各自以独特的方式提供洞察,帮助我们快速定位带宽消耗的根源。
iftop 的使用与解读:
iftop 主要用于实时监控网络接口的带宽使用情况,并按流量大小列出连接到该接口的源IP和目标IP。
安装:
# Debian/Ubuntu sudo apt install iftop # CentOS/RHEL sudo yum install epel-release -y sudo yum install iftop -y
基本用法:
sudo iftop -i eth0 # 监控 eth0 接口
运行后,你会看到一个类似 top 命令的界面,显示了:
交互式操作:
p: 切换显示端口信息。s: 切换显示源IP。d: 切换显示目标IP。t: 切换显示文本输出格式。q: 退出。分析思路: 当服务器出现网络慢、带宽跑满的情况时,我通常会先用 iftop 快速扫一眼。如果看到某个外部IP地址或内部服务IP(比如数据库、文件服务器)占据了绝大部分流量,那问题就缩小了范围。比如,我曾遇到过生产环境某个内部服务突然访问量暴增,iftop 一看,某个IP地址的流量突然飙升,结合业务日志,很快就定位到是某次不合理的压测导致。
nethogs 的使用与解读:
nethogs 则专注于识别是哪个进程在使用网络带宽。这在 iftop 告诉你某个IP流量大,但你不知道是哪个应用在产生这些流量时,就显得尤为关键。
安装:
# Debian/Ubuntu sudo apt install nethogs # CentOS/RHEL sudo yum install epel-release -y sudo yum install nethogs -y
基本用法:
sudo nethogs -d 3 eth0 # 监控 eth0 接口,每3秒刷新一次
运行后,你会看到:
交互式操作:
m: 切换不同的单位(KB/s, MB/s, GB/s)。r: 按接收流量排序。s: 按发送流量排序。q: 退出。分析思路: nethogs 的价值在于它直接指向“责任人”。比如,iftop 告诉我服务器与某个外部IP有大量流量,但我不知道是 nginx、mysql 还是某个后台脚本在产生。这时 nethogs 就能直接告诉我,哦,原来是 java 进程在疯狂上传数据,或者 curl 命令在下载大文件。有一次,发现服务器夜间带宽异常,nethogs 一跑,赫然发现一个不认识的 python 脚本在持续对外发送数据,这通常就是安全隐患了。
iftop 和 nethogs 虽然都是网络监控工具,但它们的侧重点和擅长解决的问题类型却截然不同,这在实际工作中是需要明确区分的。
iftop 更像一个“交通指挥官”,它能让你站在全局视角,快速了解当前网络接口上“谁和谁”之间的数据流最大。它擅长解决的问题包括:
iftop 能迅速显示是哪个外部IP地址在与你的服务器进行大量通信,这可能是DDoS攻击、端口扫描或者其他恶意行为的迹象。iftop 可以帮助你识别是哪个主要的IP对(例如,你的服务器与某个客户机、或者与某个CDN节点)占据了大部分带宽,从而判断瓶颈是否发生在服务器自身或特定连接上。iftop 观察服务与客户端之间的流量是否符合预期,比如一个高并发的服务是否真的产生了大量的网络交互。而 nethogs 则是一个“内部审计师”,它关注的是服务器内部,具体是“哪个进程”在消耗网络资源。它擅长解决的问题包括:
nethogs 能直接显示是哪个进程(及其PID)在占用带宽。nethogs 可以帮你确认是该应用本身的网络行为异常,还是其内部模块(如某个插件、某个定时任务)导致的问题。nethogs 能够揭示是否有不应该存在的进程在进行网络通信,这对于发现恶意软件或僵尸进程至关重要。nethogs 可以监控特定用户或服务的进程是否超出了其应有的网络资源使用范围。简而言之,iftop 是帮你回答“谁在和谁通信,流量有多大”,而 nethogs 则是回答“哪个程序在通信,消耗了多少流量”。它们是互补的,而非替代品。
在实际的网络故障排除中,选择 iftop 还是 nethogs,通常取决于你当前的问题焦点和排查的阶段。我个人经验是,这往往是一个从宏观到微观、从现象到本质的渐进过程。
一般而言,我的排障流程会是这样的:
初步判断:网络整体异常?
iftop。iftop? 它启动快,输出直观,能迅速告诉我当前网卡的总流量以及哪些IP对是主要的流量贡献者。这就像是站在高处俯瞰交通状况,能一眼看出哪个路口车流量最大,或者有没有“不明车辆”混入。深入分析:哪个进程在作祟?
iftop 告诉我某个IP对流量巨大,或者服务器自身有大量对外/对内流量,但具体是哪个应用程序在产生这些流量时,iftop 就力不从心了。这时,nethogs 就该登场了。nethogs? 它直接将网络流量与进程绑定,能够精准定位到具体的应用程序。这就像是交通警察发现某个路口堵塞,然后走进车流中,找出是哪辆车(哪个进程)导致了拥堵。python 脚本在疯狂上传数据,或者 mysql 进程的网络IO异常高,那么就找到了直接的“肇事者”。nginx、java 应用),但其流量远超预期,那么需要进一步检查应用的配置、日志或代码,看是否存在逻辑错误或性能瓶颈。nethogs 显示有未知用户或名称的进程在进行网络通信,那几乎可以断定是系统安全问题。总结一下选择策略:
iftop。 它适合作为初步排查工具,用于快速发现网络层面的异常现象。nethogs。 它适合作为深入排查工具,用于定位应用层面的具体问题。很多时候,我会先用 iftop -i eth0 观察几秒钟,如果发现异常,立刻切换到 nethogs -d 3 eth0 来锁定具体进程。这两个工具的结合使用,能够大大提高网络故障排查的效率和准确性。
除了它们的基础功能,iftop 和 nethogs 在实际使用中还有一些值得注意的高级技巧和潜在问题,了解这些能让你在面对复杂场景时更加从容。
iftop 的高级技巧与注意事项:
过滤显示: iftop 支持多种过滤模式,这在服务器连接数多、流量复杂时非常有用。
sudo iftop -f "port 80 or port 443" 仅显示HTTP/HTTPS流量。sudo iftop -f "host 192.168.1.100" 仅显示与特定IP的通信。sudo iftop -f "host 192.168.1.100 and port 22"。pcap 过滤规则,与 tcpdump 类似。这需要一些熟悉,但一旦掌握,效率极高。显示模式调整:
iftop -B: 以字节为单位显示带宽,而不是位。在某些场景下,字节单位更直观。iftop -P: 显示端口号,默认是隐藏的。这在分析具体服务流量时很有用。iftop -n: 不进行主机名解析,直接显示IP地址。这可以避免DNS解析带来的延迟,在排查DNS问题时也很有用。输出到文件: 虽然 iftop 是交互式的,但有时我们需要记录一段时间的流量数据。可以结合 script 命令:
script -c "sudo iftop -i eth0" iftop_log.txt
这会将 iftop 的终端输出保存到 iftop_log.txt,虽然不是结构化数据,但有时也能提供回顾性分析的依据。
权限问题: iftop 需要直接访问网络接口进行抓包,因此通常需要 root 权限(sudo)。如果遇到权限不足的错误,请检查是否使用了 sudo。
nethogs 的高级技巧与注意事项:
多接口监控: nethogs 可以同时监控多个接口:
sudo nethogs eth0 eth1
这在服务器有多个网卡时非常方便。
排序和刷新间隔:
nethogs -d N: 设置刷新间隔为N秒,例如 nethogs -d 1 每秒刷新一次,有助于捕获瞬时流量峰值。r 键按接收流量排序,s 键按发送流量排序,m 键切换单位。输出格式:
nethogs -v 3: 详细模式,显示更多信息,例如进程路径。nethogs -t: 跟踪模式,只显示新进程。“Unknown”进程: 有时 nethogs 会显示“Unknown”进程。这通常发生在以下几种情况:
nethogs 无法读取 /proc/<pid>/cmdline 文件来获取进程信息。确保以 root 权限运行。nethogs 采样时已经退出,导致无法关联。nethogs 识别为用户进程。资源消耗: nethogs 本身也需要消耗一定的CPU和内存资源,尤其是在刷新频率高(-d 1)且网络流量巨大的情况下。在资源敏感的生产环境中,需要权衡其对系统性能的影响。通常情况下,它的资源占用并不高,但在极端场景下,比如服务器本身已经处于高负载状态,要留意这一点。
共同注意事项:
eth0、ens33、enp0s3 等)。可以通过 ip a 或 ifconfig 命令查看。tcpdump 进行更细致的抓包分析。掌握这些进阶用法和注意事项,能让你更有效地利用 iftop 和 nethogs,更准确地诊断和解决Linux系统中的网络流量问题。
以上就是Linux iftop与nethogs命令分析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号