版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
iRules編程寶典iRules介紹及應用領 iRules開収工具iRule iRules編程基 iRules令結 變 簡單變 數組變 全局變 數據類 數學函 ...............................................................................................................................................命 SIDE和SERVER 常用iRules分 根據不同URI分配用戶連接到不同的 http轉 根據HTTPHeader包字段進行會話保 根據目的地址選擇outbound路 單個IP的并収數量限 DNSFlood防 參考資 iRules介紹及應用領iRulesF5設備的基本功能及配置;同時,根據要實現的不原理、HTTP協議、安全及防護、Cache、XML等。iRules語言呢?F5設備支持絕大多數應用交付的標準功能,可以IT系統(tǒng)對這方面的功能及部署要求,但某些應用系統(tǒng)對數據控制有著更加精F5設備的功能,實現這些功能要求。比如,F5的LTM設備支持基于源地址、、目的地址、SSLID等模式的會話保持方式,可以滿足大多數應用交付系統(tǒng)對會話保持的要求。但JAVASESSIONID作為會話保持的依據,這樣可以更加方便和準確的控制應用數據的,這時候,使用iRules編寫一段簡單的代碼并輸入到F5設備中,即可高效的實現這能,滿足應用程序的功能需求。程序如下: }elseif{$jsess!=""}}}} }}iRulesF5SESSIONID的會話保持功能,精細控制流量,iRules的功能可謂十分之強大。關于這個程序詳細的實現原理,在后面章節(jié)有詳細iRules開収工具iRuleF5的iRuleEditor是一款非常優(yōu)秀的iRules開發(fā)工具,可以從以下站點: /。在windowsxp及以上操作系統(tǒng)中運行,需要.NETFramework運行需要注意的是,這款軟件是由DevCentral發(fā)布的非軟件,F5不對此軟件提iRules的不可靠,事實上,全球大部分的LTM設備都在或多或少的使用iRules精細控制著各種應用流量,運行高效并且穩(wěn)定。iRules寫好后,直接save即可到F5設備中,綁定VS后即可工作。關于iRuleEditor的使用技巧,請到http:/ TCLTCL(讀作“tickle”)語言是一種解釋性語言,是一種嵌入命令的語言,具命命令12參數3參數poolpoollogloglocal0."matchit“pool””log“都是命令,每個命令后面的部分是參數,參數可以是一個,”[]”符號,iRules解釋器會將上面例子中,在”[]”中的內容是一條命令語句,輸出HTTP協議中header頭的參數,整個命令語句輸出小寫的User-Agent值?!?”“;”“#”“;”##thisisanotepoolpoolpool_web;#thisisanote變setseta表變量值。這行語句執(zhí)行完后,我們得到了一個值為100的變量a。seta(1)seta(2)))個數組變量值賦值為100和200。局考慮的變量,如一個VS的總連接數,這時候就需要使用到全局變量,讓這個變量在所有觸發(fā)相同iRules的應用中有著相同的變量值。全局變量的符號是“::”。如:setset::max_sessions置,一般分為四種,Address型、String型、IntegerExternalFileIP地址、{ }elseif{[matchclass[IP::local_addr]equals{pool}elsepool}令的置換,“$”setb$a入,定義變量b,變量值為100。數據類iRulesint、float、doublechar之類的變量類型。這意味著,在同一程序中,一個變量可以在不同的時刻分別被設置為數值、字符或字符串。iRules的數字支持整數、八進制(0開頭)、十六進制(0x開頭)””進setsetasetb”\”符、空格、[、$等被iRules解釋器當作特殊符號對待的字符。\a\aAudiblealert\bBackspace\fFormfeed\nNewline\vVerticaltab\dddOctalvaluegivenbyddd(one,two,orthree\xhhHexvaluegivenbyhh(anynumberof\newlinespaceAsinglespacesetsetasetb{$a+2}expr$b*4后expr命令將計算表達式$a+2*4。操作-a!aaa*ba/ba+ba-a<<ba<ba>ba<=ba==babs(abs(x)Absolutevalueofexprexprargargexprexpr對表達式”1+2*3”進行數算,得到結果為7。iRules中還支持以下數學函數:acos(x)Arccosineofx,intherange0top.asin(acos(x)Arccosineofx,intherange0top.asin(x)Arcsineofx,intherange-p/2top/2.atan(x)Arctangentofx,intherange-p/2top/2.atan2(x,y)Arctangentofx/y,intherange-p/2top/2.ceil(x)Smallestintegernotlessthanx.cos(x)Cosineofx(xinradians).cosh(x)Hyperboliccosineofx.double(i)Realvalueequaltointegeri.exp(x)eraisedtothepowerx.floor(x)Largestintegernotgreaterthanfmod(x,y)Floating-pointremainderofxdividedbyy.hypot(x,y)Squarerootof(x2+y2).int(x)Integervalueproducedbytruncatingx.log(x)Naturallogarithmofx.log10(x)Base10logarithmofx.pow(x,y)xraisedtothepowery.round(x)Integervalueproducedbyroundingx.sin(x)Sineofx(xinradians).sinh(x)Hyperbolicsineofx.sqrt(x)Squarerootofx.tan(x)Tangentofx(xintanh(x)Hyperbolictangentof比如一個iRules中包含以下兩個:}}和}分別表示端發(fā)起HTTPserverHTTP請求的時候。iRules中,每一行whenwhenRULE_INIT}RULE_INIT也是一個,是每個iRules執(zhí)行時最先命中的,一般用來進行全局變RequestEvents-這些觸發(fā)的時間是在客戶端連接到Bigip且Bigip負載均衡決味著local_addr類型令是針對客戶端而言。在此處,你有機會在客戶端發(fā)給服務器之前改變用戶發(fā)送的信息,比如,URI的重寫、認證和加密、卸載或檢查、服務器模擬 HTTP_CLASS_FAILED/HTTP_CLASS_SELECTED_DATA_DATA/RTSP_REQUEST_DATA/HTTP_REQUEST_DATA–OnlyoccurwhencollecteddataarrivesAUTH_RESULT/AUTH_WANTCREDENTIAL–OnlyoccurwhenauthenticationcommandsreturnServerRequestEvents–這類的觸發(fā)時間是在客戶端的請求已處理完畢,由BigipServerResponseEvents-這類的觸發(fā)時間,是在請求被發(fā)送到服務器,而且服務器處理完請求并且Bigip收到了來自服務器的響應。這類當中,您可以將由服務器響應的內容在發(fā)送給客戶端之前進行處理,比如:信息的,服務器響應的修改等等。HTTP_RESPONSE/RTSP_RESPONSE/SIP_RESPONSEHTTP_RESPONSE_DATA/SERVER_DATA/RTSP_RESPONSE_DATA–OnlyoccurwhencollecteddataarrivesACCESS_ACL_ALLOWED,ACCESS_ACL_DENIED, ACCESS_SESSION_CLOSED,ACCESS_SESSION_STARTED,HTTP_CLASS_FAILED,HTTP_CLASS_SELECTED,HTTP_REQUEST,HTTP_RESPONSE_CONTINUE,HTTP_RESPONSE_DATA,SSL_DATA,_ACCEPTED,_CLOSED,_DATA,SERVER_CLOSED,SERVER_CONNECTED,SERVER_DATA,SSL_DATA,_ACCEPTED,_CLOSED,_DATA,USER_REQUEST,USER_RESPONSE,SERVER_CONNECTED,SERVER_DATA,XML_BEGIN_,XML_BEGIN_ELEMENT,XML_CDATA, 命 ifif{<expression>} }elseif{<expression>}<}else<}{case<<<}iRulesif,elseifelse語句中的if,elseif或else在同一行中。而括號外必須是有一個空格。且else或elseif語句必須要一個if或elseif的后括號的同一行中。ifif{[HTTP::headerContent-Length]>0}{loglocal0."Something's}elseif{[HTTP::uri]contains"foobar"}{loglocal0."Theuserwantssome}elseloglocal0."Idon'tknowwhatthisuser}{"/foo*"#thiswillmatchonanystringthatstartswith}"*bar"#thiswillmatchonanystringthatendswith}#Thiswillmatchwithanystringthatstartswith"/foobar"followedbyanycasecharacterfroma-z.}#thiswillmatchanystringthatstartswith"/foo",followedbyanycharacter,andfollowedbyandendingwith"bar".}}----號(。SIDE和SERVER 命令,但一個返回的是ip,一個返回的是serverip,原因是兩個命令所執(zhí)行的事件不同。于是,為了取得相同的結果,第二個iRules使用了[side]命令,使得[IP::remote_addr]命令在side執(zhí)行。對于各種的side定義,見下圖:常見的SideServerSideIP::ofaTCPReturnsthelocalTCPport/servicenumberofTCPofthesideTCPoftheserversideTCPReturnsanunusedTCPportforthespecifiedIPtuple,usingthevalueof<hint_port>asastartingpointifitisd.Ifnoappropriateunusedlocalportcouldbefound,0is編寫第一個我們的第一個iRules也以這樣的功能開始:}World!”這句話,可以使用“tail/var/log/ltm"這個命令查看結果。里面提供的log是個非常好而且有效令log命令是 <message>寫 [<facility>.<level>]的log里GeneralBIG-IPGTMspecificASMspecificITCMportaland在程序關鍵點放上這句話,然后進入F5設備命令行界面,配合命令“tail<filename(-f)可以非常清楚的觀察程序運行狀態(tài),便于調試。令進行結果輸出,是調試iRules的重要。常用iRules根據不同URI分配用戶連接到不同的if{[HTTP::uri]contains"aol"} }else 3aol_pool5行使用all_poolpoolhttp轉 么就轉成https。這種應用非常常見,實際使用中要根據不同的需要靈活更改,比如:if{[HTTP::uri]contains"a"}{}else}}"根據HTTPHeader包字段進行會話保if{[HTTP::header"Calling-ID"]!=""} outbound}elseif{[matchclass[IP::local_addr]equals$::cuc_class]}poolcuc_pool}elsepool}{} _class和cuc_class兩個class。依據 進行會話保}elseif{$jsess!=""}}}}whenHTTP_RESPONSE{if{[HTTP:: }}BEAWeblogiciRulespersistpersistsimple[<mask>][<timeout>]persistpersistsimple[<mask>][<timeout>]persistsource_addr[<mask>][<timeout>]persiststicky[<mask>][<timeout>]persistdest_addr[<mask>][<timeout>]persistssl[<timeout>]persist[insert rewrite[<_name>][<expiration>]|passive[<_name>]|hash<_name>[{<offset>[<length>]}[<timeout>]]]persisthash<string>[<timeout>]whenRULE_INITwhenRULE_INIT s}_ipif{[infoexists _ip)>10}incr}if{[infoexistsincr::active_if{_ip)]}_ip)-_ip)<=0}}}}log$_iphastoomany incrincrvarNameDNSFlood防# 和Bigipsetholdtime}#setsrcipsetc[clockif{[sessionlookupuie"b$c$srcip"]!=""}UDP10秒之內的重復包#loglocal0."drop[IP:: }setf[sessionlookupuieif{$f!=""}incrfif{$f>$maxquery}的#loglocal0$srcip$ftimes"for{seti2}{$i<[expr$holdtime+2]}{incri}sessionadduie"b$c$srcip"bincr}#loglocal0."drop }elsesessionadduie"u$c$srcip"$f250.}elsesessionadduie"u$c$srcip"1秒}}iRuelsmaxqueryholdtime,分別代表了同一IP"b$c$srci
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度鋼結構工程大數據分析與決策支持合同3篇
- 展會媒體合作合同(2篇)
- 2025年度環(huán)保項目財務代理與審計合同3篇
- 二零二五版智慧校園信息化建設與運營合同3篇
- 二零二五年新能源發(fā)電場電工勞務及環(huán)保設施合同3篇
- 二零二五年度高等學府外國專家講學合同參考文本3篇
- 二零二五年度出租屋租賃合同范本:租賃押金無息退還協議3篇
- 二零二五年度機械加工行業(yè)信息安全保護合同2篇
- 2025年度標識標牌照明系統(tǒng)升級改造合同3篇
- 二零二五版機票預訂代理及境外旅游套餐合同5篇
- 退款協議書范本(通用版)docx
- 電廠C級檢修工藝流程
- 函授本科《小學教育》畢業(yè)論文范文
- 高考高中英語單詞詞根詞綴大全
- 江蘇省泰州市姜堰區(qū)2023年七年級下學期數學期末復習試卷【含答案】
- 藥用輔料聚乙二醇400特性、用法用量
- 《中小學機器人教育研究(論文)11000字》
- GB/T 22085.1-2008電子束及激光焊接接頭缺欠質量分級指南第1部分:鋼
- 全過程人民民主學習心得體會
- 2023年上海期貨交易所招聘筆試題庫及答案解析
- 附圖1岑溪市行政區(qū)劃圖
評論
0/150
提交評論