You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04.4 LTS下tc命令无法限制下载速度的问题咨询

Ubuntu 20.04.4 LTS下tc命令无法限制下载速度的问题咨询

你好!我看到你在Ubuntu 20.04.4 LTS上尝试用tc命令给特定IP(10.0.0.162)设置上传和下载带宽限制,但目前只有上传限制生效,下载流量没受影响,还疑惑是不是下载限制和Linux版本有关。咱们来拆解这个问题:

先说说你当前配置的问题核心

tc对上传和下载流量的处理逻辑是不一样的:

  • 上传流量是从你的机器发出去的,直接在网卡的出口(egress) 规则里处理,你之前的上传限制配置是对的,所以能生效;
  • 下载流量是从网卡接收进来的,默认的root qdisc只处理出口流量,你之前把下载限制的规则挂在出口root下,自然不会对入口的下载流量生效。

关于Linux版本的疑问

先给你吃个定心丸:Ubuntu 20.04.4 LTS的默认内核(5.4.x系列)完全支持tc的入口流量控制功能,下载限制失效和系统版本没关系,只是配置逻辑没走对。

给你修正后的完整配置步骤

先清理掉现有规则避免冲突:

sudo tc qdisc del dev ens33 root
sudo tc qdisc del dev ens33 ingress

1. 配置上传(出口)带宽限制

这部分和你原来的逻辑一致,稍作优化:

# 给ens33添加root级别的htb qdisc
sudo tc qdisc add dev ens33 root handle 1: htb default 10

# 添加针对目标IP 10.0.0.162的上传限制类(1Mbit)
sudo tc class add dev ens33 parent 1: classid 1:12 htb rate 1Mbit

# 添加过滤规则,把发往10.0.0.162的流量导向限制类
sudo tc filter add dev ens33 protocol ip parent 1: prio 1 u32 match ip dst 10.0.0.162 flowid 1:12

2. 配置下载(入口)带宽限制

入口流量需要借助ifb虚拟网卡来实现(因为htb无法直接在入口qdisc上使用),步骤如下:

# 加载ifb内核模块,创建1个虚拟网卡
sudo modprobe ifb numifbs=1

# 启动ifb0虚拟网卡
sudo ip link set dev ifb0 up

# 给ens33添加入口qdisc,用来捕获下载流量
sudo tc qdisc add dev ens33 ingress handle ffff:

# 添加过滤规则,把来自10.0.0.162的下载流量重定向到ifb0
sudo tc filter add dev ens33 parent ffff: protocol ip prio 1 u32 match ip src 10.0.0.162 action mirred egress redirect dev ifb0

# 在ifb0上添加root级别的htb qdisc,处理重定向过来的流量
sudo tc qdisc add dev ifb0 root handle 1: htb default 10

# 添加下载限制类(1Mbit)
sudo tc class add dev ifb0 parent 1: classid 1:13 htb rate 1Mbit

# 添加过滤规则,把ifb0上的所有流量导向限制类(因为已经是重定向过来的目标流量了)
sudo tc filter add dev ifb0 protocol ip parent 1: prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:13

配置完成后,你再测试和10.0.0.162之间的上传、下载速度,应该都能被限制在1Mbit左右了。

备注:内容来源于stack exchange,提问作者Jakob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:18:15