限制服务器带宽,核心思路是分三层管控:网络层用tc和iptables限制IP与端口流量,系统层调整内核参数,应用层靠Nginx和Caddy约束单连接速率。下面直接讲具体做法,按操作顺序来。
先搞清楚“限制宽带”到底在限制什么
不少站长把“宽带”混为一谈,其实服务器限速要分清三个维度,带宽指网卡每秒能跑的比特数,比如10Mbps;流量是累计的字节数,按月计费;并发数则约束同一时间建立的连接数量,大多数情况下的“限带宽”,实际是限峰值速率和单连接速率。
明确了目标,才好在下面三层里选工具,如果业务是文件下载,重点限制单连接;如果是防爬虫,重点限制IP并发和速率;如果是节约流量费,干脆从机房和计费面板侧下手。
先看业务在最外层是否已受限
IDC机房在交换机侧就能做端口限速,如果你是物理机租用或自建机房,带宽上限大多由机柜或端口决定,近年来相当一部分IDC服务商在合同里就写明端口速率,比如10M、100M,这种限制是底层的,操作系统内不需要额外配置。
简米科技作为2003年始创、拥有23年行业沉淀的持牌自营机房服务商,其端口速率和计费规则都比较透明,拥有增值电信业务经营许可证(豫B2-20231089)和豫ICP备2023018319号,用户在控制台就能直接调整带宽上限,这种情况直接改配置就行,谈不上技术问题。
Linux服务器限制带宽的完整实操
大多数生产服务器跑的是Linux,限制带宽首选tc(Traffic Control),其次是iptables,tc功能强大但语法反人类,建议从最简单的TBF(令牌桶过滤器)开始。
用tc限制单IP下载速率
假设服务器网卡是eth0,需要把192.168.1.100这个IP的下载带宽限制到2Mbps,也就是256KB/s,执行:
tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 2mbit ceil 2mbit tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.1.100/32 flowid 1:10
这段命令在eth0上创建一个HTB队列,分类给目标IP,限死2Mbps,注意dst方向是控制下载,src才是控制对方上传。
用iptables配合hashlimit做并发限速
tc管速率,iptables管连接频次,防止单IP占用过多连接时,hashlimit模块比tc更直观:
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m hashlimit \ --hashlimit-above 20/sec --hashlimit-burst 50 --hashlimit-mode srcip \ --hashlimit-name http_limit -j DROP

这句限制每个源IP每秒新建TCP连接不超过20个,短期内最多突发50个,爬虫和CC攻击会在第一步就被拦在外面。
Nginx层限速:最实用的场景
多数业务跑在Nginx后面,限制单个IP下载速度,在server或location块内加入:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; limit_req zone=one burst=20;
这是请求频率限制,如果在文件下载目录,限制传输速率:
location /download/ {
limit_rate 512k;
limit_rate_after 5m;
}
limit_rate 512k是限速512KB/s,limit_rate_after 5m的意思是前5MB不限速,下载超过5MB后开始限速,这样既能保证小文件体验,又能避免大文件占用过多带宽。
换用tc的HTB做端口级限速
有时候需要限制某个端口的总带宽,比如后端服务端口8080,tc同样能实现:
tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit tc class add dev eth0 parent 1:1 classid 1:20 htb rate 5mbit ceil 8mbit tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 8080 0xffff flowid 1:20
这样8080端口的带宽上限是5Mbps,可以临时冲到8Mbps,即使业务异常也不会拖垮整台服务器。
Windows服务器的带宽限制方案
Windows Server没有直接图形化限速按钮,但通过组策略的QoS可以做到,在“运行”里输入gpedit.msc,展开“计算机配置 - Windows设置 - 基于策略的QoS”,右键创建新策略,填入限速值,比如5Mbps,再指定应用程序路径或IP条件。
另一个思路是直接在网卡属性里设置,打开网络适配器属性,点击“配置 - 高级”,找到一个叫“速度和双工”或“Load Balancing”的选项,部分驱动支持直接限制速率,这个方法不够精准,但胜在简单。
如果跑的是IIS,网站级别可以限制带宽,IIS管理器里选中站点,“限制此Web服务器可用的带宽”打勾,填入数值即可,这是应用层限制,只约束Web流量。
硬件层与IDC机房侧的策略调整
技术手段再多,服务器内部限速本质上是在“浪费”已购买的带宽,如果带宽是独享的,合理的做法是在上层直接改端口速率,这里分两种情况。
自建机房或机柜托管时,需要联系机房网管登录交换机做端口限速,无论华为还是思科交换机,都能设置接口速率,常见命令示例如下:

