由于电信之前给分配的IP在国外的RBL名单中,所以最近决定将邮件迁移到一个新的IP段上,考虑到已经发布了很多服务在外面,所以没有采用全部替换而改用在现有线路上增加一段不同网段的地址,等于该链路有双网关,然后在F5的CT接口上多绑一个Selfip,在没实施前,一直担心F5是否能聪明的根据不同网关匹配对应的selfip,事实测试这种担心是多余的,F5会自动匹配的。
增加完IP后,我想让现有的互联网IP变成动态源地址,这样好玩,刷一次网页IP就会变化,同时也在一定程度上增加了NAT的性能。对于普通的WEB访问这种情况是没有问题的,但是实施后遇到了2个问题:
1.访问外部FTP服务器时,经常无法进入某个目录
2.访问招行等网银异常
FTP的很好理解,在问题出现时,便意识到由于passive模式下的特殊性,控制信道和数据信道使用了不同的源IP导致的。因为之前没有为FTP使用profile来处理,而是简单的使用fastl4,针对这种情况,只需要单独建立一个0.0.0.0/0.0.0.0:21的VS,然后选择标准类型,并使用ftp profile就可以解决。
对于访问招行,其实根本原因和FTP类似,都是一次访问中使用了不同源地址导致的,这种情况下对于网银网站的访问需要进行特别处理,思路:
a.让客户机外出访问的时候,每次只用指定的IP,即某一部分人出去始终只用某一个IP,而另一部分人都用另一个IP
b.利用irules判断,对TCP 443端口的访问,强制其只用一个ip来进行snat
分析:
a的办法等于是一个预分配的方法,这个方法的优点在于可以解决所有由于动态IP导致的问题,其最终办法可以利用对客户机IP进行hash,进行分配,需要写一个irules,我还不知道怎么写
b方法理论上有效,还未测试,只要网银没有像FTP那样在有效负载中插入端口,理论可行。待检验。irules可以这样写:
when CLIENT_ACCEPTED {
if {[matchclass [IP::client_addr] equals ::ct_only_class] or [matchclass [TCP::server_port] equals::port_singleip_class]}{
pool ct_special_gateway
(只要其只用固定的网关,那么其snat地址就是固定的)
}
elseif { [matchclass [IP::local_addr] equals $::cnc_class]}{
pool cnc_first
} else {
pool ct_first
}
}
文章评论