VPN网状网络允许附近的节点快速进行对等通信。

上个月,Slack的工程部门(一种通常用于社区和小型企业组织的即时消息传递平台)发布了一种名为Nebula的新型分布式VPN网格工具。Nebula是免费的开源软件,可在MIT 许可下获得。

简而言之,很难连贯地解释星云。据Slack工程团队的人员说,他们问自己“最安全的连接数万台计算机的最简单方法是什么?这些计算机托管在全球数十个地点的多个云服务提供商那里”。而且(正在发展中的)星云是他们的最佳答案。它是一种便携式,可扩展的覆盖网络工具,可在包括Linux,MacOS和Windows在内的大多数主要平台上运行,并计划在不久的将来提供一些移动设备支持。

星云传输的数据已使用Noise 协议框架进行了完全加密,该框架也用于信号强度和安全性高的现代项目中,例如Signal和WireGuard。与包括WireGuard在内的更传统的VPN技术不同,Nebula可以自动动态地发现节点之间的可用路由,并沿任意两个节点之间的最有效路径发送流量,而不是强迫所有操作通过中央分发点。

尽管文档很少,但开始使用Nebula并不困难。 用于Nebula 的Github 存储库提供了适用于Windows,Linux和MacOS的二进制文件,以及一个示例配置文件。配置文件包括pki,static_host_map,lighthouse,listen,tun和防火墙部分。
nebula-config-0.png
nebula-config-1.png
nebula-config-2.png
星云对网络中公共可用节点的术语是“灯塔”。Lighthouse节点应可在不启动和运行Nebula的情况下通过基础网络连接使用,并且它们代表新节点加入网络的切入点。但是,一旦节点加入网络,它就无需将所有流量路由到灯塔,因为节点会自动发现它们之间的最有效路径,如果中间不包括灯塔节点,那就很好。即使流量需要以“错误的方式”穿越NAT,也没有问题-因为NAT后面的每个节点都将建立并保持通往它所知道的所有节点的开放隧道。
bare-980x588.png
connected-980x588.png
connected-1-980x588.png

我们通过连接小型星云网络中的四个节点进行了测试:在Digital Ocean托管的灯塔节点(我们创造性地将其命名为灯塔)和在小型办公室中的三个成员节点。我们的两个成员节点(nat0和nat1)在办公室的主LAN上,第三个成员节点doublenat在单独的子网中,连接在节点nat0后面。

无需太多测试即可确认星云承诺自动发现最佳路线是否如广告中所言。在从nat1到doublenat的iperf3网络速度测试中,我们获得了674Mbps的吞吐量,这清楚地说明数据包没有通过灯塔发送 ,该灯塔位于数百英里之外的Digital Ocean的纽约数据中心。相反, doublenat已通过NAT(网络地址转换)层向外直接向 nat1打通了隧道,两个主机可以使用已建立的隧道直接进行通信。

我们已经听到一些人的叫嚣,“我可以用它来躲避带有霸道的防火墙的讨厌的网络吗?” 答案很抱歉!“可能不是”。就像WireGuard一样,Nebula仅在UDP上运行-因此,不允许WireGuard连接的过分热情的防火墙也不允许Nebula。这也极大地限制了其作为渗透工具的价值,因为即使防火墙允许,任意UDP端口上的大量出站流量冲洗也会像任何网络分析工具一样烦恼。

我们认为,与更传统的VPN工具(如WireGuard)相比,使用Nebula的最大潜在价值在于它能够发现最有效的路由,无论它位于何处。如果便携式计算机,家用PC和Digital Ocean Droplet上都运行着Nebula,则便携式计算机将在家用时以LAN速度与PC通讯,而在旅途中则以Internet速度与PC通讯。

[因机器翻译存在语言差异,请查看源文档 https://arstechnica.com/gadgets/2019/12/nebula-vpn-routes-between-hosts-privately-flexibly-and-efficiently/]