文章总结: 本文详细介绍Linux流量控制工具TC的实战应用,重点讲解如何使用TBF队列规则设置出口带宽上限至100Mbps,并进阶介绍HTB分层管理方法。文档提供完整配置命令、参数说明及监控调优建议,同时强调配置持久化和权限注意事项,帮助用户实现精细化的网络流量管控。 综合评分: 78 文章分类: 技术标准,解决方案,安全工具,安全运营,其他
tc工具实战:5分钟设置带宽上限,从此告别网络拥堵
原创
刘军军 刘军军
运维星火燎原
2026年4月24日 00:16 山西
在小说阅读器读本章
去阅读
今天我要聊的,就是Linux内核里那个让无数新手望而生畏,但一旦学会就能让你“起死回生”的神器——TC。
别被它的名字吓到了,它全称叫 Traffic Control。这玩意儿绝不仅仅是个简单的“限速”开关,它更像是你服务器网卡上的“空中交通管制塔”。
跟那些在应用层“打补丁”式的限速方案不同,TC 工作在内核网络栈的最底层。这意味着什么?意味着你可以像做外科手术一样,用极高的效率、极细的粒度,对数据包进行整形、调度和过滤。
我知道,一提到 TC 的队列规则、分类和过滤器,很多人头都大了。但别怕,今天咱们不整那些晦涩的理论。我将直接带你进入5个最真实的“救火”现场,手把手教你如何把这头“流量猛兽”关进笼子里,让你的带宽分配从此由你说了算!
方案选择
对于设置出口总带宽上限,最适合的队列规则是 TBF (Token Bucket Filter),它能有效地限制带宽并平滑流量。
01
配置步骤
1. 查看当前网络接口
ip link show
2. 清除现有规则(如果有)
tc qdisc del dev eth0 root 2>/dev/null || true
3. 设置带宽上限
# 假设服务器出口接口为 eth0,设置总带宽上限为 100Mbps
tc qdisc add dev eth0 root tbf rate 100mbit burst 1mbit latency 40ms
参数说明:
rate:限制的带宽上限(这里设置为 100Mbps)burst:允许的突发流量(通常设置为 1-10% 的带宽)latency:数据包在队列中的最大延迟时间
4. 验证配置
tc qdisc show dev eth0
02
高级配置:分层带宽管理
如果需要更精细的带宽管理,可以使用 HTB (Hierarchical Token Bucket):
# 创建根队列
tc qdisc add dev eth0 root handle 1: htb default 10
# 创建主分类,设置总带宽上限
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
# 创建默认子类
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 90mbit ceil 100mbit
# 为关键服务预留带宽
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 10mbit ceil 20mbit
03
监控与调优
监控带宽使用
# 使用 iftop 监控实时带宽
iftop -i eth0
# 或使用 nload
nload eth0
调优建议
- 根据实际需求调整带宽值:根据服务器的实际带宽和业务需求设置合理的上限
- 测试不同的 burst 值:根据流量特性调整突发值,平衡延迟和吞吐量
- 监控网络性能:设置后观察服务器响应时间和网络稳定性
- 逐步调整:从保守值开始,逐步调整到最佳配置
04
注意事项
- 权限要求:
tc命令需要 root 权限执行 - 接口选择:确保选择正确的出口网络接口
- 服务影响:设置带宽上限可能会影响服务器的网络性能,需在低峰期进行配置
- 配置持久化:上述配置在重启后会丢失,需要添加到启动脚本中
- 合理设置:带宽上限应略低于实际物理带宽,预留一定余量
05
配置持久化
将配置命令添加到网络启动脚本中,例如:
- Debian/Ubuntu:
/etc/network/interfaces - CentOS/RHEL:
/etc/sysconfig/network-scripts/ifcfg-eth0
或创建专门的启动脚本:
#!/bin/bash
# /etc/init.d/bandwidth-limit
case "$1"in
start)
tc qdisc add dev eth0 root tbf rate 100mbit burst 1mbit latency 40ms
;;
stop)
tc qdisc del dev eth0 root 2>/dev/null || true
;;
*)
echo"Usage: $0 {start|stop}"
exit1
;;
esac
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:运维星火燎原 刘军军 刘军军《tc工具实战:5分钟设置带宽上限,从此告别网络拥堵》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论