开源网格VPN meshboi及其背后原理

21-07-16 banq

网格Mesh VPN如NebulaTailscaleZerotierTinc有助于在互联网上创建对等(网格)网络。这些工具安全、高效且透明地使多台分布式计算机能够进行通信,就好像它们物理连接到同一网络交换机(第 2 层或第 3 层,取决于所使用的工具和配置)。这些工具有很多用例,但一些流行的用例是:

  • 允许跨多个云的实例上的服务进行通信
  • 允许漫游用户安全远程访问家庭网络
  • 将“家庭实验室”网络与云网络连接起来

这些工具使这种通信对于通过网格发送和接收数据包的应用程序透明地发生,同时还可以解决 Internet 网络中的常见障碍,例如防火墙和 NAT。

网格模型与传统的“明星”VPN 解决方案形成对比,例如 OpenVPN 或 StrongSwan。在星型 VPN 中,peer 之间的流量需要通过中央 VPN 服务器,这会增加延迟并降低可扩展性(中央服务器只能处理这么多流量)。

meshboi 是一种玩具网格VPN 实现,专为娱乐和学习目的而创建。它允许以类似于NebulaTailscale等工具的方式在互联网上创建对等网络。Meshboi 是用 Go 编写的,纯粹是为了娱乐和学习而创建的(所以请使用其他出色的工具之一来运行生产环境!)。

 

在创建这样的工具时,有几个核心问题需要解决。

  • 可发现性/自举——如果两个对等点想要互相交谈,他们如何知道如何找到对方以形成链接?
  • 透明度- 该工具应允许应用程序将其流量发送到网格上的对等点,而无需应用程序了解网格上的任何细微之处。该工具应该抽象出网格 VPN 的概念,以便应用程序不需要修改并且可以像普通网络应用程序一样运行。
  • 网络地址转换 (NAT) - 大多数互联网仍然基于 IPv4,因此允许两台计算机之间的通信都在 NAT 之后存在复杂性。在某些情况下,一层或什至两者都可以位于多层 NAT (CGNAT) 之后。
  • 防火墙- 在任何两对计算机之间,通常有很多防火墙通常(并且可能是正确的!)阻止未经请求的网络流量进入网络。虽然其中一些防火墙是可配置的,并且可以打开,但在某些环境中,防火墙不受用户控制(想想公司网络或咖啡馆中的 wifi 热点)。某些 ISP 甚至可能会阻止某些类型的流量。
  • 安全性- 如果某个工具将本地网络暴露给 Internet,则应确保流量受到保护,以免第三方读取或篡改。大多数这些网格 VPN 工具使用的模型是,来自互联网的流量不受信任,但一旦进入,它就会受到信任。

 

如果您追求生产就绪的网格 VPN 解决方案,那么有很多解决方案比 meshboi 效果更好。特别是,像 Tailscale 和 Nebula 这样的解决方案可以做如下事情:

  • 多平台支持(OSX、Windows)
  • 更好的身份验证(基于证书或基于 SSO)
  • 有更好的表现
  • 一般稳健性
  • 已审核安全

详细点击标题

 

猜你喜欢