本文共 2387 字,大约阅读时间需要 7 分钟。
很多提供公开服务的网站都会遇到单一客户IP大量访问导致性能受到影响的问题,这些访问有可能是攻击流量,也有可能是来自代理服务器或者NAT设备后端若干客户的访问。如何有效地对这些流量进行限制而不影响正常用户使用,不同类别产品在这方面提供不同程度的防护。现以A10负载均衡产品AX为例介绍如何实现客户端IP限制。本文提到所有连接为完整TCP连接或未开启SYN-Cookie功能时的半连接。关于SYN-Flooding的防护,负载均衡设备均有较强防护能力,本文不做讨论。也可以针对服务器和虚拟服务器进行总连接数或连接速率限制,也不在本文讨论范围。
首先,某个客户端过渡使用资源体现在以下几个方面:
负载均衡设备通常有足够的并发连接数和新建连接处理性能将这些连接转发给服务器,但服务器往往无法承受这些负担,因此客户端IP限制很多时候是为了避免服务器过载。而单纯针对服务器的连接限制保护又会导致所有客户端受影响。基于客户端IP的限制则可以保证未过量使用的用户不受影响,只是攻击流量和过量使用的用户收到限制。
下面介绍其工作原理,涉及部分配置命令,但不做完整配置介绍。
ipaddr /network-mask [glid num | lid num] [age minutes] [; comment-string]
lid为Limiting ID,是在某个策略下定义的限制规则编号;
glid为Global Limiting ID,是全局下定义的限制规则编号;
age可以设定这个条目存在多久后删除,只对主机IP地址适用,可对可疑攻击IP短时间限制。
例如:
1.1.1.1 /32 lid 1
2.2.2.0 /24 lid 2 ; LID 2 applies to every single IP of this subnet 0.0.0.0 /0 lid 10 ; LID 10 applied to every undefined single IP 3.3.3.3 /32 glid 3 ; Use global LID 3
conn-limit num
conn-rate-limit num per num-of-100ms request-limit num request-rate-limit num per num-of-100msover-limit-action [forward | reset] [lockout minutes] [log minutes]
示例:
AX(config-policy)#class-list lid 1
AX(config-policy-policy lid)#request-rate-limit 50 per 1 AX(config-policy-policy lid)#request-limit 60000 AX(config-policy-policy lid)#over-limit reset logging
AX(config)#slb template policy vp_policy
AX(config-policy)#class-list name vp_list AX(config-policy)#class-list lid 1 AX(config-policy-policy lid)#request-rate-limit 50 per 1 AX(config-policy-policy lid)#request-limit 60000 AX(config-policy-policy lid)#over-limit reset logging
AX(config)#slb virtual server vs1
AX(config-slb virtual server)#port 80 http AX(config-slb virtual server-slb virtua...)#template policy vp_policy
在制定限制规则时,要考虑代理服务器和NAT设备后端若干客户使用同一IP的问题,采用的限制值由较大值逐渐下调。或者先采取只log不限制的方式获得IP地址,分析后再逐一制定具体限制策略。
本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/774126
转载地址:http://twldx.baihongyu.com/