服务器带宽跑满溯源异常流量:服务器带宽跑满怎么办?手把手教你
为什么服务器带宽会突然跑满?
服务器带宽跑满最直接的感觉就是网站打开慢、SSH连不上、远程桌面卡顿。
背后原因可能是遭遇DDoS攻击、CC攻击、恶意爬虫,也可能是服务器自身程序异常(比如被植入挖矿程序、日志泄露被反复读取)。
不管哪种情况,第一步都是快速定位异常流量来源,然后针对性处理。
本文面向零基础用户,用最简单的方式讲清操作步骤,你只需要一台能SSH登录的服务器(或宝塔面板),以及一点耐心。
准备:先确认带宽真的被占满
在动手之前,先用最简单的命令确认带宽状态。
登录服务器后执行:
ping -c 5 baidu.com
如果丢包率很高或者时延非常大,说明网络出口确实拥堵。
也可以用top看CPU和内存是否异常,排除服务器本身性能瓶颈。
确保你已经安装了常用网络工具,如果没有,执行以下命令安装:
# CentOS / Rocky / AlmaLinux
yum install -y epel-release
yum install -y iftop nethogs vnstat
# Ubuntu / Debian
apt update && apt install -y iftop nethogs vnstat
宝塔用户可以在软件商店搜索“宝塔运维工具”,里面集成了流量监控插件,但更推荐命令行工具,因为定位更精准。
核心操作:两步定位异常流量
第一步:用 iftop 查看实时带宽占用
iftop -i eth0 -P
说明:
-i eth0换成你的网卡名(可以用ip a查看,常见eth0、ens3、ens33)-P显示端口号,方便判断是哪个服务在占用流量
执行后你会看到一个实时列表,最顶行是总流量,下面每一行是一对IP的通信情况。
重点关注发送(TX)和接收(RX)都很大的IP,尤其是陌生IP。
按 n 可以切换域名/IP显示,按 q 退出。
如果发现有个IP在疯狂发数据给服务器的非标准端口(比如12345),多半是挖矿或后门。 记下这个IP和端口。
第二步:用 nethogs 定位具体进程
iftop只能看到IP和端口,看不到是哪个程序在跑流量。
这时用nethogs:
nethogs eth0
显示结果类似:
PID USER PROGRAM SENT RECEIVED
12345 root /usr/bin/.systemd-network 2.1 MB 0.1 MB
注意隐藏进程:很多恶意程序会伪装成系统进程名(如.systemd-network),PID 和进程路径都要检查。
记下异常PID和路径,后续处理。
如果找不到明显进程,说明流量可能是网络层攻击(如SYN Flood),需要用vnstat看历史流量趋势,配合防火墙日志分析。
进阶:查看防火墙连接统计
# 查看当前所有连接,按数量排序
tcpdump -i eth0 -nn port not 22 | awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -rn | head -20
这个命令会列出与服务器通信最多的IP,如果某个IP的连接数远超其他,很可能就是攻击源。
高频问题解答
Q1:iftop 或 nethogs 显示0流量,但带宽确实跑满,怎么回事?
A:可能是网卡名称不对,或者流量绕过监控(例如使用原始套接字)。改用bmon或ntopng试试,或者直接检查交换机端口流量。
Q2:发现是阿里云/腾讯云的内网IP在跑流量,需要处理吗?
A:内网IP比如10.x.x.x、172.x.x.x、192.168.x.x通常是同机房其他机器,如果你没有跨机器通信的需求,可以忽略;但如果流量异常大,可能是被攻击者利用作为跳板,建议联系云服务商排查。
Q3:找到了恶意IP,应该怎么封掉?
A:使用防火墙临时封禁:
# iptables(CentOS 7及以下)
iptables -A INPUT -s 恶意IP -j DROP
# firewalld(CentOS 7+)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="恶意IP" drop'
firewall-cmd --reload
# ufw(Ubuntu/Debian)
ufw deny from 恶意IP
宝塔用户可以在“安全” -> “防火墙”中添加IP规则。
Q4:进程是恶意程序,怎么清除?
A:先kill进程(kill -9 PID),然后找到对应的自启项:
systemctl list-units --type=service | grep 可疑名字
检查crontab(crontab -l)和开机脚本(/etc/rc.local),删除相关条目。
最后删除恶意文件。
避坑指南:这些操作千万别做
- 不要直接重启服务器:重启后流量仍然会回来,因为恶意程序可能写入crontab或systemd服务,重启后又复活。必须先清除后门。
- 不要盲目封禁整个IP段:如果攻击IP是CDN节点(如Cloudflare的IP段),封掉会导致网站无法访问。做封禁操作前先查IP归属。
- 不要忽略主机内安全:有时候带宽跑满是因为服务器被入侵后变为肉鸡,向外发动攻击。除了溯源外,还要检查SSH日志(
/var/log/auth.log)、修改弱密码、关闭不必要的端口。 - 不要只靠面板流量图:宝塔面板和云厂商控制台的流量监控是分钟级甚至5分钟级,无法实时看到哪个IP在跑流量。必须用命令行实时工具。
效果验证:确保问题真的解决
操作完成后,等待2-3分钟,重新用iftop观察流量情况:
iftop -i eth0 -P -t -s 10
如果总流量恢复到正常水平(比如之前是100Mbps,现在变成5Mbps),并且没有异常IP再出现,说明清理成功。
再测试网站访问:
curl -I 你的网站域名
响应正常,不再超时即可。
如果你是云服务器,建议在云平台安全组中启用流量清洗(如阿里云DDoS高防、腾讯云大禹),作为长期防护手段。
写在最后
服务器带宽跑满并不一定是攻击,也可能是正常业务突然暴涨。
但不管原因是什么,按照本文的iftop + nethogs两步法,先定位IP再定位进程,就能快速揪出异常流量。
遇到异常时优先回看避坑和高频问题部分,避免误操作。
只要动手试一次,下次遇到类似问题你也能从容应对。