linux系统下通过tc命令实现对端口的限速,实用脚本

该博客介绍了如何通过Linux的tc工具来限制特定网卡的网络端口速率。首先获取网卡名称,然后设置限速规则,包括定义父级和子级策略,以及针对端口22和8080的流量限制。这个教程适用于系统管理员进行网络流量管理。

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

使用方法,创建.sh脚本文件,将以下内容复制到脚本文件中保存退出即可。

#!/bin/sh

#通过tc命令实现对端口的限速

#获取网卡名称
function ips(){
	local nics=$(route -n | grep ^0.0.0.0 | awk '{print $8}') 
	for nic in $nics
	do
	    local ip=$(ifconfig $nic | grep -E 'inet\s+' | sed -E -e 's/inet\s+\S+://g' | awk '{print $2}')
	    echo $nic
	done
}

#声明变量
MIN=10
MAX=15
CARDNAME=eth0



DATA=`ips`;
array=(${DATA});
echo "共有"${#array[@]}"个网卡";
for var in ${array[@]};
do
   CARDNAME=$var;
done

echo ${CARDNAME}


/sbin/tc qdisc del dev ${CARDNAME} root	   #先清空之前的规则
/sbin/tc qdisc add root dev ${CARDNAME} handle 1: htb default 4 #创建规则默认使用策略1.4
/sbin/tc class add dev ${CARDNAME} parent 1: classid 1:1 htb rate 1000mbit  #创建根策略,限速值1000M
/sbin/tc class add dev ${CARDNAME} parent 1:1 classid 1:2 htb rate ${MIN}mbit ceil ${MAX}mbps   #基于根策略创建子策略  并设置最大最小限速
/sbin/tc class add dev ${CARDNAME} parent 1:1 classid 1:3 htb rate ${MIN}mbit ceil ${MAX}mbps
/sbin/tc class add dev ${CARDNAME} parent 1:1 classid 1:4 htb rate 100mbit
/sbin/tc filter add dev ${CARDNAME} protocol ip parent 1:0 prio 1 u32 match ip sport 22 0xffff flowid 1:2  #将子策略绑定端口
/sbin/tc filter add dev ${CARDNAME} protocol ip parent 1:0 prio 1 u32 match ip sport 8080 0xffff flowid 1:3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值