1. 程式人生 > >Netscaler Callout策略-實現外部聯動

Netscaler Callout策略-實現外部聯動

param 但是 mar cto respond lte netscaler scale 定向

Netscaler Callout策略-實現外部聯動
在某些特殊的場景下,需要Netscaler與外部服務實現聯動來作出復雜情景下的判斷。例如在做LLB時通過外部數據庫來判斷URL是否安全,判斷源地址是否合法(這裏只是舉例,用在客戶非要用自己運維的內容歸類服務器或不想買企業版NS時。NS內置功能可以做IP和各種惡意URL的判斷)此時就需要祭出Callout這個神器了,下面就是一個配置案例。
配置意圖
Netscaler判斷客戶端的地址是否合法,如果不合法的地址就跳轉到特定的頁面。但是這個判斷是否合法的動作是有外部服務器來完成的,Netcaler把客戶端的地址插入http body送到外部服務器,根據判斷的結果來決定用戶是否有權訪問頁面。
業務邏輯:
client->NS responder policy調用callout->third server->NS responder engine->server

啟用callout前先啟用responder的Feature

編輯callout 策略
add policy httpCallout my_callout

set policy httpCallout my_callout -IPAddress 192.168.150.18 -port 80 -returnType TEXT -httpMethod POST -hostExpr 192.168.150.18 -urlStemExpr "\"/callout/calloutweb.htm\"" -headers test_header("cj_header") -parameters test_parameter("cj_parameter") -scheme http -resultExpr "HTTP.RES.BODY(600000)"

技術分享圖片
技術分享圖片
其中parameter的作用跟http method有關系,get的話parameter變為?帶參數,post的話parameter就變成編碼後的data內容了
get 方法抓包驗證:

技術分享圖片
post方法抓包驗證
技術分享圖片

將callout策略在responder策略中調用
add responder policy res_policy_callout "SYS.HTTP_CALLOUT(my_callout).CONTAINS(\"The address is valid\")" res_action_callout
技術分享圖片

callout服務器返回值
技術分享圖片
服務器返回當前客戶端地址是非法地址

用該地址訪問LB vserver時就會被重置或重定向到其他頁面。驗證客戶端效果,看不到主頁直接被responder了。

技術分享圖片

Netscaler Callout策略-實現外部聯動