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如何限制网卡的速率和带宽

查看和删除限速规则

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

Designify Designify

拖入图片便可自动去除背景✨

Designify 90 查看详情 Designify
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如何限制网卡的速率和带宽的详细内容,更多请关注其它相关文章!

本文转自网络,如有侵权请联系客服删除。