F5作NAT出现的两个问题及解决

最近在用户处作F5实施,用户要求实现两个功能,
但是因为用户的应用环境非典型,结果一度出现问题。
1.用户要求作最简单的VIP和NAT
2.用户要求通过NAT访问VIP
简单吧,3分钟搞定,
结果居然既不能从外面访问VIP,内网也不能NAT出去。

检查了配置,没发现问题。
OK,TCPDUMP抓包,结果发现一个很奇怪的来自127网段的ARP请求
用户提醒,接入线路的对端设备使用的是Juniper
而Juniper就是用这种方式来建ARP表(不知道是个别现象还是共性,要Juniper达人解释一下)
结果VIP和NAT地址都是虚接口,不能做出ARP应答
解决方法简单,先在VLAN里面把VIP和NAT需要的地址作为selfip,酱紫会向juniper发出通告

再作相关应用,问题解决。
但是新问题是用户不能用NAT访问VIP(dns服务器)地址
好吧,继续TCPDUMP,
原来客户端发送request请求到服务器的时候,
网关发现目标地址在自己的虚接口上,
于是就直接作Forwarding,
结果服务器应答的的时候直接用保留地址应答,再由网关原路转回。
客户机收到来自非目标地址的莫名其妙的应答包,结果就是drop。
这个问题在防火墙上也经常遇到。
解决思路是先让请求包NAT一遍,
以公网地址去访问服务器,就OK。
F5的方法是再建一个NAT,专门用来给内网访问VIP使用
--简单吧,俺可是花不少时间才搞定–从凌晨2点到4点
结果作完后,旁边华为工程师说的他们以前的解决方法差点让俺吐血
他的方法是在华为防火墙上监听DNS请求
发现是对定义的域名解析时,直接由防火墙返回一个服务器的保留地址(即内容过滤)

我吐
最后总结一下NAT和SNAT(抄的)
1、SNAT的优先级高于四层VS
2、SNAT IP的方式先于VS执行,然后再进入VS进行流量分配,SNAT AutoMap方式则是在离开BIGIP时执行源地址替换。