本文目录导读:

iftop 是一个非常实用的实时网络流量监控工具,它主要用来查看本机与外部主机之间的具体连接流量,而不是像 nload 那样只看总带宽。
以下是使用 iftop 查看连接流量的详细步骤和常用操作:
安装 iftop
大多数 Linux 发行版可以通过包管理器直接安装:
-
Debian / Ubuntu:
sudo apt update sudo apt install iftop
-
CentOS / RHEL / Fedora:
# CentOS 7/8 需要先安装 EPEL 源 sudo yum install epel-release sudo yum install iftop
基本使用:启动并查看流量
运行 iftop 需要 root 权限(因为它需要读取网卡原始数据):
sudo iftop
启动后,你会看到一个全屏的实时监控界面,它分为三个部分:
- 顶部: 显示整体的带宽使用量(峰值、平均值、当前值)。
- 中间(核心区域): 显示所有的连接列表。
- 左边: 本机 IP 和端口。
- 右边: 对端 IP 和端口。
- 中间: 箭头和速率。
=>表示发送(TX),<=表示接收(RX)。 - 最后三列: 分别显示 2秒、10秒、40秒 内的平均流量速率。
- 底部: 统计汇总,包括总发送/接收量、峰值以及总数据量。
常用参数(启动时指定)
iftop 有一些非常实用的命令行选项,可以帮你筛选信息:
| 参数 | 作用 | 示例 |
|---|---|---|
-i |
指定监控的网卡(默认是第一个,可能在 docker 或虚拟网桥上,需手动指定) | sudo iftop -i eth0 |
-n |
直接显示 IP,不进行 DNS 反向解析(强烈建议使用,否则会很慢) | sudo iftop -n |
-N |
不解析端口号(直接显示端口数字,如 443,而不是显示 https) | sudo iftop -N |
-P |
显示端口号(默认只显示主机名/IP,加上这个才能看到具体端口) | sudo iftop -P |
-B |
以 Bytes 为单位显示(默认是 bits,更容易混淆) | sudo iftop -B |
-F |
显示特定网段的流量(如内网流量) | sudo iftop -F 192.168.1.0/24 |
最常用的组合:
# 监控 eth0,显示 IP 和端口,以 Bytes 显示 sudo iftop -i eth0 -n -N -P -B
界面交互操作(运行时按下)
启动 iftop 后,你可以在界面中按以下快捷键切换视图:
| 按键 | 作用 |
|---|---|
n |
切换 显示主机名 / 显示 IP 地址 |
s |
切换 显示源主机 / 不显示 |
d |
切换 显示目标主机 / 不显示 |
p |
暂停/继续 刷新(方便截图或仔细看某一时刻的数据) |
b |
切换 是否显示图形化的流量条条 |
T |
切换 是否显示连接总量(累计数据) |
L |
切换 是否显示刻度(Lines for scales) |
j / k |
上下滚动,翻看更多的连接(如果连接很多) |
1 / 2 / 3 |
根据 1列(2秒)、2列(10秒)或 3列(40秒)的平均值排序 |
< |
按 源地址 排序 |
> |
按 目标地址 排序 |
t |
切换 连接显示模式(发送/接收/总流量) |
q |
退出 iftop |
如何解读输出结果(实战示例)
假设你执行了:
sudo iftop -i eth0 -n -N -P -B
你可能会看到类似这样的输出(示意):
12.5Kb 25.0Kb 37.5Kb
└─────────────────┴──────────────────────┴──────────────────────
192.168.1.100:54321 => 142.250.80.14:443 1.50KB 2.00KB 1.80KB
<= 2.00KB 3.00KB 2.50KB
192.168.1.100:54322 => 52.84.XX.XX:443 5.00KB 10.0KB 8.00KB
<= 8.00KB 15.0KB 12.0KB
192.168.1.100:22 => 10.0.0.5:54321 100KB 200KB 150KB
<= 80KB 150KB 120KB
────────────────────────────────────────────────────────────────────────
TX: cum: 500MB peak: 150KB/s rates: 106KB/s 212KB/s 161KB/s
RX: cum: 400MB peak: 170KB/s rates: 90KB/s 188KB/s 144KB/s
TOTAL: cum: 900MB peak: 310KB/s rates: 196KB/s 400KB/s 305KB/s
解读:
- 第一行:
168.1.100:54321是你的本机IP和端口,=>指向250.80.14:443(Google 服务器)。 - 第二行:
<=表示从对方发回来的流量。 - 数字:
50KB 2.00KB 1.80KB分别代表最近 2秒、10秒、40秒 内的平均速率。 - 底部汇总:
TX发送,RX接收。cum是启动以来累计的总字节数,peak是峰值速率,rates是当前 2s/10s/40s 的平均值。
常见问题排查技巧
-
为什么全是内网 IP / 没有外部 IP?
- 你可能监控了错误的网卡(如
docker0),使用ip addr查看你的主网卡名称(通常是eth0,ens33,enp0s3等),然后用-i指定。
- 你可能监控了错误的网卡(如
-
为什么一开始很卡?
- 因为
iftop默认在做 DNS 反向解析。启动时务必加上-n。
- 因为
-
如何只看某个端口的流量?
iftop本身没有强大的过滤语法,可以配合grep或awk,iftop只输出到屏幕,没有-o输出选项,更推荐的做法是使用tcpdump抓包分析,或者用nethogs按进程查看。
-
如何只看某个 IP 的流量?
- 启动时使用
-f参数,即过滤器语法。sudo iftop -f "host 8.8.8.8"。
- 启动时使用
- 推荐启动命令:
sudo iftop -i eth0 -n -N -P -B - 核心操作: 按
j/k翻页,按1/2/3排序,按p暂停。 - 用途: 快速定位是哪个 IP 的哪个端口在消耗大量带宽,确认是否有异常连接或占用。
标签: 连接流量
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。