服务器带宽被占用,教你限制用户上传下载速度

VPS 或云服务器的带宽被单个用户跑满,网站变慢、SSH 卡顿,很多时候是因为没有对用户的上传下载速度做限制。
下面我分两种场景——有宝塔面板和无面板的纯净 Linux 环境——给你一套可以直接照做的限速方案。

准备工作

操作前确认三件事:

  1. 你拥有服务器的 root 权限或 sudo 权限。
  2. 如果使用宝塔面板,确保面板版本 ≥ 7.9(旧版可能缺少限速功能)。
  3. 知道要限制的用户 IP 或端口(比如 Web 服务的 80/443 端口)。

方法一:宝塔面板限速(适合新手)

如果你安装了宝塔面板,限制上传下载速度非常简单:

  1. 登录宝塔面板,进入左侧 网站 列表。
  2. 找到需要限速的网站,点击 设置
  3. 切换到 流量限制 标签页。
  4. 勾选 启用流量限制,分别设置 上行速度(上传)下行速度(下载),单位是 KB/s。例如填 1024 代表限制为 1MB/s。
  5. 点击保存。
说明:宝塔的限速基于 Nginx 的 limit_rate,只对当前网站生效,不会影响其他服务。

方法二:Linux 命令行限速(通用性强)

如果服务器没有面板,或者你想对特定 IP 做更精细的控制,推荐使用 Linux 自带的 tc(Traffic Control)命令。
以下步骤在 CentOS 7/8、Ubuntu 20.04+ 上均测试通过。

步骤1:查看当前网卡名称

ip link show

一般叫 eth0ens33enp1s0
记下你要限速的网卡名,下面假设为 eth0

步骤2:创建根队列规则(htb)

tc qdisc add dev eth0 root handle 1: htb default 30

步骤3:创建一个限速类

限制总带宽为 10Mbps(上传/下载分别控制):

# 限制下载速度 10Mbps(约 1250KB/s)
tc class add dev eth0 parent 1: classid 1:10 htb rate 10mbit

# 限制上传速度 5Mbps(约 625KB/s)
tc class add dev eth0 parent 1: classid 1:20 htb rate 5mbit

步骤4:将指定的 IP 流量匹配到限速类

假如要限制 IP 192.168.1.100 的上传与下载:

# 下载方向(从服务器发往该 IP 的流量)
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.1.100 flowid 1:10

# 上传方向(从该 IP 发往服务器的流量)
tc filter add dev eth0 parent 1: protocol ip prio 2 u32 match ip src 192.168.1.100 flowid 1:20
要限制整个网段,把 192.168.1.100 改成 192.168.1.0/24 即可。

步骤5:使规则持久化(可选)

tc 规则重启后会丢失。
将上面命令写入 /etc/rc.local(需先赋予执行权限)或 systemd 服务脚本。

避坑指南与高频问题

  • Q:限速后某些用户反而更卡了怎么办? 可能是速率设置得太低,先逐步提高阈值测试。对于网站流量,通常限制下载为业务带宽的 50% 较为合理。
  • Q:宝塔限速后不生效? 检查网站是否使用了 CDN(CDN 流量不经过源服务器),以及 Nginx 配置中是否有 proxy_pass 反向代理(需在代理目标上也加限速)。
  • Q:tc 命令报错“RTNETLINK answers: File exists” 说明规则已存在,先执行 tc qdisc del dev eth0 root 清除旧规则再重新添加。
  • 注意:tc 只对出站流量有效(服务器发出的数据),入站流量(上传到服务器)限制需要结合 iptablesifb 模块,初学者建议优先用宝塔面板。

效果验证

宝塔面板用户

在网站设置流量限制后,用浏览器下载站内一个文件,观察下载速度是否被限制在设定值附近。
也可以让朋友上传文件测试上行速度。

命令行用户

安装 speedtest-cliiperf3 进行测速。
例如:

yum install iperf3 -y   # CentOS
apt install iperf3 -y   # Ubuntu
# 服务端(被限速的机器)运行
iperf3 -s
# 客户端(另一台机器)运行
iperf3 -c 被限速服务器IP -t 10

观察输出中的带宽数值是否接近你设置的限制。

如果你正在处理服务器带宽被占用的问题,建议先尝试宝塔面板的快捷方案;
如果需求更复杂(如限制多 IP、动态限速),再切换到 tc 命令。
限速不要太激进,避免误伤正常用户,留出 10%-20% 余量给系统管理流量。

分享到:
上一篇
宝塔面板后台被篡改,教你重置管理员权限
下一篇
本地部署大模型,如何设置访问白名单?
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意