利用反向NAT实现内网用户使用域名访问内网服务器
一、 组网:
内网搭建服务器192.168.2.254,将服务器的80端口映射至8.8.8.8的80端口上,并申请域名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报头结构如下:源IP:192.168.2.2,目的IP:8.8.8.8;
2、数据到达路由器后,由于路由器上有8.8.8.8的直连路由,数据直接交到外网口,由于外网口配置有NAT Server,目的IP被转换后发到服务器,IP报头结构如下:源IP:192.168.2.2,目的IP:192.168.2.254;
3、服务器收到数据后,发现源IP就是一个本地IP地址,此时服务器就不会以8.8.8.8为ip回复,而是以192.168.2.254为源地址回复。此时的IP数据包结构为:源IP:192.168.2.254,目的IP:192.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报头结构如下:源IP:192.168.2.2,目的IP:8.8.8.8;
2、数据交到路由器的内网口,首先匹配端口映射,将目的IP更换掉,此时IP报头结构如下:源IP:192.168.2.2,目的IP:192.168.2.254;
3、路由器发现该数据为内网数据,会再从内网口发出去,此时再匹配nat outbound,将源IP换掉,此时IP报头结构为:源IP:192.168.2.1,目的IP:192.168.2.254;
4、服务器收到数据后响应请求,回复数据包IP报头结构为:源IP:192.168.2.254,目的IP:192.168.2.1;
5、数据到达路由器后,根据NAT Outbound和NAT Server的记录表项,将源IP和目的IP替换掉,此时IP报头结构为:源IP:8.8.8.8,目的IP为192.168.2.2,这样内网用户就可以使用域名访问内网服务器了。
2016年08月
本期文章
-
刊首语
-
公司动态
-
行业聚焦
-
产品推荐
-
案例介绍
-
经验共享
-
服务明星
-
培训天地