Linux如何限制网卡的速率和带宽

使用tc命令结合htb可限制Linux网卡出站带宽,如将eth0上传限速至1Mbps;通过ifb设备间接限制入站流量,实现下载限速;也可用wondershaper简化操作。

Linux如何限制网卡的速率和带宽

在Linux系统中限制网卡的速率和带宽,通常使用

tc

(Traffic Control)命令结合

htb

(Hierarchical Token Bucket)队列规则来实现。这种方法可以精细控制网络接口的上传和下载速度,适用于测试环境、带宽管理或防止某个服务占用过多网络资源。

使用tc命令限制网卡出站带宽(上传)

限制从本机发出的数据速率(即上传速度),可以通过在指定网卡上设置

htb

规则来完成。

例如:将

eth0

网卡的出站带宽限制为1Mbps。

 tc qdisc add dev eth0 root handle 1: htb default 10 tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit 

说明:

  • qdisc add

    添加一个队列规则,

    root

    表示作用于网卡根队列。

  • handle 1:

    是该队列的标识符。

  • htb

    是常用的可控制带宽的队列类型。

  • classid 1:1

    定义一个类,限制速率为1mbit(即1Mbps)。

如果规则已存在,需要先清除:

 tc qdisc del dev eth0 root 

Linux如何限制网卡的速率和带宽

限制入站带宽(下载)的技巧

tc

不能直接限制入站流量(inbound),因为数据在进入网卡后才被系统控制。但可以通过

ifb

(Intermediate Functional Block)设备来间接实现。

步骤如下:

  1. 加载
    ifb

    模块并创建虚拟设备:

 modprobe ifb ip link add name ifb0 type ifb ip link set ifb0 up 

  1. 将入口流量重定向到
    ifb0

 tc qdisc add dev eth0 ingress tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0 

  1. ifb0

    上设置限速规则(如限制为512kbps):

 tc qdisc add dev ifb0 root handle 1: htb tc class add dev ifb0 parent 1: classid 1:1 htb rate 512kbit 

Linux如何限制网卡的速率和带宽

查看和删除限速规则

查看当前网卡的队列规则:

Linux如何限制网卡的速率和带宽

有道翻译AI助手

有道翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译、网页翻译、文档翻译、PDF翻

Linux如何限制网卡的速率和带宽70

查看详情 Linux如何限制网卡的速率和带宽

 tc qdisc show dev eth0 tc class show dev eth0 

删除所有规则(恢复原始状态):

 tc qdisc del dev eth0 root tc qdisc del dev eth0 ingress tc qdisc del dev ifb0 root ip link del ifb0 

Linux如何限制网卡的速率和带宽

使用工具简化操作(可选)

也可以使用更简单的工具

wondershaper

,适合快速上手。

安装(以Ubuntu为例):

 sudo apt install wondershaper 

限制

eth0

上传1000kbps,下载500kbps:

 wondershaper eth0 1000 500 

清除限制:

 wondershaper clear eth0 

基本上就这些。使用

tc

能更灵活地控制网络流量,而

wondershaper

适合快速部署简单限速策略。

linux ubuntu 工具 linux系统 red Token 标识符 接口 linux ubuntu

上一篇
下一篇