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