0

0

Linux网络限速配置_流量控制tc实践

冷炫風刃

冷炫風刃

发布时间:2026-03-04 15:29:08

|

201人浏览过

|

来源于php中文网

原创

linux下tc限速核心是控制出向流量,通过qdisc、class、filter协同实现;须作用于真实网卡,tbf适合单流限速,htb+filter可按ip差异化限速,注意方向与匹配逻辑。

linux网络限速配置_流量控制tc实践

Linux 下用 tc(traffic control)做网络限速,核心是控制出方向(egress)流量,本质是给网卡队列加调度策略。它不直接“堵”带宽,而是通过排队规则(qdisc)、分类(class)和过滤器(filter)协同实现带宽分配与限制。实际配置中,误用 qdisc 类型或忽略默认队列常导致限速无效。

先确认网卡和基础环境

限速只对出站流量生效(即本机发出去的数据),且必须作用于真实网卡(如 eth0、ens33),不能用于 lo 或虚拟接口(除非特殊场景)。操作前建议:

  • ip link show 确认目标网卡名及状态(UP)
  • 检查是否已有 tc 规则:tc qdisc show dev eth0,有输出说明已配置,需先清理再重试
  • 普通用户需 root 权限,所有 tc 命令建议加 sudo

最简限速:使用 tbf(Token Bucket Filter)

tbf 是入门首选,适合单一流量整体限速,原理直观、稳定性好,不涉及分类和过滤。例如将 eth0 出向带宽限制为 2Mbit/s,突发 5KB,延迟容忍 50ms:

sudo tc qdisc add dev eth0 root tbf rate 2mbit burst 5kb latency 50ms

说明:

  • rate 是平均速率,单位可写 kbit、mbit、kbit、mbps(注意大小写敏感)
  • burst 太小会导致小包频繁丢弃;太大则限速不严格;一般设为 rate / 10 左右较稳妥
  • 删除该规则:sudo tc qdisc del dev eth0 root

按源/目标 IP 限速:htb + filter 组合

需要差异化限速时(比如只限制某台客户端的上传速度),用 htb(hierarchical token bucket)建分层结构,配合 u32 或 cgroup 过滤器匹配流量。

炫图AI
炫图AI

全能AI修图神器,AI换装、修图、改图、P图

下载

示例:限制来自 192.168.1.100 的所有出向流量为 1Mbit/s:

# 1. 挂载根 htb qdisc
sudo tc qdisc add dev eth0 root handle 1: htb default 30
<h1>2. 创建主类(总带宽假设为物理上限,如 100mbit)</h1><p>sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit</p><h1>3. 创建子类,专用于 192.168.1.100,限速 1mbit</h1><p>sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit ceil 1mbit</p><h1>4. 添加过滤器,将源 IP 匹配到该类</h1><p>sudo tc filter add dev eth0 parent 1: protocol ip u32 match ip src 192.168.1.100 flowid 1:10

注意:

  • filter 中 match ip src 是匹配“本机发出、目的为该 IP”的流量?错——出向规则中,src 是本机 IP,dst 才是远端 IP。若想限速“本机发往 192.168.1.100”的流量,应写 match ip dst 192.168.1.100
  • 若要限速“从 192.168.1.100 连入本机的请求”,那是入向(ingress),需用 ifb 模块重定向,不能直接在 eth0 上用 tc out 方式实现

验证与排错要点

限速后没效果?常见原因:

  • 规则加在了错误方向:tc 默认只控 egress,ssh 登录慢通常是入向问题,需另想办法(如防火墙限速或应用层控制)
  • 应用使用了多连接(如下载工具开 10 线程),而规则未做连接追踪,结果每个流都跑满子带宽 → 应改用 sfq 或 fq_codel 配合 htb 做公平排队
  • 测试方式不当:用 iperf3 -c server 测的是本机到服务器的出向,但若服务器不在同一局域网,中间链路可能成为瓶颈,建议本地局域网对测
  • 查看实时效果:tc -s class show dev eth0 可看到各 class 的 sent 字节数、dropped 数、rate 实际值

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6512

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

840

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1088

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1836

2024.03.01

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1800

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

572

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2340

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.19

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

4

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.1万人学习

Git 教程
Git 教程

共21课时 | 4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号