Linux流量监控iftop查看异常流量
为什么要监控Linux流量?iftop能解决什么问题
当服务器带宽突然跑满、网站变慢时,你第一反应可能是“谁在偷跑流量”。
Linux自带的top只能看CPU和内存,而iftop(Interface Top)专门监控网络接口的实时流量,能清晰显示每个连接的IP地址、端口、发送和接收速率。
它不像nload那样只显示总量,也不像tcpdump那么复杂——它直接告诉你“哪个IP正在吃带宽”,非常适合快速定位异常流量。
适用场景包括:
- 服务器带宽被占满,需要找出是哪个外部IP在狂发包。
- 内部某台机器(或某个进程)向远程地址发送大量数据。
- 怀疑服务器被植入后门或挖矿程序,通过异常流量特征来判断。
安装iftop:一行命令搞定
不同Linux发行版安装命令略有差异,但都很简单:
Debian/Ubuntu(包括宝塔环境常见系统):
sudo apt update && sudo apt install iftop -y
CentOS/RHEL 7/8:
sudo yum install epel-release -y
sudo yum install iftop -y
CentOS/RHEL 9 / Rocky / Alma:
sudo dnf install epel-release -y
sudo dnf install iftop -y
安装后直接输入iftop即可启动,如果提示“Permission denied”请加sudo。
注意:iftop需要root权限才能监听所有网卡流量,所以生产环境务必用sudo运行。
使用iftop查看实时流量:界面一秒看懂
执行sudo iftop后,你会看到一个全屏界面,分为三部分:
- 顶部:当前总带宽统计(累计发送/接收总量、峰值速率)。
- 中间列表:每个连接的源IP、目标IP、发送速率、接收速率和总流量。默认按流量降序排列,最上面的就是“流量大户”。
- 底部:显示快捷键和统计摘要,如
TX(发送)、RX(接收)、TOTAL。
常用操作快捷键(按对应字母):
n:切换IP地址显示为域名或纯IP(建议保持纯IP,避免DNS查询拖慢界面)。s:显示源端口。d:显示目标端口。t:切换连接显示顺序(按发送、接收或总计)。p:暂停/继续刷新。q:退出。
刚启动时可能刷得很快,你可以按p暂停画面,然后仔细查看哪些IP占用了大量流量。
如果某个陌生IP每秒发送几十MB,那基本就是异常流量了。
定位异常流量:三步排查法
拿到iftop显示的IP列表后,按以下步骤缩小问题范围:
- 检查目标端口:按
d显示目标端口,如果端口是22(SSH)或80/443(Web),且连接次数不多,可能是正常业务。如果端口是4444、31337或随机高端口,要高度警惕。 - 反向解析IP(用另一个窗口执行):
nslookup 192.168.1.100或whois 8.8.8.8,看是否来自已知恶意网段(如挖矿矿池地址、境外可疑IP)。 - 关联进程:iftop只看网络层,不直接显示进程名。要找出具体进程,可以用
lsof -i :端口号或netstat -tunap | grep IP。例如:
sudo lsof -i :52364 # 假设异常端口是52364
如果出来的进程是crond或httpd之外的生僻名字,大概率有问题。
建议立即kill进程并隔离该IP。
典型异常流量特征:
- 持续向同一IP发送大量数据(可能是数据外泄)。
- 接收大量来自陌生IP的响应包(可能是DDoS攻击回源)。
- 带宽长时间打满,但系统负载正常(可能是被利用做代理服务)。
避坑指南与验证结果
常见坑点:
- 没开HTTP:iftop默认监听第一个活动的网卡(通常是eth0或ens33)。如果服务器有多个网卡(如内网+外网),需要手动指定:
sudo iftop -i eth1。 - 界面卡死:某些系统下iftop可能因DNS反查卡死,启动时加上
-n参数禁用DNS解析:sudo iftop -n。 - 只看流量看不了IP:确认防火墙(iptables/nftables)没有拦截流量统计。iftop基于libpcap,与防火墙无关,但若网卡处于混杂模式被阻止,可能看不到所有流量。可以用
tcpdump -i eth0测试一下能否抓包。
验证结果:
- 修复异常后,重新运行
sudo iftop -n,观察带宽是否降至正常水平(比如从100Mbps降到1Mbps以下)。 - 同时用
nload或vnstat交叉验证:nload eth0看总流量曲线是否平稳。 - 如果你是通过iptables临时封禁了某个IP,可以用
iptables -L -n -v查看该IP的包计数是否继续增长;若增长说明封禁失效或有其他出口。
最后提醒:生产环境慎用iftop长时间运行,它本身会消耗少量CPU。
通常只在你排查问题时临时开启几分钟即可。
如果服务器带宽持续异常,建议结合Zabbix、Prometheus等长期监控工具。
掌握iftop之后,再遇到服务器流量异常,你就能像老手一样从容定位了。