内网穿透技术一览

先看一个问题

在拉家庭宽带的时候,直接拉运营商的宽带有点贵,市场上通常还会有类似于鹏博士,长城宽带之类的商家,它们价格很低,号称宽带速度也很快,你拉还是不拉?

  • 其一、与电信宽带相比,鹏博士们的速度肯定是随者整栋大楼使用人数增加而递减;
  • 其二、这些鹏博士宽带们一般都无法使用P2P软件,你没法用BT,电驴,迅雷下片。

为什么P2P软件没法用呢,这就涉及到内网穿透的问题,接下来我们来看下目前主流的内网穿透的几种方式。

一、静态端口映射

这种方式就是手动在路由器上进行端口映射,例如将80端口映射到本地一台机器的8888端口上。

  • 优点:
    这种方式映射的端口永久有效,除非人为去删除或修改。
  • 缺点:
    完全依赖于人工的静态配置,扩展性极差。

二、UPNP动态端口映射

这种方式是利用UPNP协议,内部主机的程序与路由器协商,动态的进行端口映射。这是P2P软件最主要的内外网穿透方式。家里用的BT,电驴,迅雷,以及所有的区块链项目都依赖于这个协议动态的做端口映射。

流程:

  • 路由器开启UPNP服务,向外暴露自己根设备的身份
  • 内部的主机通过UPNP协议,在本地链路网络中搜索支持端口映射功能根设备,也就是路由器
  • 内部主机找到路由器后,向路由器申请创建端口映射规则,将本地端口映射到路由器上。

优点:

可以应用自动与路由器协商完成端口映射过程,无需人工参与。

缺点:

路由器可能禁止这个服务。(其实家里的路由器出厂都是默认开启这个的)

三、NAPT打洞

原理:内网主机往外部发送报文后,路由器就建立一个内部主机端口的临时端口映射,外部的主机可以通过这个映射的端口将数据发给内部主机。

NAPT的类型划分

  • 圆锥型NAT(Cone NAT)
    也叫非对称型NAT。圆锥型型又可以划分为以下三种子类型:
    • 完全锥形NAT (Full Coe NAT)
      在这里插入图片描述
      这种情况下,内网端口2000往外部服务器S1的2000端口发数据后,外部网络任意主机都可以通过任意源端口通过路由器上这个给它发数据了。
      例如图中
      主机S1可以通过2000端口,3000端口给内部设备发数据;
      主机S2虽然没有得到内部主机主动给它打洞,但是也可以通过任意端口给内网主机发数据。

    • 地址限制型锥形NAT (Address Restricted Cone NAT)
      在这里插入图片描述这种情况下,内网主机端口2000往外部服务器S1的2000端口发数据后,S1服务器可以通过任意端口给内网主机发消息,而此时其他主机如图中的S2主机就无法再联通内网主机了。

    • 端口限制型锥形NAT (Port Restricted Cone NAT)
      在这里插入图片描述
      这种类型的NAT,当内网主机用2000端口往S1的2000端口发消息后,有且仅有S1用2000端口做为源端口给内网主机回消息。如图中的S1端口通过源端口3000给内网主机回消息时会被路由器阻挡,服务器S2给内网主机发的任何消息都会被阻挡。

我测试的TPLINK路由器,华为路由器,都默认是这种NAT类型,所以NATP打洞都主要以这种类型为主,打通这种NAT类型的洞,其他的锥形NAT都是可以通的。

  • 对称型NAT (Symmetric NAT)
    在这里插入图片描述
    这种类型的NAT,内网主机用端口2000往S1的2000端口发消息后,S1可以通过2000端口给它回复消息,当 内网主机再给服务器S1的3000端口发消息时,在路由器上映射的端口号变了,S1此时只能用端口3000沿着通道给内网主机回消息了。

对称型NAT和端口限制型NAT的区别

端口限制型NAT,用同一个端口给不同的目的IP和端口发消息时,NAT设备上映射的端口号没变,而对称型NAT会变成一个新的映射端口,之前的映射端口无效了。

对称型NAT之所以难以打洞,是因为这个端口映射的规律,不同的设备不一样,有些设备映射的规则可能是递增一个步长,而有些设备直接是随机算法生成的。

优点

打洞协议简单,编程实现方便。相比UPNP协议,打洞只需要往外部发数据就可以完成临时端口的映射。

缺点

打洞建立的端口映射规则是有时效的,为了维护这个端口映射规则,需要定时发心跳包。
对称型NAT,端口映射的规律可能是随机的,打洞可能不成功。

三、DMZ主机

在很多路由器上,还有一种端口映射:
内部网络中指一台DMZ主机,然后这台DMZ主机所有端口不经映射,完全裸奔,暴露给外部网络。

优点

配置方便。

缺点

安全性差,只适合内部只有一台主机需要对外提供服务的情况。

猜你喜欢

转载自blog.csdn.net/yinmingxuan/article/details/88344495