“创建解决方案(解决问题)有多种方法,但并不总是最昂贵和/或流行的方法-最有效!”前言
大约三年前,在开发远程灾难恢复模型的过程中,我遇到了一个未被发现的障碍-缺乏有关社区资源中用于网络虚拟化的新原始解决方案的信息。
->
构建虚拟网络的实用指南。 第一部分开发模型的算法计划如下:
- 与我联系并且其计算机曾经拒绝启动并显示消息“未检测到系统磁盘/未格式化”的远程用户使用Life USB将其加载。
- 在引导过程中,系统会自动连接到安全的专用局域网,此外,还有管理员的工作站(在本例中为笔记本电脑)和NAS节点。
- 然后,我连接-重新设置磁盘分区的动画,或者从那里拉出数据。
最初,我是使用VPN服务器在网络中的本地路由器上,然后在租用的VDS上实现此模型的。 但是,按照Chisholm的第一定律,经常会下雨-Internet提供商将“倒下”,然后是企业实体的纠纷-能源提供商将从服务提供商中消失...
因此,我决定首先制定必要工具应满足的基本要求。 首先是权力下放。 第二个-假设我有多个此类USB,那么每个USB都有一个独立的隔离网络。 第三个是各种设备到网络的快速连接及其简单的管理,包括万一我的笔记本电脑也成为上述法律的受害者。
基于此,我花了两个半月的时间对几种不太合适的选择进行了实践研究,但我冒着风险和风险,决定尝试另一种我不知道的创业公司,称为ZeroTier。 后来从未后悔过。
在这些新年假期中,为了了解自那个令人难忘的时刻以来内容的状况是否发生了变化,我采用了来源-Habr,对有关此主题的文章的可用性进行了选择性审核。 在“ ZeroTier”的请求中,其搜索结果中只有三篇文章被提及,而并非一篇,至少是简短但具有描述性。 尽管有这样的事实,但其中有一个由ZeroTier,Inc.创始人撰写的文章的翻译。 -
亚当·叶里缅科 (
Adam Ierymenko) 。
结果令人失望,并促使我开始更详细地谈论ZeroTier,从而使现代的“寻求者”免于遵循我所遵循的相同路线的需要。
那你呢
开发人员将ZeroTier定位为地球的智能以太网交换机。
“这是一个基于加密安全的全球对等(P2P)网络的分布式网络管理程序。 一种类似于SDN的公司工具,旨在在本地和全局物理网络之上组织虚拟网络,并具有连接几乎所有应用程序或设备的能力。”
现在更多地是关于技术特征的市场描述。
▍内核:
ZeroTier网络管理程序是一个独立的网络虚拟化引擎,它通过全局加密的对等(P2P)网络模拟类似于VXLAN的以太网网络。
ZeroTier中使用的协议是原始协议,尽管它们在外观上与VXLAN和IPSec相似,并且由两个概念上独立但密切相关的级别组成:VL1和VL2。
→
链接到文档▍VL1以其自身的方式是基本的点对点(P2P)传输层-“虚拟电缆”。
“全球数据中心需要带有电缆的“全球机柜”。”在常规网络中,L1(OSI层1)是指实际的电缆或无线信道,数据通过这些电缆或无线电信道传输,并指的是对它们进行调制和解调的收发设备的物理芯片。 VL1是对等(P2P)网络,它使用加密,身份验证和其他网络技巧来按需组织虚拟电缆,从而实现相同功能。
而且,它可以自动,快速地执行此操作,而无需用户启动新的ZeroTier节点。
为此,VL1的组织方式类似于域名系统。 网络基于一组高度可访问的根服务器,其作用类似于DNS根名称服务器的作用。 目前,主要(行星)根服务器由开发人员-ZeroTier,Inc.管理。 并作为免费服务提供。
但是,可以创建允许以下操作的自定义根服务器(月亮):
- 减少对基础设施的依赖ZeroTier,Inc .; 文档链接
- 通过最大程度地减少延迟来提高生产率;
- 如果失去互联网连接,请继续照常工作。
最初,节点开始时彼此之间没有直接连接。
VL1上的每个对等方都有一个唯一的40位(10个十六进制数字)ZeroTier地址,该地址不同于IP地址,是一个不包含路由数据的加密标识符。 该地址是根据公共/私有密钥对的公共部分计算得出的。 节点地址,公钥和私钥共同形成其身份。
Member ID: df56c5621c | ZeroTier address of node
至于加密,这是另外一篇文章的场合。
→
链接到文档为了建立通信,对等方首先通过根服务器树“向上”发送数据包,并且当这些数据包通过网络传播时,它们会沿该路径启动直接信道的随机创建。 为了不断优化其存储的路由方案,该树一直在尝试“折叠自身”。
对等建立机制如下:
- 节点A希望将数据包发送到节点B,但是由于它不知道直接路径,因此它在上游方向将其发送到节点R(月球,用户根服务器)。
- 如果节点R与节点B有直接连接,则将数据包转发到那里。 否则,它将沿上游方向发送数据包,直到到达行星根为止,行星根知道所有节点,因此,如果该数据包处于联机状态,则最终将到达节点B。
- 节点R还向节点A发送一条消息“ rendezvous”,其中包含有关如何到达节点B的提示。同时,将数据包转发到节点B的根服务器发送“ rendezvous”通知其如何到达节点B。节点A。
- 节点A和B接收到它们向集合点发送的消息,并尝试相互发送测试消息,试图突破NAT或途中遇到的有状态防火墙的漏洞。 如果这样做有效,则建立直接连接,并且程序包不再进入“花园”。
如果无法建立直接连接,则连接将继续通过继电器进行,尝试直接连接的过程将继续进行,直到获得肯定的结果为止。
VL1还具有用于建立直接连接的其他功能,包括LAN的对等发现,用于对称IPv4 NAT穿越的端口预测以及使用uPnP和/或NAT-PMP的显式端口映射(如果在本地物理LAN上可用)。
→
链接到文档▍VL2-具有SDN管理功能的类似于VXLAN的以太网虚拟化协议。 熟悉的OS和应用程序通信环境...
与VL1不同,VL2网络(VLAN)的创建以及节点与它们的连接以及它们的管理要求用户直接参与。 他可以使用网络控制器执行此操作。 实际上,它是一个常规的ZeroTier节点,该控制器的功能通过两种方式进行控制:直接通过更改文件或开发人员强烈建议使用已发布的API进行控制。
对于简单的外行来说,这种管理虚拟网络ZeroTier的方法不是很方便,因此有几种GUI:
- 来自开发商ZeroTier的一个,作为SaaS模型提供的公共云解决方案提供,具有四个订阅计划,包括免费的,但受管设备的数量和支持级别受到限制
- 第二个来自独立开发人员,其功能有所简化,但可以作为私有开源解决方案使用,以在内部部署或在云资源上使用。
VL2层在VL1之上实现并由其传输。 同时,它继承了VL1级别端点的加密和身份验证,并且还使用其非对称密钥来签名和验证凭据。 VL1层允许您实现VL2,而无需担心物理网络的现有拓扑。 也就是说,连接问题和路由效率是VL1级别的任务。 重要的是要了解VL2虚拟网络和VL1路径之间没有连接。 就像有线LAN中的VLAN多路复用一样,共享多个公共网络成员资格的两个节点之间仍然只有一条VL1(虚拟电缆)路径。
每个VL2网络(VLAN)由ZeroTier网络的64位(十六进制数字)地址标识,该地址包含ZeroTier控制器的40位地址和一个24位数字,该数字标识此控制器创建的网络。
Network ID: 8056c2e21c123456 | | | Network number on controller | ZeroTier address of controller
当节点加入网络或请求网络配置更新时,它会通过网络VL1向网络控制器发送网络配置请求消息。 然后,控制器使用节点的VL1地址在网络上找到它,并向其发送适当的证书,凭据和配置信息。 从VL2虚拟网络的角度来看,VL1 ZeroTier地址可以视为全球规模的大型虚拟交换机上的端口号。
网络控制器发布给参与此网络的节点的所有凭据均使用控制器的秘密密钥签名,以便所有网络参与者均可对其进行验证。 凭证具有由控制器创建的时间戳,这允许相对比较,而不必访问节点的本地系统时钟。
凭证仅颁发给其所有者,然后发送给希望与网络上其他节点交换数据的对等方。 这允许网络扩展到巨大的规模,而无需在节点上缓存大量凭据或不断访问网络控制器。
ZeroTier网络通过简单的发布/订阅系统支持多播。
→
链接到文档当节点想要接收特定通讯组的多播邮件时,它会向与其连接的网络的其他成员和网络控制器宣告该组中的成员身份。 当节点想要发送多播邮件时,它会同时访问其最近发布的缓存并定期请求其他发布。
广播(以太网ff:ff:ff:ff:ff:ff)被视为所有成员都订阅的多播组。 如果不需要,可以在网络级别禁用它以减少流量。
ZeroTier模拟真实的以太网交换机。 这一事实允许
使用常规的以太网桥在数据链路级别将创建的虚拟网络与其他以太网网络(有线LAN,WiFi,虚拟底板等)组合在一起。为了充当网桥,网络控制器必须这样指定网络节点。 出于安全原因实施此方案,因为不允许普通网络节点从其MAC地址以外的来源发送流量。 由网桥分配的节点还使用一种特殊的多播寻址算法模式,该模式在组订阅以及所有广播流量和ARP请求的复制过程中与它们进行更积极,更有效的交互。
该交换机还具有创建公共网络和临时网络的能力,QoS机制和网络规则编辑器。
▍节点:
ZeroTier One是一项在笔记本电脑,台式机,服务器,虚拟机和容器上运行的服务,可通过虚拟网络端口(例如VPN客户端)提供与虚拟网络的连接。
安装并启动服务后,您可以使用其16位地址连接到虚拟网络。 每个网络看起来像系统中的虚拟网络端口,其行为与常规以太网端口相同。
ZeroTier One当前可用于以下OS和系统。
作业系统:
- Microsoft Windows -MSI安装程序x86 / x64
- MacOS -PKG安装程序
- Apple iOS -App Store
- Android -Play商店
- Linux -DEB / RPM
- FreeBSD -FreeBSD软件包
NAS:
- 群晖NAS
- 威联通NAS
- WD MyCloud NAS
其他:
- Docker - Docker文件
- OpenWRT-社区端口
- 应用嵌入 -SDK(libzt)
综上所述,我想说ZeroZier是将物理,虚拟或云资源组合到公共本地网络中的绝佳工具,它可以将其划分为VLAN,并且没有单点故障。
关于它的理论部分,第一篇关于Habr的ZeroTier文章的格式-可能全部! 在下一篇文章中,我计划在实践中演示基于ZeroTier的虚拟网络基础结构的创建,其中将使用具有私有开源GUI模板的VDS作为网络控制器。
亲爱的读者们! 您是否在项目中使用ZeroTier技术? 如果没有,您使用什么工具将资源合并到一个公共网络中?
