2024-08-24 11:41:32
,某些文章具有时效性,若有错误或已失效,请在文末留言。在了解内网穿透原理之前,我们先说什么是内网穿透。内网,就是在公司或者家庭内部,建立的局域网络或者是办公网络,可以实现多台电脑之间的资源共享,包括设备、资料、数据等。而外网则是通过一个网关与其它的网络系统连接,相对于内网而言,这种网络系统称之为外部网络,常见的就是我们日常使用的互联网。
一般而言,在没有固定公网IP的情况下,外网设备无法直接访问内网设备。而内网穿透技术,顾名思义就是能让外网的设备找到处于内网的设备,从而实现数据通信。
内网穿透原理
内网穿透,又称为NAT穿透。NAT背后的设备,它们的主要特点是 ,可以访问外网,但不能被外网设备有效访问。基于这一特点,NAT穿透技术是让NAT背后的设备,先访问指定的外网服务器,由指定的外网服务器搭建桥梁,打通内、外网设备的访问通道,实现外网设备访问到内网设备。
该技术除了可以访问隐藏在NAT后的设备,同样可以穿透防火墙。这是因为防火墙一般只拦截了入站没有拦截出站,所以也可以让防火墙内的设备对外提供服务。
由于内网设备并不是与外网设备直接相连,所以在安全性上是毋庸置疑的,内网穿透可以说是安全与效率兼得。
传统星型拓扑
在传统架构中,如果两个位于多层 NAT(简单理解为多个路由器)之后的设备, 只能通过一些中央(VPN/远程软件)中转服务器进行链接,这时网络连接速度取决于中央服务器带宽和速度,这种网络架构我这里简称为:星型拓扑。
从这张图上可以看出,你的“工作笔记本”和“家庭 NAS”之间通讯的最大传输速度为 Up/Down:512K/s;因为流量经过了中央服务器中转,由于网络木桶效应存在,即使你两侧的网络速度再高也没用,整体的速度取决于这个链路中最低的一个设备网速而不是你两端的设备。
在这种拓扑下,想提高速度只有一个办法:加钱!在不使用“钞能力”的情况下, 普遍免费的软件提供商不可能给予过多的资源来让用户白嫖,而自己弄大带宽的中央服务器成本又过高。
NAT穿透与网状拓扑
既然传统的星型拓扑有这么多问题,那么有没有其他骚操作可以解决呢?答案是有的,简单来说就是利用 NAT 穿透原理。NAT穿透简单理解如下:在 A 设备主动向 B 设备发送流量后,整个链路上的防火墙会短时间打开一个映射规则,该规则允许 B 设备短暂的从这个路径上反向向 A 设备发送流量,更通俗的讲大概就是所谓的:“顺着网线来打你”。
搞清了这个规则以后,我们就可以弄一台“低配”的中央服务器,让中央服务器来帮助我们协商两边的设备谁先访问谁(或者说是访问规则);两个设备一起无脑访问对方,然后触发防火墙的 NAT 穿透规则(防火墙打开),此后两个设备就可以不通过中央服务器源源不断的通讯了,在这种架构下我们的设备其实就组成了一个非标准的网状拓扑。
在这种拓扑下,两个设备之间的通讯速度已经不在取决于中央服务器,而是直接取决于两端设备的带宽,也就是说达到了设备网络带宽峰值。当然,NAT穿透也不是百分百能够成功的,在复杂网络情况下,有些防火墙不会按照预期工作或者说有更严格的限制,比如IP、端口、协议限制等等,所以为了保证可靠性可以让中央服务器中转做后备方案,即尽量尝试 NAT 穿透,如果不行走中央服务器中继。
而 Tailscale 就是一种利用 NAT 穿透(aka:P2P穿透)技术的 VPN 工具,Tailscale客户端等是开源的,不过遗憾的是中央控制服务器目前并不开源。Tailscale目前也提供免费的额度给用户使用,在 NAT 穿透成功的情况下也能保证满速运行。
不过一旦无法 NAT 穿透需要做中转时, Tailscale 官方的服务器由于众所周知的原因在国内访问速度很拉胯,万幸的是开源社区大佬们搓了一个开源版本的中央控制服务器(Headscale),也就是说:我们可以自己搭建中央服务器啦,完全“自主可控”啦。
至于怎么搭建 Headscale 服务端,后面有空再分享啦!
●版权归原作者和机构所有,严禁商用,否则产生的一切后果将由您自己承担
●如果您不喜欢本站有您信息的存在,请邮件告知我们予以删除
暂无评论内容