当前位置:   article > 正文

NAT分析(内网用户通过域名访问服务器)_域名nat内网

域名nat内网

1.环境假设:

        内网服务器的私网地址为192.168.2.251,将服务器的80端口映射至202.101.1.1的80端口上,并申请域名 www.sina.com,内网PC机的IP地址为192.168.2.2,现在我们在路由器的外网口配置如下命令:  sys  acl number 2000  rule permit source 192.168.2.0 0.0.0.255  quit  int g0/0    //外网口  ip address 202.101.1.1 255.255.255.0  nat server protocol tcp global 202.101.1.1 www indise 192.168.2.251 www  nat outbound 2000  quit 2.拓朴图如下: 

 经过以上配置后:

 一、外网用户通过域名或者公网IP地址应该可以访问服务器,数据流程如下:

  1.外网用户发起到202.101.1.1的TCP 80端口的连接,IP报头结构如下:源IP:外网用户的公网IP,目的IP:202.101.1.1   2.数据经过路由,到企业边源路由器,由于外网口上有端口映射,则数据会匹配映射,将IP报头结构改变成:源IP:外网用户的公网IP,目的IP:192.168.2.251   3.数据经过内网路由,交到服务器,服务器回应用户数据,IP报头结构如下:源IP:192.168.2.251,目的IP:外网用户的IP   4.数据经过边界路由器出公司,由于NAT Server的优先级高于NAT Outbound,所以,数据到达路由器后会先匹配NAT Server记录的会话表项,将IP报头转换成:源IP:202.101.1.1,目的IP:外网用户的公网IP   5.数据最终通过公网路由到达访问用户,数据访问成功。 二、内网用户通过域名是不能访问服务器的,数据流程如下:   1.内网用户发起DNS请求,域名解地址为202.101.1.1,客户机发出请求,IP报头结构如下:源IP:192.168.2.2,目的IP:202.101.1.1   2.数据到达路由器后,由于路由器上有202.101.1.1的直连路由,数据直接交到外网口,由于外网口配置有NAT Server,目的IP被转换后发到服务器,IP报头结构如下:源IP:192.168.2.2,目的IP:192.168.2.251   3.服务器收到数据后,发现源IP就是一个本地IP地址,此时服务器就不会以202.101.1.1为ip回复,而是以192.168.2.251为源地址回复。此时的IP数据包结构为:源IP:192.168.2.251,目的IP:192.168.2.2,数据将到客户机后,客户机认为,自己请求的是202.101.1.1的数据,但是收到的是192.168.2.2发送的,则认为这个数据不是自己要的,此时会丢弃掉该数据,从而引起TCP等待超时,导致无法访问。  为了解决该问题,我们在内网口做如下设置:    acl number 3000   rule permit ip source 192.168.2.0 0.0.0.255 destination 192.168.2.251   quit   int g0/1    //内网口   nat outbound 3000   nat server protocol tcp global 202.101.1.1 www inside 192.168.2.251 www   quit 经过以上配置后,我们再在内网使用域名访问该服务器,看看数据流程:    1.内网用户发起DNS请求,域名解析为202.101.1.1地址,客户机发出请求,IP报头结构如下:源IP:192.168.2.2,目的IP:202.101.1.1    2.数据交到路由器的内网口,首先匹配端口映射,将目的IP更换掉,此时IP报头结构如下:源IP:192.168.2.2,目的IP:192.168.2.251    3.路由器发现该数据为内网数据,会再从内网口发出去,此时再匹配nat outbound,将源IP换掉,此时IP报头结构为:源IP:192.168.2.1,目的IP:192.168.2.251    4.服务器收到数据后响应请求,回复数据包IP报头结构为:源IP:192.168.2.251,目的IP:192.168.2.1    5.数据到达路由器后,根据NAT Outbound和NAT Server的记录表项,将源IP和目的IP替换掉,此时IP报头结构为:源IP:202.101.1.1,目的IP为192.168.2.2    6.数据到达客户,目的IP和源IP正确,访问成功。 现在我们假设没有nat server protocol tcp global 202.101.1.1 www inside 192.168.2.251 www,来看一下数据报文是否能完整地走完 :(目前MSR路由器上的端口映射配置全局有效,不需要再在内网口配置该命令了。)    1.内网用户发起DNS请求,域名解析为202.101.1.1地址,客户机发出请求,IP报头结构如下:源IP:192.168.2.2,目的IP:202.101.1.1    2.数据将到路由器,由于外网口上有端口映射,则数据会匹配映射,将IP报文结构改变成: 源IP:192.168.2.2,目的IP:192.168.2.251    3.数据将到路由器内网口,匹配nat outbound,将源IP地址变掉,IP报文结构改变成:源IP:192.168.2.1,目的IP:192.168.2.251    4.数据交至服务器,服务器回复报文,IP报头为:源IP:192.168.2.251,目的IP:192.168.2.1    5.路由器收到后,匹配内网口NAT Outbound的记录表项,将其IP报头改为:源IP:192.168.2.251,目的IP:192.168.2.2    6.数据直接交给客户机,客户机依然认为不是自己请求的数据,丢弃,继续等待,超时,失败。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/525982
推荐阅读
相关标签
  

闽ICP备14008679号