一、内网穿透由来
百度搜索 “内网穿透” 你可以得到很多标准答案,比如:内网穿透即NAT(Network Address Translator)穿透,是指计算机在内网(局域网)内使用私有IP地址,在连接外网(互联网)时使用全局IP地址的技术,本文主要介绍原理,实操在后面系列文章将有详细介绍。
(一)NAT的由来
但如果你初次接触的话,肯定会看的一头雾水。说白了,TCP/IP作为当前互联网的基础协议已有快40年,部分规则早已不适用于当前的Internet,其中IP地址短缺问题最为突出,为了解决此问题,最新提出的IPV6 协议将地址空间扩展到128位,极大地增加了IP地址数量,并且在安全性、便捷 性、处理速度等方面都较IPV4有了很大的提高,所以如果你家有了IPV6,且应用/服务支持IPV6访问,则就不必看这篇文章了,后面我会出 IPV6 的教程。
但现在IPV4完全替换成IPV6还需要很漫长的时间,不仅需要设备支持,还需要众多应用/服务支持。IP地址短缺问题还将继续存在,所以在1994年NAT技术首次提出,其核心是将从内网到外网的数据包IP地址全部改为自身的公网IP,使得多台网络设备可共用一个公网IP地址,极大地节约了IP资源,在网络拓扑发生变化时也不需要重新编址,还隐藏了内部的网络结构,网络之外的终端凭数据包只能看到 NAT设备的信息,因此增强了内网的安全性。
(二)NAT的缺点
(1)增加了转发延迟
NAT在转发数据时需修改数据包的IP头部,转换私有地址与公共地址,重新计算校验和,产生的处理时延将增加端到端的网络延迟,且因为无法修改TCP数据部分内部的地址信息,需要传输地址信息的协议如FTP等将无法在有NAT的网络环境中使用。
(2)增加了连接限制
外网设备不能主动连接内部网络。由于大多数NAT 为内网设备分配的都是不能在公网使用的私有IP地址,外网设备即使得到内网设 备的IP地址,也无法传输连接请求包,因此服务器都不能放在具有NAT的网络下,客户端会无法连接。
(3)需要第三方服务器辅助连接
对于端到端连接类型的应用若连接双方均在各自NAT内部网络,而又没有第三方的公网服务器提供给它们做连接辅助,会因为双方的NAT上都没有连接对方的映射条目,导致两个终端均无法主动发起连接。
综上,多台设备共用一个IP地址的方式与设备必须拥有唯一地址这一IP协议的规则所冲突,TCP/IP中许多端到端连接的应用将受到NAT的限制,例如远程访问家庭设备、家庭设备对外公开等基本的网络行为都将无法实现,所以,能够在具有NAT的环境中完成端到端连接的NAT穿透技术由此诞生。当然,如果你有公网 IP 的话,那你就不用看这篇文章了,以后我会出 DDNS 的教程。
二、内网穿透可以做什么
那我们在什么情形下要用到内网穿透呢,我来简单举几个内网穿透的应用场景:
- 在公司要用到家里电脑,或者在家里需要用到公司的电脑临时办公;
- 你在家里搭建了一个网站、一个应用或者游戏,需要对外发布,奈何高配置的服务器太贵。
如果你说仅仅想远程控制电脑,收费的就有 TeamViewer、Splashtop、向日葵等。但不建议,除了部署简单外,在网络速度、易用性等方面都不行,而且费用较高。
三、怎么实现内网穿透
内网穿透技术有很多种,有UPnP协议、STUN协议和TURN协议等等。嗯,说多了估计云里雾里的,这里就不赘述了,想了解的可以百度下,目前来说比较流行的有 FRP、Ngrok、NPS 、Zerotier和Tailscale等等。
后续会陆续实操讲解,敬请期待。
再阅读此文之前我仅仅只知道一个Zerotier
学习了,以前知道有一个花生壳,应该也是这个原理的吧。