服务器带宽跑满溯源异常流量:服务器带宽跑满怎么查?一步步定位
服务器带宽突然跑满,网站响应变慢甚至502,大多数人第一时间会想到重启或升级带宽。
但更聪明的做法是先定位源头——到底是谁在吃带宽?
是正常流量还是恶意攻击?
下面这套排查步骤,新人也能照着做。
排查前需要准备什么
- 能通过 SSH 登录服务器(Windows 用 PuTTY,Mac/Linux 直接用终端)。
- 拥有 root 权限或 sudo 权限。
- 安装必备工具:
iftop(按连接查看流量)、nethogs(按进程查看流量)。 - 如果有宝塔面板,直接使用后台的流量监控功能。
如果是刚买的服务器,
先用 apt update && apt install iftop nethogs -y(Debian/Ubuntu)或 yum install iftop nethogs -y(CentOS)装好工具。
实战排查:三步定位流量来源
1. 用 iftop 查看实时流量,找出最活跃的连接
执行命令:iftop,会显示一个动态列表,默认按流量大小排序。
重点看右列的“2s 10s 40s”平均速率。
如果某个 IP 的速率持续几兆甚至几十兆,基本就是它。
按 t 可以切换显示模式,按 n 不解析域名只显示 IP,更快。
记录下可疑 IP。
2. 用 nethogs 定位是哪个进程在发流量
iftop 只能看到 IP 对,但不知道是网站程序、被挂马还是系统服务。
nethogs 能按进程名显示带宽占用。
执行:nethogs,看到 PID USER PROGRAM DEV SENT RECEIVED。
如果发现一个不认识的程序(比如随机英文名),大概率是中招了;
如果是正常 web 服务(如 nginx、httpd、php-fpm),再看它的流量是否异常。
按 q 退出。
3. 结合宝塔面板流量图与日志确认
宝塔面板 → 流量监控,可以看过去24小时的带宽曲线。
如果曲线突然飙升到满,基本是异常。
点开“实时连接”还能看到当前活动的 IP。
对于可疑 IP,用宝塔的“日志查看”功能检查 access.log:grep '可疑IP' /www/wwwlogs/*.log 看它访问的 url、次数和 User-Agent。
如果大量请求静态资源或重复刷同一个接口,就是恶意爬虫或攻击。
容易踩的坑和正确做法
不要看到高流量 IP 就直接封掉。
万一是 CDN 边缘节点、真实用户、云监控?
先确认:
- 检查 IP 归属地,如果是知名的 CDN 厂商(如 Cloudflare、阿里云 CDN),别封。
- 如果是国外不常见 IP,访问频率极高且 UA 非主流浏览器,再考虑限制。
区分入站和出站流量。
服务器带宽跑满可能是自身对外发包(被当成肉鸡)。
用 iftop -o 只看外出流量;
用 nethogs -t 记录进程。
如果 nethogs 显示一个你未启动的进程在疯狂发数据,立刻查杀。
不要轻易重启服务器。
重启后所有临时流量记录丢失,恢复后可能又开始跑满。
先定位再到处理。
效果验证:怎么确认找到真凶了?
找到可疑 IP 或进程后,做两步验证:
- 临时用
iptables -A INPUT -s 可疑IP -j DROP或宝塔面板“防火墙”直接封掉该 IP。 - 观察宝塔流量图或 iftop 曲线,如果带宽瞬间下降,说明定位正确。如果不是,继续查找下一个高流量 IP。
对于进程异常的情况,先 kill 进程(记得记录 PID),再用 top 看是否立即重启。
如果不重启,大概率是独立恶意文件;
如果重启,要检查 crontab 和启动项。
高频问题解答
Q:ifxop 显示很多连接,分不清哪个是异常? A:看连接状态。
大量 TIME_WAIT 是正常断开,如果大量 ESTABLISHED 且集中在同一 IP,大概率异常。
Q:宝塔流量图和 iftou 数据对不上? A:宝塔统计的是整个网卡流量,iftop 过滤后可能有误差,以宝塔为准。
Q:按步骤查了,带宽还是满的? A:注意是否有多张网卡。
用 ip a 查看所有网卡,对每个网卡分别跑 iftop。
有时内网 IP 也在占用带宽。
如果你正在处理服务器带宽跑满的问题,建议从 iftop 开始,配合 nethogs 和日志逐步缩小范围。
找到源头后再决定是限速、封禁还是升级带宽。
遇到异常情况多回看上方避坑说明,能少走很多弯路。