iftop流量分析定位异常爬虫带宽占用
服务器突然卡顿、网站响应变慢,十有八九是带宽被某些“不守规矩”的爬虫占满了。
对于刚接触服务器运维的新手来说,不用马上研究复杂的抓包工具,iftop 就是一个轻量又直观的流量监控利器。
它能按IP实时展示出入带宽,一眼就能看出哪个IP在“吃带宽”。
本文带你在Linux服务器上完成从安装到定位再到拦截的全流程。
一、确认环境并安装iftop
iftop 依赖 libpcap,多数Linux发行版的官方源都收录了它。
登录服务器后,根据系统选择一条安装命令:
- CentOS / Rocky Linux / Alibaba Cloud Linux:
sudo yum install -y epel-release
sudo yum install -y iftop
- Ubuntu / Debian:
sudo apt update
sudo apt install -y iftop
安装完成后执行 iftop -h 能看到帮助信息,就说明环境准备好了。
二、启动流量监控并解读输出结果
一般服务器有多个网卡,先通过 ip addr 或 ifconfig 查看主要网卡名称(通常为 eth0 或 ens3)。
启动 iftop 并指定该网卡:
sudo iftop -i eth0 -n -N
参数说明:
-i eth0:监控 eth0 网卡。-n:不解析域名,直接显示 IP,避免 DNS 拖慢显示。-N:不解析端口服务名,直接显示端口号。
启动后你会看到一个实时刷新的界面(可能默认单位是 bit,稍后说明)。
分为三块:
- 顶部:两行显示 TX(发送) 和 RX(接收) 的瞬时、平均、峰值速率。
- 中间列表:每个连接一行,左侧是本地IP:端口,右侧是远端IP:端口,中间是最近2秒、10秒、40秒的平均速率。
- 底部:总计流量。
注意:默认速率单位是 bit,不是 Byte。
可以按 B 键(大写)切换为 Byte,按 b 键(小写)回到 bit。
对于定位爬虫,我建议用 Byte 更直观——1MB/s 约等于 8Mbps。
三、锁定占用带宽的异常IP
场景:你发现服务器带宽持续跑满,网站响应极慢。
在 iftop 界面中,观察接收(RX)方向的远端 IP 列表,排序默认按速率降序,最上面的 IP 就是当前流量最大的“嫌疑犯”。
如果看到某个 IP 的 RX 速率长期明显高于其他连接(比如其他 IP 才几十KB/s,它却几MB/s),那它很可能是异常爬虫。
由于 iftop 默认显示所有连接,你可以按 t 键切换显示模式,进入“只显示发送”“只显示接收”或“两边都显示”,方便聚焦。
另外按 p 键可以暂停刷新,方便仔细看当前的 IP 列表。
记录下可疑的 IP 地址,比如 203.0.113.5。
四、排查与限制异常爬虫
拿到可疑 IP 后,先别急着封,确认一下是不是自己业务需要的源(比如 CDN 回源、API 合作伙伴)。
可以通过以下方式进一步排查:
# 查看该 IP 正在访问的 URL(需要 nginx 日志配合)
sudo tail -f /var/log/nginx/access.log | grep '203.0.113.5'
如果日志显示该 IP 在频繁请求无关页面、访问间隔极短、User-Agent 像爬虫(如 python-requests、Scrapy),基本可以确认是异常爬虫。
临时封禁方式(iPtables):
# 封禁单个 IP(注意替换为实际 IP)
sudo iptables -I INPUT -s 203.0.113.5 -j DROP
封完后,iftop 界面中该 IP 的流量应迅速降为 0,整体带宽恢复正常。
如果需要解封,执行:
sudo iptables -D INPUT -s 203.0.113.5 -j DROP
如果用的是宝塔面板,可以直接在安全 > IP 规则中添加黑名单,效果相同。
五、常见问题与排错
问题1:iftop 报错 “interface eth0 does not exist”
答:网卡名称不对。用 ip link show 查看真实名称,比如 ens33,把 -i eth0 改成 -i ens33。
问题2:为什么界面上显示的单位是 Kb、Mb 而不是 KB、MB?
答:iftop 默认使用 bit。按 B 键(大写)可切换为 Byte。如果你习惯看字节,建议每次启动都带参数 -B 让单位为字节。
问题3:iftop 只显示本地连接,没有显示所有远程 IP?
答:按 T 键(大写)可以在“仅显示本地”“仅显示远程”“显示所有”之间切换。确保显示模式为“显示所有”(屏幕上方会有提示)。
问题4:封禁 IP 后流量仍然没降?
答:可能带宽占用来自其他未封的 IP,或者爬虫使用了多个 IP。继续观察 iftop 列表,重复定位-封禁步骤。如果疑似 DDOS,建议接入 WAF 或使用云厂商的流量清洗。
---
总结:iftop 是排查带宽飙升最趁手的工具之一。
你只需要学会启动、看速率、找最大 IP,就能快速定位异常爬虫。
后续再配合日志和封禁手段即可解决问题。
如果你在处理过程中遇到其他现象,建议回头再核对 iftop 的显示模式与单位,大部分排错都能覆盖。