网吧每IP 限速补充(squid 限速)
2010-01-31 xiao H Posted in 服务器应用
之前的Iptables+tc 网吧每IP 限速脚本一文中有一个问题需要补充,如果同时使用squid 做透明代理会使该脚本失效。
做透明代理时有一条iptables规则
iptables -A PREROUTING -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
这一规则把所有内网80端口的请求都转发到了网关,如此一来所有向外网的普通http 请求者都成了网关(192.168.0.254),而网关是不做限速的,所以所有http下载都不被限速了。
所以为了能现在http下载,我们要使用squid 的限速功能,配置命令如下:
acl LIMIT_IP src 192.168.0.0/25 delay_pools 1 delay_class 1 2 delay_access 1 allow LIMIT_IP delay_parameters 1 -1/-1 500000/500000
squid 的限速控制不是很精确限速500000 bytes/sec 的浮动在4xx/KB 到8XX/KB 之间 -__-!


怎么不用tc 来做限制呢?
简单,并有很多控制类型可以选择.
没研究过TC
也是最近才发现用tc不能限速就是因为透明代理,
所以取消tc,改用delay_pools了。
不过tc可以用hash的,效率也很高。
tc filter add dev $LAN_LINK protocol ip parent 2:0 prio 4 u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16 link 6:
最近才发现用tc不能限速就是因为透明代理,
所以取消tc,改用delay_pools了。
不过tc可以用hash的,效率也很高。
tc filter add dev $LAN_LINK protocol ip parent 2:0 prio 4 u32 ht 800:: match ip dst 192.168.0.0/24 hashkey mask 0x000000ff at 16 link 6: