利用反向NAT实现内网用户使用域名访问内网服务器

一、       组网:

   1.jpg

内网搭建服务器192.168.2.254将服务器的80端口映射至8.8.8.880端口上,并申请域名www.abc.com给予内外网用户提供服务,内网PC机的IP地址为192.168.2.2出口路由器部署NAT实现内外网用户均可使用域名访问内网服务器

二、       问题描述:

内网用户无法通过域名访问内网服务器。

三、      过程分析:

现在我们在路由器的外网口配置如下命令:

acl number 2000

rule permit source 192.168.2.0 0.0.0.255

quit

int g0/0 //外网口

ip address 8.8.8.8 255.255.255.0

nat server protocol tcp global 8.8.8.8 www inside 192.168.2.254 www

nat outbound 2000

quit   

 

内网用户通过域名是不能访问服务器的,数据流程如下:

1、内网用户发起DNS请求,域名解地址为8.8.8.8,客户机发出请求,IP报头结构如下:源IP192.168.2.2,目的IP8.8.8.8

2、数据到达路由器后,由于路由器上有8.8.8.8的直连路由,数据直接交到外网口,由于外网口配置有NAT Server,目的IP被转换后发到服务器,IP报头结构如下:源IP192.168.2.2,目的IP192.168.2.254

3、服务器收到数据后,发现源IP就是一个本地IP地址,此时服务器就不会以8.8.8.8ip回复,而是以192.168.2.254为源地址回复。此时的IP数据包结构为:源IP192.168.2.254,目的IP192.168.2.2,数据将到客户机后,客户机认为自己请求的是8.8.8.8的数据,但是收到的是192.168.2.2发送的,则认为这个数据不是自己要的,此时会丢弃掉该数据,从而引起TCP等待超时,导致无法访问。

 

  为了解决该问题,我们在内网口做如下设置:

acl number 3000

rule permit ip source 192.168.2.0 0.0.0.255 destination 192.168.2.254 0.0.0.0

int g0/1 //内网口

nat outbound 3000

nat server protocol tcp global 8.8.8.8 www inside 192.168.2.254 www

quit

 

经过以上配置后,我们再在内网使用域名访问该服务器,数据流程如下:

1、内网用户发起DNS请求,域名解析为8.8.8.8地址,客户机发出请求,IP报头结构如下:源IP192.168.2.2,目的IP8.8.8.8

2、数据交到路由器的内网口,首先匹配端口映射,将目的IP更换掉,此时IP报头结构如下:源IP192.168.2.2,目的IP192.168.2.254

3、路由器发现该数据为内网数据,会再从内网口发出去,此时再匹配nat outbound,将源IP换掉,此时IP报头结构为:源IP192.168.2.1,目的IP192.168.2.254

4、服务器收到数据后响应请求,回复数据包IP报头结构为:源IP192.168.2.254,目的IP192.168.2.1

5、数据到达路由器后,根据NAT OutboundNAT Server的记录表项,将源IP和目的IP替换掉,此时IP报头结构为:源IP8.8.8.8,目的IP192.168.2.2,这样内网用户就可以使用域名访问内网服务器了。

 


2016年08月