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)"

Netscaler Callout策略-实现外部联动_第1张图片
Netscaler Callout策略-实现外部联动_第2张图片
其中parameter的作用跟http method有关系,get的话parameter变为?带参数,post的话parameter就变成编码后的data内容了
get 方法抓包验证:

Netscaler Callout策略-实现外部联动_第3张图片
post方法抓包验证
Netscaler Callout策略-实现外部联动_第4张图片

将callout策略在responder策略中调用
add responder policy res_policy_callout "SYS.HTTP_CALLOUT(my_callout).CONTAINS(\"The address is valid\")" res_action_callout
Netscaler Callout策略-实现外部联动_第5张图片

callout服务器返回值
Netscaler Callout策略-实现外部联动_第6张图片
服务器返回当前客户端地址是非法地址
用该地址访问LB vserver时就会被重置或重定向到其他页面。验证客户端效果,看不到主页直接被responder了。

Netscaler Callout策略-实现外部联动_第7张图片