由于没有配置域内NAT导致内网PC无法正常访问服务器

发布时间:  2014-09-20 浏览次数:  267 下载次数:  0
问题描述
 组网结构: PC------USG-----服务器  业务描述:内网用户通过USG上配置nat server,外网通过nat server访问服务器。  故障现象:在防火墙上配置针对端口的映射,则在外网PC上访问只能显示部分网页。 nat server protocol tcp global 10.228.187.128 18888 inside 10.172.10.99 18888 vrrp 5 nat server protocol tcp global 10.228.187.128 18443 inside 10.172.10.99 18443 vrrp 5 而当在防火墙上配置全映射则可以正常访问,如下: nat server protocol tcp global 10.228.187.128 any inside 10.172.10.99 any vrrp 5 。
处理过程
1. 在配置基于端口的映射和全映射后查看会话表信息,发现在配置全映射的时候出现了如下的双向NAT的会话表。
  tcp  VPN: public -> public 
  Zone: trust -> trust  TTL: 00:00:10  Left:  timeout  
  Interface: G0/0/0  Nexthop: 10.172.11.249  MAC: 00-00-5e-00-01-17
  <-- packets:12 bytes:2297   --> packets:18 bytes:3680
  10.172.10.99:46915[10.228.187.128:46915]-->10.228.187.128:18888[10.172.10.99:18888]
2. PC除了访问18888和18443两个端口外,可能还访问了其他的端口,但在PC上抓包发现PC并没有访问服务器的其他端口。
3. 如果PC没有访问服务器的其他端口,那么肯定就是服务器自动访问了其他的地址,通过抓包分析,果然是这样的,服务器会访问自身的global地址,这样就需要配置域内NAT解决或者全映射的nat server。
在做全成功的时候服务器10.172.10.99会主动向10.228.187.128发起访问,此时两个方向都会命中同一个nat server,做双向NAT。 而不成功的抓包,则由于发起方的源端口非18888,则只能命中正向的NAT,所以此时发送给服务器时的源地址仍然是10.172.10.99,pc收到该报文后因为请求的是10.228.187.128,而非10.172.10.99,所以就没有回应任何消息。
根因
PC访问服务器时,服务器要通过nat server的global地址访问自身的某些业务,这些业务的端口没有做nat server。需要配置域内NAT以解决此问题。
解决方案
配置域内NAT解决此问题。

END