限制内网下载的权宜之计
因为系统一运行layer7中的模块就会死机,面对内网部分下载太厉害挤占带宽严重的机器采取如下办法——用TC设计特殊通道,限制死一个下载带宽,一旦他们下载太严重,就把他们放置于这个通道中,以免对整个网络造成太大影响。我的系统是redhat as4,通过iptables实现nat代理上网服务,但是所有使用2.6.x内核的linux代理服务器应该都可以使用我这个方法——查看内核版本使用uname -a命令。我的内网网卡对应eth0,总的下载带宽最高为2m,然后单独开辟1m的带宽供这些下载狂用。设计两个脚本TCstart.sh和TCstop.sh用来开始/关闭限速。内容如下:
打开限制,假设需要限制内网特殊用户(通过添加IP限制)下载总带宽为1M,而现在内网有192.168.1.101~104这四个用户(IP)狂喜欢下载,则把他们加入到这个特别的下载通道内,与其他人正常使用的客户隔离。这样这四个IP只能共用1m的下载带宽,而不能使用这个带宽以外的带宽,如果你觉得1mbit太大,可以调小,比如500kbit。
#!/bin/sh
#filename=TCstart.sh
#eth1 connect to Internet NIC--ppp0,eth0 is LAN NIC.
#Green tunnel for special demand.
#product at 2008-04-07 by iamshiyu
#configure for eth0
tc qdisc add dev eth0 root handle 1: htb default 20
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit burst 15k
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 2mbit ceil 5mbit burst 15k
tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
tc filter add dev eth0 protocol ip parent 1: prio 10 u32 match ip dst 192.168.1.101/32 flowid 1:10
tc filter add dev eth0 protocol ip parent 1: prio 10 u32 match ip dst 192.168.1.102/32 flowid 1:10
tc filter add dev eth0 protocol ip parent 1: prio 10 u32 match ip dst 192.168.1.103/32 flowid 1:10
tc filter add dev eth0 protocol ip parent 1: prio 10 u32 match ip dst 192.168.1.104/32 flowid 1:10
这个脚本用于停止通道设定。
#!/bin/sh
#filename=TCstop.sh
#for stop Trafic control.
tc qdisc del dev eth0 root htb
有不明白的地方可以一起探讨,希望对大家有用。
[[i] 本帖最后由 iamshiyu 于 2008-4-7 14:14 编辑 [/i]] 有想要用但是不明白的可以问……只是用用应急的话,应该没啥难的。 似乎可以直接在交换机或者路由上做vlan或者QoS这样的吧?
依照Qos进行运行级别的划分,其实可以很好的利用带宽 俺们用的是个普通的adsl猫……nat什么的都是服务器做的,交换机也是个普通的,还有别的好办法么? Linux倒是可以实现,不过目前我没怎么关注,我属于桌面用户呵呵,不过Linux一样可以做QoS的,这个可以肯定呵呵,想想netBSD都可以给CISCO拿去DIY成他们的路由器/交换机的NETOS,我觉得Linux实现这些功能不是做梦:lol
页:
[1]
