防止局域网中有人大量下载,用mrtg及时发现问题,然后用ntop查处时谁在干坏事,把他的ip地址的数据包放到限制的通道里。避免影响其他人正常访问网络。开两个通道一个正常通道,一个限制通道!
内网:eth0
外网:eth2
NAT共享上网
[color=red:841a5dcdf1]关于参数的说明[/color:841a5dcdf1]
(1)rate: 是一个类保证得到的带宽值.如果有不只一个类,请保证所有子类总和是小于或等于父类.
(2)ceil: ceil是一个类最大能得到的带宽值.
(3)prio: 是优先权的设置,数值越大,优先权越小.如果是分配剩余带宽,就是数值小的会最优先取得剩余的空闲的带宽权.
具体每个类要分配多少rate,要根据实际使用测试得出结果.一般大数据的话,控制在50%-80%左右吧,而ceil最大建议不超过85%,以免某一个会话占用过多的带宽.rate可按各类所需分配
[color=red:841a5dcdf1]限制下载[/color:841a5dcdf1]
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:1 htb rate 10Mbit burst 15k
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10Mbit burst 15k
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 80Kbit ceil 80Kbit burst 15k
/sbin/tc qdisc add dev eth0 parent 1:10 sfq quantum 1514b perturb 15
/sbin/tc qdisc add dev eth0 parent 1:20 sfq quantum 1514b perturb 15
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.111.1.116 flowid 1:20
[color=red:841a5dcdf1]限制上传[/color:841a5dcdf1]
tc qdisc add dev eth2 root handle 2: htb default 30
tc class add dev eth2 parent 2: classid 2:1 htb rate 2Mbit burst 15k
tc class add dev eth2 parent 2:1 classid 2:10 htb rate 2Mbit burst 15k
tc class add dev eth2 parent 2:1 classid 2:20 htb rate 80Kbit ceil 80Kbit burst 15k
tc qdisc add dev eth2 parent 2:10 sfq quantum 1514b perturb 15
tc qdisc add dev eth2 parent 2:20 sfq quantum 1514b perturb 15
tc filter add dev eth2 protocol ip parent 2:0 prio 1 handle 6 fw flowid 2:20
iptables -t mangle -A PREROUTING -i eth0 -s 192.111.1.116 -j MARK --set-mark 6
iptables -t mangle -A PREROUTING -i eth0 -s 192.111.1.116 -j RETURN
注1:要想对不同队列(比如pfifo、SFQ、TBF、HTB、CBQ)的概念使用有所了解可以参考《Linux的高级路由和流量控制HOWTO》一本很不错的书
注2:我这里只是用HTB实现了单个主机限速的功能,非常简单。对于大型网络可以使用HTB对不同类型的数据包进行分流以达到合理利用有限的网络资源的目的,但是一定要注意实际带宽使用和分配的值,需要通过一定时间的总结。可以参考,cu里KindGeorge 的大作《用TC(Traffic Control)解决ADSL宽带速度技术(tc+iptables+HTB) 》
|
|