负载均衡器上实现客户端IP限制
很多提供公開服務的網站都會遇到單一客戶IP大量訪問導致性能受到影響的問題,這些訪問有可能是***流量,也有可能是來自代理服務器或者NAT設備后端若干客戶的訪問。如何有效地對這些流量進行限制而不影響正常用戶使用,不同類別產品在這方面提供不同程度的防護。現以A10負載均衡產品AX為例介紹如何實現客戶端IP限制。本文提到所有連接為完整TCP連接或未開啟SYN-Cookie功能時的半連接。關于SYN-Flooding的防護,負載均衡設備均有較強防護能力,本文不做討論。也可以針對服務器和虛擬服務器進行總連接數或連接速率限制,也不在本文討論范圍。
首先,某個客戶端過渡使用資源體現在以下幾個方面:
- 并發連接數,同一客戶IP打開大量連接不關閉,耗費服務器連接資源
- 新建連接速率,同一客戶IP每秒新建連接數量
- 并發7層請求數,同一客戶IP并發的請求數量,并發連接限制了TCP連接數量,但一個TCP連接中可以傳送很多個HTTP請求。
- 7層請求速率,同樣由于一個TCP連接中有多個7層請求,單純TCP連接限制可能無法有效防護。流行的CC***就是利用少數TCP連接發送大量HTTP請求的。
- 帶寬使用,作為負載均衡設備,以連接為基礎進行處理是更合理的方式。限制了合理的連接數量和請求數量后,帶寬也相應得到限制。
負載均衡設備通常有足夠的并發連接數和新建連接處理性能將這些連接轉發給服務器,但服務器往往無法承受這些負擔,因此客戶端IP限制很多時候是為了避免服務器過載。而單純針對服務器的連接限制保護又會導致所有客戶端受影響。基于客戶端IP的限制則可以保證未過量使用的用戶不受影響,只是***流量和過量使用的用戶收到限制。
下面介紹其工作原理,涉及部分配置命令,但不做完整配置介紹。
- AX可以定義叫做Class List的IP列表,最多可以定義255個Class List,每個Class List可以包含800萬主機IP地址(/32掩碼)和64K個網絡子網。Class List可以以文件形式存在。
- Class List的格式如下:
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
- lid或glid下定義對應的限制規則,可定義單個IP并發連接數量、每100ms新建連接數量、并發請求數、每100ms請求數量、以及超過限制時的可選動作(轉發、reset、鎖定、日志)
conn-limit num
conn-rate-limit num per num-of-100ms
request-limit num
request-rate-limit num per num-of-100ms
over-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
- 限制策略模板內會定義所使用的Class List名字和對應的lid規則,例如
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
- 應用限制策略到VIP或者vport或者全局下,下面例子為應用到vport 80下對HTTP請求數量進行限制
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地址,分析后再逐一制定具體限制策略。
?
R.S.
轉載于:https://blog.51cto.com/virtualadc/774126
總結
以上是生活随笔為你收集整理的负载均衡器上实现客户端IP限制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Office 插件开发和部署的总结
- 下一篇: 新学期开始了