1> 建立一个cnc_snatpool的class (必须选string类型而非addr),将我们提供的snat地址一一加入
2> 建立irules
when RULE_INIT {
#log local5.warning "--------$cnc_snatpool"
set snat_length [llength $cnc_snatpool] 这个正好是等于IP个数吗? 确实是!见后面抓到的日志
log local5.warning "--------snat pool length is $snat_length"
}
when LB_SELECTED {
#set client_addr "10.1.1.33"
set client_ip [IP::client_addr]
set client_last [getfield $client_ip "." 4]
#log local5.warning "--------client last is $client_last "
set snat_addr [lindex $cnc_snatpool [expr client_last%snat_length] ] 这个加粗的地方实际运行时报无此变量。
#log local5.warning "------------client snat addr $snat_addr"
snat $snat_addr
}
如此就可以实现snatpool的persistant功能了。。。
rules不是最优化的,主要是考虑到用户维护界面,只需要变更cnc_snatpool的地址列表就可以而不需要改动irules。。
另,还缺少对cnc_snatpool为空的排错!!!
21:32 | 192.168.162.254 | warnings | tmm tmm[1045]: Rule : --------snat pool length is 2 |
21:32 | 192.168.162.254 | warnings | tmm tmm[1045]: Rule : --------{1.1.1.1} {2.2.2.2} |
文章评论
这样做是可以,但有变通的方法。不同网段的用户,选择不同的snat_pool访问,也可以实现
功能。请发mail与我联系。
问一下,关于vs方面应该做哪些设置
建立一个0.0.0.0 的vs,并建立一个添加snat地址的pool?应用上面的rule?就可以了吗
以上配置和LTM使用的版本是否有关呢,9.1.2的版本是否可以支持以上的配置并调通呢