路由器NAT的另类使用方式参考

来源:网络   编辑:朵朵   发布日期:2019-01-30   字体:【  
【文章摘要】如果企业边界设备是路由器的话,局域网中有一服务器,并通过端口映射将其发布到公网IP上。外网用户可通过该公网IP访问OA服务器,但内网用户无法通过域名访问、和外网地址访问。

  如果企业边界设备是路由器的话,局域网中有一服务器,并通过端口映射将其发布到公网IP上。外网用户可通过该公网IP访问OA服务器,但内网用户无法通过域名访问、和外网地址访问。通过抓包检查后发现在进行第二次握手时,出现了问题,下面举个简单的例子。

  内网一台主机192.168.0.2建了个WEB服务站点端口80,然后在网关(其内网地址是192.168.0.1、公网地址为1.1.1.1)上映射80端口到192.168.0.2的80端口,这样INTERNET上就能以http://1.1.1.1:80的地址访问到192.168.0.2的WEB站点了。

  然后出现了个问题,在同网吧的另一台电脑192.168.0.3上,键入http://1.1.1.1:80,却无法访问该WEB站点。

路由器NAT的另类使用方式

工作过程大概是这样:

  192.168.0.3要请求访问1.1.1.1的80端口,根据它掌握的路由表,它本身是不知道电脑1.1.1.1在哪里的,所以把将这个数据包发送给它的默认路由,即电脑192.168.0.1。

  注意:这个数据包的源地址是192.168.0.3、源端口假设是1025、目标地址是1.1.1.1、目标端口是80、SYN标志位为1、这是建立TCP连接的第一次握手。

  如果“把目标地址为1.1.1.1的数据包发给了192.168.0.1”你听起来觉得有点矛盾,其实这个数据包的目标IP地址是1.1.1.1,目标MAC地址却是192.168.0.1的。

  192.168.0.1接收到了这份数据包(因为它的身份是路由器,所以允许接收和转发目标地址不是自已、MAC地址却是自已接口MAC地址的数据包),它分析这个数据包的目标地址,发现这个数据包是需要中转到电脑192.168.0.2:80去的,于是它把这个数据包转发给了电脑192.168.0.2:80。

  注意:这个数据包的源地址是192.168.0.3、源端口是1025、目标地址为192.168.0.2、目标端口为80、SYN标志位为1。我们要注意这个数据包在转发后发生了变化了,即目标地址变了。

  电脑192.168.0.2顺利接到了数据包,它马上作出回应,发送一个数据包给电脑192.168.0.3。

  注意:这个数据包的源地址是192.168.0.2、源端口是80、目标地址192.168.0.3、目标端口为1025、SYN标志位为1、ACK标志位为1、这是建立TCP连接的第二次握手。

  电脑192.168.0.3顺利接到了数据包,然而它发现这是一个来自192.168.0.2:80的回应,因为ACK标志位值为1摆在那里呢。它想不起来什么时候给192.168.0.2:80这个目标对象发送过SYN请求,它认为这是一个错误的数据包,于是决定把这个数据包丢弃。然后继续等待1.1.1.1:80的回应,一直等到超时。

  而电脑192.168.0.2这边,它等192.168.0.3:1025的第三次握手请求包发送过来,以便建立一个TCP的连接。同样也没有结果,一直等到超时。三次握手在规定的时间内没有完成,访问宣布流产了。

解决方法是:

  将常规的ip nat inside source static tcp X.X.X.X 80 X.X.X.X 80更改为ip nat source static tcp X.X.X.X 80 X.X.X.X 80

  然后把接口下的ip nat inside、outside 修改为 ip nat enable

  就可以达到类似ASA上的DNS刮除的特性,并且可以用外部的IP访问。

  至于命令的工作原理还在摸索中,在学习过程中有想法就必须马上付出实践,灵感一没,解决方案可能也会随之消失! 感觉挺艺术家的!哈哈哈!

关键词:路由器,NAT,的,另类,使用,方式,如果,企业,边界

转载请保留:https://www.uguu.com/article-30939.html

免责声明:文章仅代表作者个人观点,不代表本站赞同其观点和对其真实性负责,版权归原作者及原出处所有。文章仅供学习交流,并不用于任何商业目的,部分文章来源于网络,如稿件涉及您的版权、名益权等问题,请联系fankui#uguu.com(#换成@),我们将根据著作权人的要求,立即更正或删除有关内容!