最近在研究网络,发现网上没有很好的端口级的限速,下面分享的代码是用于在 Linux 系统中对网络流量进行带宽限制,具体流量从 eth0
接口发出、源端口为 7003
的 TCP 流量,将其带宽限制为 512 kbit/s。以下是解释:
tc qdisc del dev eth0 root
eth0
接口上的根队列规则(qdisc
),主要用来删除原来配置。tc qdisc add dev eth0 root handle 1: htb default 1
eth0
接口上添加一个 HTB(Hierarchical Token Bucket) 队列规则。handle 1:
:标识该队列规则的句柄为 1:
。default 1
:未分类的流量默认发送到类 1:1
。1:1
,后续所有未明确分类的流量会进入该类。tc class add dev eth0 parent 1: classid 1:1 htb rate 512kBit
1:
(根队列)下创建一个子类 1:1
,并限制其带宽为 512 kbit/s。parent 1:
:父队列为根队列 1:
。classid 1:1
:子类的唯一标识符。rate 512kBit
:限制该类的带宽为 512 kbit/s。tc filter add dev eth0 parent 1:0 protocol ip handle 1 fw flowid 1:1
fw
)为 1
的 IP 流量分类到 1:1
类。parent 1:0
:过滤器附加到根队列(1:
的另一种写法)。handle 1
:过滤器的标识符。fw
:匹配防火墙标记。flowid 1:1
:匹配的流量导向类 1:1
。iptables
标记的流量(后文)会被此过滤器识别并限速。iptables -A OUTPUT -t mangle -p tcp --sport 7003 -j MARK --set-mark 1
OUTPUT
链的 mangle
表中,对源端口为 7003
的 TCP 流量打上标记 1
。-t mangle
:修改数据包属性(如标记)。--sport 7003
:匹配源端口为 7003
的流量。--set-mark 1
:为匹配的流量设置标记 1
。tc filter
识别并分类到限速类 1:1
。1
的流量导向 1:1
,其他流量进入 1:2
。eth0
接口的现有流量控制规则。1:1
。1:1
限制带宽为 512 kbit/s。1
,将特定流量(源端口 7003
)导向限速类。iptables
标记目标流量。通过以上配置,系统会将源端口 7003
的 TCP 流量限制为 512 kbit/s,而其他流量不受此限制。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。