Linux iftop命令详解

iftop是一款用于监控网络流量的命令行工具,可以实时显示网络带宽使用情况。

一、命令简介

iftop 是一个类似于 top 的实时流量监控工具,主要用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。

二、安装iftop

在大多数 Linux 发行版中,可以通过包管理器安装:

Ubuntu/Debian

sudo apt-get install iftop

CentOS/RHEL

sudo yum install epel-release
sudo yum install iftop

# 或者使用CentOS 8+的dnf
sudo dnf install iftop

Fedora

sudo dnf install iftop

三、基本语法

iftop [选项] [参数]

四、常用选项

选项 说明
-i 指定要监控的网卡
-n 不进行主机名解析
-N 不将端口号转换成服务名称
-B 以字节为单位显示流量(默认是比特)
-p 混杂模式,监控所有网络流量
-P 显示端口号
-F 显示特定网段的流量
-h 显示帮助信息

五、使用示例

示例1:监控指定网卡

# 监控eth0网卡
sudo iftop -i eth0

运行后会显示一个实时界面,包含以下信息:

  • 界面最上方显示带宽使用比例
  • 中间部分显示具体的连接和流量信息
  • 底部显示各种排序和筛选的快捷键

示例2:显示端口号和服务名称

# 显示端口号,不转换服务名称
sudo iftop -P -N

示例3:监控特定网段

# 只监控192.168.1.0/24网段的流量
sudo iftop -F 192.168.1.0/24

示例4:以字节为单位显示

sudo iftop -B

六、iftop界面操作

在 iftop 运行界面中,可以使用以下快捷键:

按键 功能
h 显示帮助
n 切换是否解析主机名
s 显示源主机
d 显示目标主机
t 切换显示格式(单行/两行)
N 切换端口解析
S 显示源端口
D 显示目标端口
p 暂停刷新
q 退出iftop

七、iftop界面说明

iftop 界面上会显示三列数值,分别表示:

  • 2秒流量:最近2秒的平均流量
  • 10秒流量:最近10秒的平均流量
  • 40秒流量:最近40秒的平均流量

箭头 表示流量的方向。

八、实用技巧

1. 找出占用带宽的IP

sudo iftop -n -N -P

这样可以直接显示IP和端口,方便找出占用带宽的源头。

2. 批量监控多个网卡

可以编写脚本循环监控多个网卡:

#!/bin/bash
for interface in eth0 eth1 wlan0; do
    echo "监控网卡: $interface"
    sudo iftop -i $interface -t -s 10
done

3. 输出到文件分析

# 运行10秒后退出并输出简要信息
sudo iftop -t -s 10 -i eth0 > network_traffic.log

九、常见问题

Q: iftop 显示 "interface: xxx does not exist" 错误

A: 检查网卡名称是否正确,可以使用 ip addrifconfig 查看可用网卡。

Q: 如何监控所有网络接口?

A: iftop 默认监控第一个非回环接口。要监控所有流量,可以使用:

sudo iftop -i any
Q: iftop 与 nload 有什么区别?

A: iftop 更侧重于显示具体的连接信息(哪个IP在和哪个IP通信),而 nload 更侧重于显示总体带宽使用情况图表。

注意事项:
  • iftop 需要 root 权限才能监控网络流量
  • 在高流量环境中,iftop 可能会消耗较多CPU资源
  • iftop 默认只监控TCP流量,不包括UDP
  • 监控时建议使用 -n 选项避免DNS解析延迟
小贴士: 结合使用 iftop 和 tcpdump 可以更深入地分析网络问题。iftop 找出问题IP,tcpdump 抓包分析具体内容。