最近在研究网络,发现网上没有很好的端口级的限速,下面分享的代码是用于在 Linux 系统中对网络流量进行带宽限制,具体流量从 eth0 接口发出、源端口为 7003 的 TCP 流量,将其带宽限制为 512 kbit/s。以下是解释:
tc qdisc del dev eth0 rooteth0 接口上的根队列规则(qdisc),主要用来删除原来配置。tc qdisc add dev eth0 root handle 1: htb default 1eth0 接口上添加一个 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 512kBit1:(根队列)下创建一个子类 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:1fw)为 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 1OUTPUT 链的 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 删除。