linux 限制网卡出口带宽需用 tc 配合 htb 流量整形,先清空原有规则,再添加根 qdisc、主类和子类设定速率上下限,支持按 ip 或端口精细过滤,验证用 tc show 命令,关闭限速执行 tc qdisc del。

Linux 限制指定网卡的最高带宽速率,核心是使用 tc(traffic control) 配合 HTB(Hierarchical Token Bucket) 或 CBQ 等队列规则。它不直接“限速”,而是通过流量整形(shaping)控制出方向(egress)数据流的发送节奏。注意:tc 默认只控制本机发出的流量(即网卡的出口方向),对进入(ingress)流量需借助 ifb 模块或使用更复杂的方案。
确认网卡名并清空原有规则
先查目标网卡名(如 eth0、ens33、enp0s3):
ip -br link | grep UP为避免冲突,先清除该网卡已有的 qdisc(队列规则):
sudo tc qdisc del dev eth0 root 2>/dev/null若提示“No such device”或“No qdisc on device”,说明原本无规则,可忽略。
用 tc + HTB 设置出口带宽上限
例如将 eth0 出口总带宽限制为 50Mbps(即 50000 kbit/s),并保证最低保障带宽为 10Mbps:
- 添加根 qdisc(HTB 根类):sudo tc qdisc add dev eth0 root handle 1: htb default 30
- 添加主类(总带宽上限):sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 50000kbit ceil 50000kbit
- 添加子类(实际承载流量):sudo tc class add dev eth0 parent 1:1 classid 1:30 htb rate 10000kbit ceil 50000kbit prio 0
这样所有未特别匹配的出站流量都会走 class 1:30,被限制在 10–50 Mbps 区间内(最低保底 10M,峰值不超 50M)。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
按 IP 或端口进一步精细限速(可选)
如果只想限制某台服务器(如 192.168.1.100)的出向带宽,可在子类基础上加过滤器:
- 先创建专用类(比如限 5Mbps):sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 5000kbit ceil 5000kbit
- 添加 u32 过滤器匹配源 IP:sudo tc filter add dev eth0 parent 1: protocol ip u32 match ip src 192.168.1.100 flowid 1:20
支持匹配 dst(目标IP)、ip sport/dport(端口)、协议类型等,适合做服务级限速(如只限 nginx 的 80 端口出口)。
验证与临时关闭限速
查看当前规则:
sudo tc qdisc show dev eth0sudo tc class show dev eth0
sudo tc filter show dev eth0
临时关闭限速(清空 root qdisc):
sudo tc qdisc del dev eth0 root该操作立即生效,无需重启网络服务。










