双出口NAT转换配置不生效

发布时间:  2014-09-12 浏览次数:  339 下载次数:  5
问题描述
客户网络环境是双出口,不同的运营商,配置两个NAT转换地址,根据查看会话被转换成了同一个出口的公网IP。
客户要求,根据路由从不同的出口出去,应该转换成不同的公网IP。
 
NAT转换配置如下:
acl number 2160
 rule 1 permit source 122.198.96.60 0  
 
nat address-group 187 120.84.22.187 120.84.22.187
firewall interzone trust dmz
nat outbound 2160 address-group 187 no-pat
 
 
nat address-group 60 119.146.225.60 119.146.225.60
firewall interzone trust untrust
nat outbound 2160 address-group 60 no-pat
 
 
会话查看如下:
udp  VPN: public -> public
  Zone: trust -> dmz  TTL: 00:02:00  Left: 00:00:08 
  Interface: G0/0/3  Nexthop: 10.186.1.1  MAC: 00-07-0d-e9-68-00
  <-- packets:0 bytes:0   --> packets:2 bytes:138
  122.198.96.60:34586[120.84.22.187:34586]-->219.136.13.134:7776
 
  udp  VPN: public -> public
  Zone: trust -> untrust  TTL: 00:02:00  Left: 00:01:00 
  Interface: G0/0/2  Nexthop: 10.189.1.1  MAC: 00-08-20-09-cc-00
  <-- packets:0 bytes:0   --> packets:10 bytes:1260
  122.198.96.60:26077[120.84.22.187:26077]-->110.188.2.58:17788
告警信息
处理过程
如果现网一定要实现一个源地址对应2个nat地址,那么建议使用nat server实现。
nat server 1 zone untrust global 119.146.225.60 inside  122.198.96.60                                                                             
 nat server 2 zone dmz global 120.84.22.187 inside  122.198.96.60
 
另外还有一种方法:把no-pat去掉,采用pat方式就可以了,因为acl是一对一的,所以达到的效果和no-pat是一样的。
根因
现网中配置的是no-pat,那么源地址和nat后的地址是一一对应的关系, 当第一个报文命中nat时,此时就会建立这个对应关系,
 
并保留这个关系一段时间,后期这个源地址过来的都会被映射为第一次的那个地址。
 
因为现网在trust -dmz, trust-untrust域间分别配置了两个nat no-pat,那么如果第一次报文走到了trust-dmz域间,那么此时会被转换为120.84.22.187,
 
后续新的会话即使是到trust-untrust的,此时也会被转换为120.84.22.187,同样,如果第一次命中的是trust-untrust域间,那么此时所有的这个源地址过来的报文都会被转换为119.146.225.60,所以看到了采集会话表的现象,是因为第一次命中了trust-dmz域间的nat。
 
因为no-pat表项的特殊性,其是一一对应的,所以不能给一个源地址配置两个相同的nat 地址池。
建议与总结

END