Loading... linux下使用iptables和tc限制速度 linux下使用iptables和tc限制速度的方法,记录一下。假设本地搭建了PPTPD服务,又或者有多个网卡,需要对其中一些接口做限速处理的情况,非常有用,本文基于CentOS 6.4 64bit。 1,初始配置 yum install /sbin/tc vim /etc/sysctl.conf 修改net.ipv4.ip_forward = 1 sysctl -p #清除原来的mangle表规则 iptables -t mangle -F #加载sch_htb模块 modprobe sch_htb echo “modprobe sch_htb” >> /etc/rc.local 2,TC限速设置 假设现在有两块网卡 eth0: xx.xx.xx.xx(外网的上网地址) eth1: 172.16.44.1(做为内网的网关) 下载限速 下载限速要在eth1上面做,判断数据包的目的地址来做限制。tc包括三部分:队列、类、过滤器。我使用了htb方式去限制速度,也可以使用cbq,但cbq配置比较复杂一点,而且据说性能没htb好。 #删除原来的tc规则队列 /sbin/tc qdisc del dev eth1 root #添加tc规则队列 /sbin/tc qdisc add dev eth1 root handle 10: htb default 256 #生成根类 /sbin/tc class add dev eth1 parent 10: classid 10:1 htb rate 100mbit ceil 100mbit #支类列表用于限制速度 #这里的rate指的是保证带宽,ceil是最大带宽。 /sbin/tc class add dev eth1 parent 10:1 classid 10:10 htb rate 400kbps ceil 400kbps prio 1 #添加支类规则队列 #采用sfq伪随机队列,并且10秒重置一次散列函数。 /sbin/tc qdisc add dev eth1 parent 10:10 handle 101: sfq perturb 10 #建立网络包过滤器,设置fw。 /sbin/tc filter add dev eth1 parent 10: protocol ip prio 10 handle 1 fw classid 10:10 在iptables里面设定mark值,与上面的handle值对应 iptables -t mangle -A POSTROUTING -d 172.16.44.130 -j MARK —set-mark 1 iptables -t mangle -A POSTROUTING -d 172.16.44.130 -j RETURN 通过上面的代码就可以限制172.16.44.130这台机子的下载速度到400kbps。 需要注意的是: 1,172.16.44.130也可以写成网段的形式,例如172.16.44.0/24 2,这里的kbps实际上就是KB/S(每秒千字节),另一个单位是kbit,这个才是每秒千比特。 上传限速 上传限速的原理其实跟下载的差不多,只不过限制的网卡不同,要在eth0上过滤来源地址去限制。 最后修改:2017 年 11 月 03 日 © 允许规范转载 打赏 赞赏作者 赞 如果觉得我的文章对你有用,请随意赞赏