利用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 2Mbit ceil 2Mbit prio 1
tc class add dev eth0 parent 1:1 classid 1:3 htb rate 2mbit ceil 2mbit 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
Last modification:May 21, 2022
如果觉得我的文章对你有用,请随意赞赏