地球智能以太网交换机

地球智能以太网交换机
“您可以通过多种方式创建解决方案(解决问题),但最昂贵和/或流行的方法并不总是最有效的!”

前言

大约三年前,在开发灾难数据恢复的远程模型的过程中,我遇到了一个没有立即注意到的障碍——社区资源中缺乏有关网络虚拟化的新的原始解决方案的信息。 

所开发模型的算法规划如下: 

  1. 一位联系我的远程用户,他的电脑曾经拒绝启动,显示“系统磁盘未检测到/未格式化”的消息,使用生活USB加载它。 
  2. 在启动过程中,系统会自动连接到安全的专用本地网络,该网络除了本身还包含管理员工作站(在本例中为笔记本电脑)和 NAS 节点。 
  3. 然后我连接 - 要么恢复磁盘分区,要么从那里提取数据。

最初,我在我控制的网络中的本地路由器上使用 VPN 服务器来实现此模型,然后在租用的 VDS 上实现。 但是,正如经常发生的那样,根据奇泽姆第一定律,如果下雨,互联网提供商的网络就会瘫痪,那么商业实体之间的纠纷将导致服务提供商失去“能量”......

因此,我决定首先制定必要的工具必须满足的基本要求。 首先是权力下放。 其次,鉴于我有几个这样的生活 USB,每个 USB 都有一个单独的隔离网络。 好吧,第三,快速连接到各种设备的网络并对其进行简单的管理,包括以防我的笔记本电脑也成为上述法律的受害者。

基于此,在花了两个半月对几个不太合适的选项进行实际研究后,我决定尝试另一个来自当时我不认识的初创公司的工具,即 ZeroTier。 我后来从未后悔过。

在这些新年假期期间,为了了解自那个难忘的时刻以来内容的情况是否发生了变化,我以 Habr 作为来源,对有关该主题的文章的可用性进行了选择性审核。 对于搜索结果中的查询“ZeroTier”,只有三篇文章提到它,而且没有一篇文章至少有简短的描述。 尽管其中有由 ZeroTier, Inc. 创始人本人撰写的一篇文章的翻译。 — 亚当·耶里缅科.

结果令人失望,促使我开始更详细地讨论 ZeroTier,让现代“探索者”不必走我走的路。

那么你是什么?

开发人员将 ZeroTier 定位为地球的智能以太网交换机。 

“它是一个分布式网络管理程序,构建在加密安全的全球点对点 (P2P) 网络之上。 一种类似于企业 SDN 交换机的工具,旨在通过本地和全球物理网络组织虚拟网络,能够连接几乎任何应用程序或设备。”

这更多的是营销描述,现在是技术特征。

▍内核: 

ZeroTier Network Hypervisor 是一个独立的网络虚拟化引擎,它在全球加密的对等 (P2P) 网络之上模拟以太网(类似于 VXLAN)。

ZeroTier 中使用的协议是原创的,尽管其外观与 VXLAN 和 IPSec 类似,并且由两个概念上独立但密切相关的层组成:VL1 和 VL2。

链接到文档

▍VL1是一个基本的点对点(P2P)传输层,一种“虚拟电缆”。

“全球数据中心需要一个‘全球布线室’。”

在传统网络中,L1(OSI 第 1 层)是指承载数据的实际电缆或无线电以及对其进行调制和解调的物理收发器设备芯片。 VL1 是一个点对点 (P2P) 网络,它执行相同的操作,使用加密、身份验证和其他网络技巧根据需要组织虚拟电缆。

此外,它会自动、快速地完成此操作,无需用户参与启动新的 ZeroTier 节点。

为了实现这一点,VL1 的组织方式与域名系统类似。 网络的核心是一组高可用的根服务器,其作用类似于 DNS 根名称服务器。 目前,主要(行星)根服务器由开发商 ZeroTier, Inc. 控制。 并作为免费服务提供。 

但是,可以创建自定义根服务器 (lun),以便您可以:

  • 减少对 ZeroTier, Inc. 基础设施的依赖; 链接到文档
  • 通过最大限度地减少延误来提高生产力; 
  • 如果互联网连接丢失,仍可继续正常工作。

最初,节点启动时彼此之间没有直接连接。 

VL1 上的每个对等方都有一个唯一的 40 位(10 个十六进制)ZeroTier 地址,与 IP 地址不同,它是一个不包含路由信息的加密标识符。 该地址是根据公钥/私钥对的公共部分计算得出的。 节点的地址、公钥和私钥共同构成其身份。

Member ID: df56c5621c  
            |
            ZeroTier address of node

至于加密,这是单独一篇文章的原因。

链接到文档

为了建立通信,对等方首先将数据包发送到根服务器树“向上”,当这些数据包穿过网络时,它们会沿途随机创建前向通道。 这棵树不断地尝试“自行崩溃”,以便针对其存储的路线图进行自身优化。

