工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆

Squid 限制用户并发连接数

在squid.conf 下加如下配置

client_db  on
acl client_10 src 192.168.0.0/32
acl maxconnect maxconn 10
http_access deny client_10 maxconnect

-----------------

squid可以针对连接数进行ip,域名限制:

针对域名设置:
acl ifeng dstdomain img.ifeng.com
acl lianjie maxconn 100
http_access deny ifeng lianjie

针对ip设置
acl client_100 src 192.168.1.100
acl maxconnect maxconn 3
http_access deny client_100 maxconnect

------------------------

maxconn
maxconn ACL 指来自客户IP 地址的大量同时连接。某些squid 管理员发现这是个有用的方法,用以阻止用户滥用代理或者消耗过多资源。
maxconn ACL 在请求超过指定的数量时,会匹配这个请求。因为这个理由,你应该仅仅在deny 规则里使用maxconn。考虑如下例子:
acl OverConnLimit maxconn 4
http_access deny OverConnLimit

在该情况中,squid 允许来自每个IP 地址的同时连接数最大为4 个。当某个客户发起第五个连接时,OverConnLimit ACL 被匹配,http_access 规则拒绝该请求。

 

另外iptables 有一个 connlimit 模块,是匹配每个 IP 并发连接数的 搜了好多文章说2.6.23以后的版本才默认被编译支持了,低于这个版本的得path 因为这个编译比较复杂 所以在外网服务器没有敢测试

#/sbin/modprobe ipt_limit
#iptables -m limit -h

limit v1.3.5 options:
--limit avg                     max average match rate: default 3/hour
                                [Packets per second unless followed by
                                /sec /minute /hour /day postfixes]
--limit-burst number            number to match in a burst, default 5

connlimit v1.3.5 options:
[!] --connlimit-above n         match if the number of existing tcp connections is (not) above n
 --connlimit-mask n             group hosts using mask

允许每个客户机同时两个telnet连接

iptables -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT

iptables 的运作需要两部分
一个是内核部分,一个是用户部分
libipt_connlimit.so 是 iptables 调用要用到的
ipt_connlimit.ko 是内核要用到的
你应该 modprobe ipt_connlimit,若提示有错,证明你的系统不支持,需要 patch
在内核版本2.6.23以前,connlimit都是一个iptables的P-O-M,从2.6.23开始,它正始进入内核。所以我们的iptables在编译时就要使用内核的extention才行

 

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):