F5 iRules入門學習筆記

基本介紹正則表達式

IRules主要應用在F5負載均衡設備GTM、LTM和LC,它使用的是TCL語言,由事件、命令和邏輯三部分組成。它能夠工做在OSI模型的3-7層,根據協議的不一樣,實現不一樣的功能。編程


IRules的功能:
服務器

一、實現了對全部TCP、UDP應用的數據包分析與信息提取功能;網絡

二、根據數據信息進行分流;負載均衡

三、雙向的數據流改寫功能;ide

四、選擇性地址轉換(iSNAT);函數

五、基於內容的會話保持。this


iRules能夠根據提取的信息(好比ip、http header、http uri等)進行數據分流,使得不一樣的請求類型分配到不一樣的服務器羣中。如根據文件類型選擇不一樣的服務器、依據遊覽器不一樣選擇不一樣服務器、根據用戶類型不一樣選擇不一樣服務器等。spa


F5設備的Full Proxy結構使其有了雙向數據改寫的能力。與其餘傳統的網絡交換機不一樣,BIGIP能夠對任意內容進行改寫,例如TCP Content,UDP Content,HTTP Request,HTTP Response等內容進行修改。如改寫uri、在header中插入證書信息、選擇性的地址轉換、基於內容的會話保持等。orm


image.png


編程基礎

TCL語言是一種解釋性腳本語言,是一種嵌入命令的腳本語言。


iRules的命令結構:

命令 參數1 參數2 參數3 ... 參數n  #this is a note


TCL語言和命令結構:

if {觸發條件} {觸發動做}

elseif {觸發條件} {觸發動做}

else {觸發動做}


事件是iRules構成中的重要的一部分,不一樣事件表明數據在整個訪問過程當中的邏輯位置。通常用when開頭。


命令是irules中對數據進行操做的直接函數,如:[HTTP::uri],該命令中HTTP表明HTTP協議,uri表示取這個http訪問中的uri,他們之間用「::」鏈接,表明從屬關係,uri是屬於HTTP這個命令體系的,相似的還有:[IP::addr]、[TCP::payload]、[SSL::handshake]等。


邏輯運算符:

contains 包含

matches 匹配

equals(==) 等於

starts_with 以開始

ends_with 以結束

matches_regex 正則表達式匹配

not(!) 非

and(&) 與

or(|) 或


開始寫iRules

一、第一個irules

when HTTP_REQUEST {

log local0.info "Hello World!"

}


二、DNS解析

when DNS_REQUEST {
if {IP::addr [IP::remote_addr]/24 equals 10.1.1.0/24} {

host 192.168.10.11

}

else{

host 10.10.10.10

}

}


三、不一樣請求來源分發不一樣的pool

when DNS_REQUEST {
if {IP::addr [IP::client_addr] equals 10.1.1.100} {

pool my_pool_A

}

else{

pool my_pool_B

}

}


四、多種不一樣請求來源鏈接到不一樣的pool

class private_net {

network 10.0.0.0/8

network 172.16.0.0/12

network 192.168.0.0/16

}

when HTTP_REQUEST {

if {[matchclass [IP::client_addr] equals ::private_net]} {

pool internal_pool

}else{

pool default_pool

}

}


五、HTTP跳轉

when HTTP_REQUEST {

if {[HTTP::uri] contains "a"} {

HTTP::redirect http://a.com

}else{

HTTP:redirect http://b.com

}

}

相關文章
相關標籤/搜索