AR G3路由器做了NAT Server后内网用户无法通过公网地址访问内网服务器

发布时间:  2015-07-21 浏览次数:  2272 下载次数:  0
问题描述

如图所示,某企业使用一台AR G3路由器作为企业出口路由器,路由器配置NAT Outbound为私网用户提供访问Internet服务,同时配置NAT Server将私网WEB服务器的“私网IP:端口号”转换为“公网IP:端口号”,对外网用户提供服务。运营商仅为该单位分配了一个公网IP,此地址既作为AR出接口的IP地址,也作为NAT OutboundNAT Server的公网映射地址。


NAT的配置如下:

#
interface GigabitEthernet3/0/0
 ip address 202.12.111.1 255.255.252.0
 nat server protocol tcp global current-interface www inside 192.168.1.100 www
 nat outbound 2000
#
acl number 2000
 rule 10 permit source 192.168.0.0 0.0.0.255
#


 

目前内网用户无法通过公网地址访问内网的WEB服务器。

处理过程

方案一:

如果WEB服务器可以通过域名(www.abc.com)访问,且私网中有DNS服务器,可以在DNS服务器上写入“www.abc.com 192.168.1.100”的A记录。

这样,当内网用户通过域名访问内网服务器时,会先向DNS服务器请求域名对应的IP地址,这样DNS服务器就会把服务器地址解析为私网IP地址。

 

方案二:

如果WEB服务器可以通过域名(www.abc.com)访问,但是私网中没有DNS服务器,可以通过在AR上配置DNSNAT ALG功能和DNS Mapping功能来实现。
 

配置如下:

nat alg dns enable
nat dns-map www.abc.com 202.12.111.1 80 tcp

 

这样,当内网用户通过域名访问内网服务器时,会向公网DNS服务器请求域名对应的IP地址。由于公网DNS服务器上记录的域名对应的IP地址为公网IP,当AR收到DNS响应报文后,先根据域名查找DNS Mapping映射表的公网地址,在根据公网地址查找WEB服务器,然后将DNS响应报文中的公网IP地址替换成WEB服务器的私网IP地址。这样,内网用户根据收到响应报文中的携带的私网IP地址,就可以实现通过域名访问WEB服务器了。

 

方案三:
 

如果私网内有大量的用户需要通过域名访问WEB服务器,会容易导致设备CPU占用率高。因为NAT ALG功能是在控制面做的,使能NAT ALG后,所有DNS报文都会上送给ALG模块处理,如果DNS报文多了,就会导致CPU占用率高。这种情况下,不建议配置NAT ALGDNS Mapping,推荐采用NAT OutboundNAT Server的方式来规避此问题。

配置如下:

#

acl number 3000

rule 0 permit ip source 192.168.1.0 0.0.0.255 destination 202.12.111.1 0

#

interface GigabitEthernet1/0/0

ip address 192.168.1.1 255.255.255.0

nat outbound 3000 //内网主机直接访问202.12.111.1时做Easy IP,将源地址改为GE1/0/0的地址,保证内网服务器和内网主机间的交互都经过Router转发

 nat server protocol tcp global 202.12.111.1 www inside 192.168.1.100 www  //内网主机直接访问202.12.111.1时,将目的地址改为私网地址
 

方案四:

如果WEB服务器没有域名,只能通过IP地址访问,需要使用策略路由将内网PC访问WEB服务器公网IP地址的流量重定向到与AR直连的运营商设备上。这样,源地址转换为公网IP,运营商设备再将数据流量发回到AR。数据流达到AR后, NAT Server生效,目的地址转换为WEB服务器私网地址。WEB服务器回应报文达到AR后,根据NAT Server表项将数据流的源地址转换为WEB服务器的公网地址,运营商设备会再将数据流发回到ARAR根据之前的NAT表项将数据流的目的地址转换为私网IP,再将数据流发送给内网用户PC。流量的地址转换过程如下图所示:
 



配置如下(假设与AR直连的运营商设备IP地址为202.12.111.2):

acl number 3000
rule 5 permit ip source 192.168.0.0 0.0.0.255 destination 202.12.111.1 0
rule 10 permit ip source 192.168.1.0 0.0.0.255 destination 202.12.111.1 0
#
traffic classifier redirect operator or
if-match acl 3000
#
traffic behavior redirect
redirect ip-nexthop 202.12.111.2
#
traffic policy redirect
classifier redirect behavior redirect
#
interface GigabitEthernet1/0/0
traffic-policy redirect inbound
#
interface GigabitEthernet2/0/0
traffic-policy redirect inbound

根因

在公网口GE3/0/0上配置了NAT Server,仅对从公网口接收到的数据包进行目的地址的转换,而内网用户对服务器访问的流量来自私网口,不会触发目的地址转换。

建议与总结

在服务器有域名的场景下,优先采用方案一和方案三,无域名的场景下采用方案三和方案四。

END