大力出逗比

linux下使用iptables和tc限制速度
linux下使用iptables和tc限制速度 linux下使用iptables和tc限制速度的方法,记录一下。假...
扫描右侧二维码阅读全文
18
2017/01

linux下使用iptables和tc限制速度

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上过滤来源地址去限制。

Last modification:November 3rd, 2017 at 10:26 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment