利用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