建立点对点连接的机制如下:

地球智能以太网交换机

  1. 节点 A 想要向节点 B 发送数据包,但由于它不知道直接路径,因此将数据包向上游发送到节点 R(moon,用户的根服务器)。
  2. 如果节点 R 与节点 B 有直接连接,则它会在那里转发数据包。 否则,它会在到达行星根之前将数据包向上游发送。行星根了解所有节点,因此如果节点 B 在线,数据包最终将到达节点 B。
  3. 节点 R 还向节点 A 发送一条称为“集合点”的消息,其中包含有关如何到达节点 B 的提示。同时,将数据包转发到节点 B 的根服务器会发送一条“集合点”,告知它如何到达节点 B。到达节点A。
  4. 节点 A 和 B 接收其会合消息并尝试向彼此发送测试消息,以试图突破沿途遇到的任何 NAT 或状态防火墙。 如果有效,则建立直接连接,并且数据包不再来回传输。

如果无法建立直接连接,则将通过中继继续通信,并继续尝试直接连接,直到获得成功结果。 

VL1 还具有用于建立直接连接的其他功能,包括 LAN 对等发现、对称 IPv4 NAT 遍历的端口预测以及使用 uPnP 和/或 NAT-PMP(如果在本地物理 LAN 上可用)的显式端口映射。

→ 链接到文档

▍VL2是一种类似VXLAN的以太网网络虚拟化协议,具有SDN管理功能。 熟悉的操作系统和应用程序通信环境...

与 VL1 不同,创建 VL2 网络 (VLAN) 并将节点连接到它们以及管理它们需要用户的直接参与。 他可以使用网络控制器来做到这一点。 本质上,它是一个常规的 ZeroTier 节点,其中控制器功能通过两种方式控制:通过更改文件直接控制,或者按照开发人员强烈建议,使用已发布的 API。 

这种管理 ZeroTier 虚拟网络的方法对于一般人来说不是很方便,因此有几种 GUI:
 

  • 开发商 ZeroTier 提供的一款,作为公共云 SaaS 解决方案提供,有四种订阅计划,包括免费,但托管设备数量和支持级别有限
  • 第二个来自独立开发人员,功能有所简化,但可作为私有开源解决方案在本地或云资源上使用。

VL2 在 VL1 之上实现并由其传输。 但是,它继承了 VL1 端点的加密和身份验证,并且还使用其非对称密钥来签名和验证凭据。 VL1 允许您实现 VL2,而无需担心现有的物理网络拓扑。 即连通性和路由效率问题属于VL1问题。 重要的是要了解 VL2 虚拟网络和 VL1 路径之间没有连接。 与有线 LAN 中的 VLAN 多路复用类似,共享多个网络成员身份的两个节点之间仍然只有一条 VL1(虚拟电缆)路径。

每个 VL2 网络 (VLAN) 由 64 位(16 进制)ZeroTier 网络地址标识,其中包含控制器的 40 位 ZeroTier 地址和标识该控制器创建的网络的 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 机制和网络规则编辑器。

▍节点:

零一级 是一种运行在笔记本电脑、台式机、服务器、虚拟机和容器上的服务,通过虚拟网络端口提供与虚拟网络的连接,类似于 VPN 客户端。 

安装并启动该服务后,您可以使用 16 位地址连接到虚拟网络。 每个网络都显示为系统上的虚拟网络端口,其行为就像常规以太网端口一样。

ZeroTier One 目前可用于以下操作系统和系统。

操作系统:

  • 微软Windows - MSI 安装程序 x86/x64
  • MacOS的 - PKG安装程序
  • 苹果iOS - 应用商店
  • Android - 应用商店
  • Linux - DEB/转速
  • FreeBSD的 - FreeBSD 软件包

NAS:

  • Synology NAS
  • QNAP NAS
  • 西数 MyCloud NAS

Другие:

  • 码头工人 - 泊坞窗文件
  • OpenWRT的 - 社区端口
  • 应用程序嵌入 - SDK(libzt)

总结以上所有内容,我要指出的是,ZeroTier 是一个出色且快速的工具,可将物理、虚拟或云资源组合到公共本地网络中,能够将其划分为 VLAN,并且不存在单点故障。

这就是关于 Habr 的 ZeroTier 的第一篇文章格式的理论部分 - 这可能就是全部! 在下一篇文章中,我计划在实践中演示基于 ZeroTier 的虚拟网络基础设施的创建,其中将使用带有私有开源 GUI 模板的 VDS 作为网络控制器。 

亲爱的读者! 您在项目中使用 ZeroTier 技术吗? 如果没有,您使用什么工具来联网您的资源?

地球智能以太网交换机

来源: habr.com

添加评论