利用iptables和tc对端口限速

注意:对于iptables端口转发无效

系统环境

一般CentOS系统会自带 iptables 和 tc

iptables -V
tc -V

如果没有安装,请自行yum 安装即可。
查看网卡

ip addr

清理工作

清理一下iptables Mangle规则。

iptables -t mangle -F

清理一下eth0上原有的队列类型。

tc qdisc del dev eth0 root

限制上行网速

给eth0添加一个根规则。PS : 这里的root非root账号的意思。

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

创建根类。 500mbps可以替换成你自己服务器的实际带宽。

tc class add dev eth0 parent 1: classid 1:1 htb rate 500mbps

创建支类限速。

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 80Mbit ceil 120Mbit prio 1
tc class add dev eth0 parent 1:1 classid 1:3 htb rate 180mbit ceil 200mbit prio 1
##一条代表一个规则,示例,以此类推

rate 100Mbit 代表保证带宽
ceil 120mbit 代表最大带宽
ceil 需要大于等于 rate

创建过滤器

tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 2 fw flowid 1:2
tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 3 fw flowid 1:3
##一条代表一个规则,示例,以此类推

这里要注意的就是flowid 要和上一条的 classid对应起来。

借助iptables针对80端口限速

iptables -A OUTPUT -t mangle -p tcp --sport 80 -j MARK --set-mark 2
iptables -A OUTPUT -t mangle -p tcp --sport 443 -j MARK --set-mark 3
##一条代表一个规则,示例,以此类推

这样就对 80 端口限制了速度了。

限制10000-20000端口

iptables -A OUTPUT -t mangle -p tcp --sport 10000:20000 -j MARK --set-mark 2

解除限速执行清理工作即可

相关命令

简单显示分类状况

tc class ls dev eth0

详细显示分类状况

tc -s qdisc ls dev eth0

显示过滤器的状况:

tc -s filter ls dev eth0

文章来源:如有乐享

最后修改:2021 年 07 月 31 日 06 : 57 PM