当前位置:首页 > 行业动态 > 正文

如何在Linux系统中有效限制网络带宽?

在 linux 中,可以使用 tc 命令来限制带宽。 sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

Linux系统作为服务器操作系统,广泛应用于各种网络环境中,在实际应用中,经常需要对网络带宽进行限制,以确保资源的合理分配和使用,本文将详细介绍如何在Linux系统中使用tc命令和wondershaper工具来限制网络带宽。

一、使用tc命令限制带宽

1. 确认网络接口

需要确定要限制带宽的网络接口,可以使用以下命令列出系统中的所有网络接口:

ifconfig -a

ip addr

假设我们要限制的网络接口是eth0

2. 创建一个类别

使用tc命令为每个网络接口创建一个类别,类别用于定义带宽限制的规则,以下是创建一个名为eth0的类别的示例命令:

sudo tc qdisc add dev eth0 root handle 1: htb default 10

在上述命令中,eth0是要限制带宽的网络接口名称,1:是类别的标识符,可以根据需要更改。

3. 定义带宽限制

创建类别后,可以使用tc命令定义带宽限制,以下是限制带宽为10Mbit/s的示例命令:

sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 10Mbit/s

在上述命令中,eth0是要限制带宽的网络接口名称,1:是类别的标识符,1:1是带宽限制的类别ID,可以根据需要更改,10Mbit/s是带宽的限制值,可以根据需要更改。

4. 应用带宽限制

完成以上步骤后,需要使用tc命令应用带宽限制,以下是应用对eth0网络接口的带宽限制的示例命令:

sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 0.0.0.0/0 flowid 1:1

在上述命令中,eth0是要限制带宽的网络接口名称,1:0是类别的标识符,1:1是带宽限制的类别ID,0.0.0.0/0是要限制带宽的IP地址范围,可以根据需要更改。

二、使用wondershaper工具限制带宽

安装wondershaper

在Fdora或CentOS/RHEL(带有EPEL软件仓库)中安装wondershaper(版本到1.2):

yum install wondershaper

经二次开发的最新版本(最新为1.4),直接下载GitHub上的代码即可:

git clone https://github.com/magnific0/wondershaper.git
cd wondershaper

使用wondershaper

使用帮助:

./wondershaper -h

常用参数说明:

-a <adapter>:指定要限制的网卡名称或者接口名称

-d <rate>:最大下载速率,单位:Kbps

-u <rate>:最大上传速率,单位:Kbps

-c:清空所有规则,不再做任何限制

-s:显示接口的当前状态

例子:将eth0的最大下载/上传带宽分别设定为3072 kbps和2048 kbps

./wondershaper -a eth0 -d 3072 -u 2048

清空规则,不再限制带宽:

./wondershaper -a eth0 -c

三、FAQs

Q1:如何使用tc命令限制特定IP地址的带宽?

A1:可以通过创建过滤器来实现,以下命令可以限制来自特定IP地址的流量:

sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.1 flowid 1:1

在上述命令中,192.168.0.1是要限制的IP地址,可以根据需要更改。

Q2:如何取消已经设置的带宽限制?

A2:可以使用以下命令删除之前创建的类和过滤器:

tc filter del dev eth0 parent 1: protocol ip prio 1 u32 match ip src 192.168.0.1 flowid 1:1
tc class del dev eth0 parent 1: classid 1:1 htb rate 10Mbit/s

在上述命令中,eth0是要限制带宽的网络接口名称,1:是类别的标识符,1:1是带宽限制的类别ID,192.168.0.1是要限制带宽的IP地址,可以根据需要更改。

小伙伴们,上文介绍了“linux 限制带宽”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

0