Loading... 假设 eth0 位是服务器的外网网络接口.开始之前,先要清除 eth0所有队列规则 tc qdisc del dev eth0 root 2> /dev/null > /dev/null 单位换算 这个有必要说明一下。网速统计中的几个单位的换算。 KB/s PK Kbps kbps 中的 p 是per的缩写,意思就是“每”。 kbps = kb/s KB/s 中的 B 是 Byte (字节数) kb/s 中的 b 是 bit (位数) 计算机中 1Byte = 8bit 所以 1KB/s = 8kbps = 8kb/s 一般安装宽带讲的 20M 其实就是 20Mbps = 20Mb/s = (20/8) MB/s 同样,购买服务器的时候,商家说的100M带宽也是 100Mbps。 Kbit 又是什么鬼? Kbit KB 输入一种计量单位。 1KB = 8Kbit 为什么有这些内容? 因为下面涉及到了。所以简单的说一下。 网络上行/下行 基础知识提一下,大佬可跳过。 最简单的解释: 上行 就是上传速度。 下行 就是下载速度。 一般家用网络,一般注重的是下行速度。 一般服务器网络,注重的是上行速度。 端口限速 我们只说端口限速。 演示的外网的网卡是 eth0 。 执行以下命令,请替换你自己的外网网卡名称。 1) 清理工作。 清理一下iptables Mangle规则。 ``` iptables -t mangle -F ``` 清理一下eth0上原有的队列类型。 ``` tc qdisc del dev eth0 root ``` ------------------------------- 2)限制上行网速 1.给eth0添加一个根规则。PS : 这里的root非root账号的意思。 ``` tc qdisc add dev eth0 root handle 1: htb default 1 ``` 2.创建根类。 100mbps 可以替换成你自己服务器的实际带宽。 ``` tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbps ``` 3.创建支类限速。 ``` tc class add dev eth0 parent 1:1 classid 1:5 htb rate 1500Kbit ceil 2048Kbit prio 1 ``` rate 1500Kbit 代表最大带宽1536Kbit/s,改成你想要的带宽大小即可。 ceil 2048Kbit 代表突发带宽2048Kbit/s。 ceil >= rate 1:5 意思是每5秒钟检查一次。 4.创建过滤器。 ``` tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 5 fw flowid 1:5 ``` 这里要注意的就是flowid 要和上一条的 classid对应起来。 ------------------------------- 3)借助iptables针对端口限速 如何限制多个端口? ``` iptables -A OUTPUT -p tcp -m multiport --sports 80,443 -j MARK --set-mark 5 ``` 如何限制10000-20000端口段? ``` iptables -A OUTPUT -p tcp -m tcp --sport 20001:29999 -j MARK --set-mark 5 ``` ``` iptables -A OUTPUT -p udp -m udp --sport 20001:29999 -j MARK --set-mark 5 ``` 最后修改:2017 年 11 月 03 日 © 允许规范转载 打赏 赞赏作者 赞 如果觉得我的文章对你有用,请随意赞赏
1 条评论
大神,请问如何限制下行速率