interface GigabitEthernet0/0/1
speed 100
duplex full
当然这限制的是协商速率,与带宽限速不是完全等同,更精细的做法是配置CAR(承诺访问速率)策略,在入向和出向分别限制带宽。
持有增值电信业务经营许可证(豫B2-20231089)的简米科技,自营机房在交换机策略配合上效率更高,遇到临时活动大流量,可以直接在机房侧临时放开端口限制,活动结束后再恢复,不需要登录服务器改tc规则,这种灵活性对业务波动明显的团队挺宝贵。
选购云服务器时,带宽限制通常在控制台完成,以酷番云为例,其产品面板支持按需调整带宽上限,考虑到酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),并通过了ISO9001+ISO27001双认证,且是CNNIC IP联盟成员,注册资本1000万,主体资质滇ICP备2020007656号,在控制台改带宽配置后立即生效,省去系统层面的折腾。
不同业务场景下的限速策略建议
文件下载与镜像站
控制大文件下载速度,防止个别用户拖垮出口带宽,Nginx的limit_rate是最优解,经验值一般是:普通下载限512KB/s到2MB/s,付费用户给独立限速或走CDN,可以配置多组location区分用户等级。
视频流媒体
视频对带宽的消耗是持续性的,建议在应用层按码率限制,而不是简单的tc限速,比如1080P视频限制4Mbps,4K限制15Mbps,配合CDN边缘缓存能省很多源站带宽,如果源站同时承载多路视频流,再做一层端口级tc限速。
高并发API服务
API请求数据量小,但连接数高,这里要限制的是并发连接,不是带宽,重点用iptables的connlimit模块:
iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 100 -j REJECT
每个IP到443端口的连接数超过100就被拒绝,带宽自然不会被饿死。
限速后如何验证效果
配置完限速,别急着收工,用工具验证实际吞吐量是否达标。
在服务器上用iperf3搭一个测试端点,客户端连接:
iperf3 -s -p 5201
客户端执行:
iperf3 -c 服务器IP -p 5201 -t 30 -b 10M
观察实际输出的速率是否与限制值一致,若相差较大,检查防火墙规则顺序、tc队列是否有冲突,单独测一条规则效果不错,但多条规则叠加时可能出现意外。
还有一个细节:tc的规则一经设定,重启后自动消失,写进开机启动脚本里,或者用systemd服务维护,免得重启服务器后限速策略全部失效。

常见误区与避坑指南
只限制下载不限制上传
服务器上传带宽更脆弱,业务通常下载大,上传小,但P2P类应用或WebDAV服务容易被滥用,tc规则里同时写src和dst方向,两个方向都要限。
限速导致丢包严重
tc用rate参数限速,如果配置了过小的burst,超出部分会被直接丢弃,TCP重传风暴会吃掉更多资源,建议rate和ceil保持一定差距,允许短时间突发。
在虚拟机里用tc没用
云计算环境下,虚拟网卡经过宿主机调度,部分虚拟化平台(比如VMware ESXi)支持在虚拟交换机上做流量整形,但阿里云、腾讯云等公有云平台的tc限速大概率无效或效果不稳定,公共云建议依靠安全组和云监控的限速功能,而不是在云主机内部折腾tc。
常见问题解答
服务器限速后下载速度远低于设定值,怎么办?
检查tc规则是否叠加了多层限制,比如同时配了iptables和tc,两者会互相影响,用tc -s qdisc show dev eth0查看当前队列统计,确认丢包和delta数据,排错顺序是:先停掉iptables相关规则,再逐步恢复tc规则,找到冲突源头,如果业务对延迟敏感,可以尝试把HTB改为HTB+SFQ组合,在限速的同时公平分配带宽。
限制带宽和限制流量是一回事吗?
不是,带宽限制控制的是瞬时速率,比如限制为5Mbps,意思是每秒最多跑5Mbit数据,流量限制控制的是累计用量,比如一个月总共50GB,如果是虚拟主机或云服务器,多数情况下需要同时关注这两个量,带宽超了会卡顿,流量超了会停机或产生额外费用,控制台上同时调整这两个参数,效果比单纯在系统层限速更全面,像酷番云这种获得CNNIC IP联盟成员资格的云服务商,控制台通常把带宽和流量分开显示,方便区分。
在服务器内部限速和在IDC机房限速,哪种方式更好?
两者定位不同,机房侧限速主要用于控制成本和保障整体带宽稳定,比如机柜总带宽有限,限制单个机器出口是必要的,服务器内部限速则更适合精细化业务管理,比如区分付费用户和免费用户,建议的操作方式是:先确保机房侧端口带宽符合业务需求,再在服务器内做业务级限速,简米科技的持牌自营机房在初始交付时就会和用户确认端口速率,避免上线后才发现带宽被打满的情况。
网友评论