在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
--limit-burst number
connlimit v1.3.5 options:
[!] --connlimit-above n
允许每个客户机同时两个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才行