Linux系统网络限速

在Ubuntu系统中,可以通过tc命令来限制网络速度,如将eth0接口速度限制为100K。首先确保安装了iproute2包,然后创建网络接口和类别,设置速率限制,最后关联接口和类别。测试限速效果可使用speedtest-cli或iperf3工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要将 Ubuntu 系统中的网络速度限制为 100K,可以使用 tc 命令(Traffic Control 的缩写)来实现。具体步骤如下:

1.确认系统已经安装了 iproute2 包,如果没有可以使用以下命令进行安装

sudo apt-get install iproute2

2.打开终端,使用以下命令创建一个名为 eth0 的网络接口:

sudo ip link set dev eth0 up

注意,如果系统中的网卡名称不是 eth0,请将命令中的 eth0 替换为实际的网卡名称

3.使用以下命令创建一个名为 htb1 的类别:

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

4.使用以下命令创建一个名为 htb2 的子类别:

sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbit ceil 100kbit

5.使用以下命令将 htb2 类别与 eth0 网络接口关联:

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

完成以上步骤后,网络接口 eth0 的上传和下载速度都将被限制为 100K。如果需要取消限制,可以使用以下命令:

sudo tc qdisc del dev eth0 root

可以使用一些网速测试工具来测试限速效果,例如:

  1. speedtest-cli:使用命令sudo apt install speedtest-cli安装后,在终端输入speedtest-cli即可测试当前网络的带宽情况。

  2. iperf:使用命令sudo apt install iperf3安装后,在终端输入iperf -c 服务器地址 -t 测试时间 -i 测试间隔即可进行带宽测试。例如,测试 10 秒钟,每隔 1 秒钟输出一次结果:

    iperf3 -c %s -p 18888 -i 1 在限速后再次执行这个命令,可以对比限速前后的带宽表现。需要注意,使用iperf3时,服务端和客户端都需要启动iperf3

  3. 服务端需要启动iperf3,才能和客户端一起检测带宽:iperf3 -s -p 18888

crt@crt-ThinkBook-14-G3-ITL:~$ 
crt@crt-ThinkBook-14-G3-ITL:~$ iperf3 -c 172.20.20.117 -p 18888 -i 1
Connecting to host 172.20.20.117, port 18888
[  4] local 172.20.20.202 port 51334 connected to 172.20.20.117 port 18888
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  4.29 MBytes  36.0 Mbits/sec    2    107 KBytes       
[  4]   1.00-2.00   sec  5.84 MBytes  49.0 Mbits/sec    3    165 KBytes       
[  4]   2.00-3.00   sec  4.16 MBytes  34.9 Mbits/sec    7    165 KBytes       
[  4]   3.00-4.00   sec  1.91 MBytes  16.0 Mbits/sec    9    165 KBytes       
[  4]   4.00-5.00   sec  5.96 MBytes  50.0 Mbits/sec    6    165 KBytes       
[  4]   5.00-6.00   sec  4.86 MBytes  40.7 Mbits/sec    8    165 KBytes       
[  4]   6.00-7.00   sec  4.48 MBytes  37.6 Mbits/sec    5    165 KBytes       
[  4]   7.00-8.00   sec  7.91 MBytes  66.3 Mbits/sec    6    165 KBytes       
[  4]   8.00-9.00   sec  4.66 MBytes  39.0 Mbits/sec    6    165 KBytes       
[  4]   9.00-10.00  sec  1.73 MBytes  14.5 Mbits/sec    0   96.2 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  45.8 MBytes  38.4 Mbits/sec   52             sender
[  4]   0.00-10.00  sec  45.5 MBytes  38.1 Mbits/sec                  receiver

iperf Done.
### 使用 `tc` 命令配置网口限速网络管理中,有时需要对特定网络接口实施流量控制和限速措施。这可以通过 Linux 提供的强大工具——`tc` (Traffic Control) 来完成。该命令允许管理员精确地调整进出系统的数据包处理方式。 #### 配置基本带宽限制 为了设置一个简单的带宽限制,在指定的网络接口上应用 CBQ(Class Based Queueing) 或 HTB(Hierarchical Token Bucket) 类型的队列调度器是一个常见做法: ```bash # 清除现有规则以防冲突 sudo tc qdisc del dev eth0 root # 添加根队列并设定总带宽上限为1Mbps sudo tc qdisc add dev eth0 root handle 1: htb default 10 # 定义默认类别的最大传输速率 sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 1mbit ceil 1mbit ``` 上述操作会将名为 `eth0` 的网络设备出口流量限制到每秒不超过 1Mb[^2]。 #### 对不同 IP 地址或子网施加差异化服务 当希望针对不同的目标地址范围提供差异化的服务质量时,则可以进一步细化策略: ```bash # 创建一个新的类别用于特殊IP段的数据流 sudo tc class add dev eth0 parent 1: classid 1:11 htb rate 512kbit ceil 1mbit prio 1 quantum 1500 # 将来自某特定源IP(如192.168.1.100)的数据映射至新创建的类别 sudo tc filter add dev eth0 protocol ip parent 1: u32 match ip src 192.168.1.100 flowid 1:11 ``` 这段脚本实现了对于源自 `192.168.1.100` 主机发出的所有请求给予最高优先级的同时将其速度限定在 512Kbps 到 1Mbps 之间[^3]。 #### 实现更复杂的流量整形方案 除了以上基础功能外,还可以利用 TBF(Token Bucket Filter), SFQ(Stochastic Fairness Queuing) 等高级特性构建更为复杂精细的流量控制系统;也可以结合其他软件如 `iptables`, `nftables` 进行深层次定制化开发以满足实际需求[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值