Nebula:Slack 的覆盖全球性的开源网络

简介: Nebula是Slack开发的高安全性与性能的网络服务,这可以为Slack的用户提供可靠的安全隔离,谁也不希望和同事讨论的内容被他人窃取。感谢学而思网校架构师刘连响对本文所做的技术审校。

文 / Ryan Huber


译 / Adrian Ng


技术审校 / 刘连响


原文  https://slack.engineering/introducing-nebula-the-open-source-global-overlay-network-from-slack-884110a5579


如何安全的连接分布在全球多个地区的多个云服务商的成千上万台机器?我们的答案是-Nebula,你想知道为什么吗?


在Slack,我们几年前已在研究这问题。我们尝试了许多方法来解决这个问题,但每种方法都在性能、安全性、特性或易用性方面艰难的权衡。我们很乐意在以后的演讲和写作中分享整这些经历,但是之前我们并没想过着手编写软件来解决这个问题。Slack的营业范围是为了促进人类关系而不是计算机。


什么是Nebula?


Nebula 是一个专注于性能、简单性和安全,可扩展的网络覆盖工具。它可以让你无缝连接全世界每个角落、任何地方的计算机。Nebula是便携式的,也可以通过Linux、OSX和Windows系统上运行(另外:我们有个早期的prototype也可以在iOS上运行了)。


我们需要注意的是Nebula包含了一些现有的概念,例如encryption、securitygroups、certificates及tunneling,之前这些单件都来自于各自的形式。Nebula的不同点是把它们都结合在一起,产生更理想的效果。


如今Nebula在Slack的每一台服务器上运行,全面地提供一个全球覆盖网络。这也许是你第一次听说Nebula,但是实际上在Slack已被应用上两年了。


Nebula从何而来


好几年前,Slack 使用 IPSec 提供区域间的加密连接。此方法起先的运行能力不错,但是随着更高的需求,在大规模网络管理方面捉襟见肘。它也带来一个性能影响,因为每一个发往另一个区域的packet都必须先通过IPSectunnel主机路由,在网络路由中添加了跃点(hop)。我们尝试了一些代替IPSec的解决方案,但是没有一个能满足我们的需求。


随着我们的软件堆栈和服务的复杂性越来越高,网络分割也变得越来越困难。其中我们的核心问题还是在于跨越各种网络边界时的分割。大多数云上服务商提供某种用户定义的网络主机分组,通常称为“securitygroups”,它允许你根据组成员身份筛选网络流量,而不是单独的IP地址或范围。很可惜的是许多securitygroups已被分离到宿主提供者的每个单独区域。此外,不同宿主提供程序之间没有可互操作的安全组版本。这表示当你扩展到多个区域或提供程序时,你唯一的选择还是按IP地址或IP网络范围进行网络分段,管理起来就变得更复杂了。


我们考虑到加密、分段和操作需求,我们决定创建自己的解决方案。


我们的目标


  1. 主机之间加密连接 – 这有可能是比较无趣但也是最重要的目标。它对本地和互联网上流量进行加密,是非常重要的。


  1. 对服务提供者是透明的 - 我们希望这个解决方案适用于任何计算机,无论是基于云的主机、数据中心中的服务器、单个笔记本电脑,还是位于地下室壁橱中的一组计算机。


  1. 允许高级流量过滤 – 该解决方案应使网络上的各个节点能够给予连接主机的标识(不仅仅是IP地址)允许或拒绝通信。特别是在处理短暂主机的时候,你不需考虑盒里应有的IP。


  1. 提供强身份认证 – 主机应该通过证书颁发机构颁发的certificate来标识自己,并且连接到对等方时会对用户定义的属性(数据中心、角色、环境等)进行编码。


  1. 性能要好 - 不会有性能损失,从而大大增加主机之间的延迟或减少可用带宽。


  1. 可测试性 – 首先系统应该先允许单独测试,这是现代团队发布软件的方式。当前大多数的网络管理都要求整个主机集进行全部或全部更改,这使得更改筛选规则变得越来越可怕。如果通过条例评估下推到各个主机,你就可以测试对筛选条例的更改,就像在将新软件版本分发到100%的主机之前测试的更改一样。


  1. 给每个人一匹小马 - 开个玩笑吧,我们的要求太多了,所以我想我们可以把以上合称为一个伸展性的目标。


软件编写


从一开始,我们就研究现代最好的加密策略。研究之中,我们发现了Trevor Perrin 所创建的Noise Protocol Framework,他也是Signal Protocol的合著者,这也是Signal Messenger的基础。在早期的规划,我们决定把Noise成为密钥交换和对称加密的基础。需要一提,我们并没有自己的crypto 密码。


当我们研究软件定义网络(SDN)和mesh网络软件时,Tinc出现了。在难以到达的节点之间,Tinc用来建立隧道的一些策略对于Nebula的设计有很大帮助。


和别人共享Nebula


在本版本发布之前,我们已经与一群工程师共享了Nebula,并收到了系统的积极反馈。Nebula对于连接数千台计算机的亮点极大,但对于连接两台或三台计算机的效果也一样很出色。


Nebula进行了系统上付费安全评估,同时进行了多次内部安全审查。我们正在将Nebula添加到我们的官方bug悬赏计划中,同时欢迎软件中遭遇的bug相关的回馈信息。

————————————————

版权声明:本文为CSDN博主「LiveVideoStack_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/103360210


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

阿里云视频云@凡科快图.png

相关文章
|
数据采集 人工智能 自然语言处理
FireCrawl:开源 AI 网络爬虫工具,自动爬取网站及子页面内容,预处理为结构化数据
FireCrawl 是一款开源的 AI 网络爬虫工具,专为处理动态网页内容、自动爬取网站及子页面而设计,支持多种数据提取和输出格式。
6412 71
FireCrawl:开源 AI 网络爬虫工具,自动爬取网站及子页面内容,预处理为结构化数据
|
Linux 虚拟化 iOS开发
GNS3 v3.0.5 - 开源免费网络模拟器
GNS3 v3.0.5 - 开源免费网络模拟器
1330 3
GNS3 v3.0.5 - 开源免费网络模拟器
|
人工智能 搜索推荐 开发者
GPT-4o测评准确率竟不到1%!BrowseComp:OpenAI开源AI代理评测新基准,1266道高难度网络检索问题
OpenAI最新开源的BrowseComp基准包含1266个高难度网络检索问题,覆盖影视、科技、艺术等九大领域,其最新Deep Research模型以51.5%准确率展现复杂信息整合能力,为AI代理的浏览能力评估建立新标准。
1045 4
GPT-4o测评准确率竟不到1%!BrowseComp:OpenAI开源AI代理评测新基准,1266道高难度网络检索问题
|
机器学习/深度学习 人工智能 搜索推荐
PaSa:字节跳动开源学术论文检索智能体,自动调用搜索引擎、浏览相关论文并追踪引文网络
PaSa 是字节跳动推出的基于强化学习的学术论文检索智能体,能够自动调用搜索引擎、阅读论文并追踪引文网络,帮助用户快速获取精准的学术文献。
1257 15
|
网络协议 物联网 虚拟化
|
机器学习/深度学习
NeurIPS 2024:标签噪声下图神经网络有了首个综合基准库,还开源
NoisyGL是首个针对标签噪声下图神经网络(GLN)的综合基准库,由浙江大学和阿里巴巴集团的研究人员开发。该基准库旨在解决现有GLN研究中因数据集选择、划分及预处理技术差异导致的缺乏统一标准问题,提供了一个公平、用户友好的平台,支持多维分析,有助于深入理解GLN方法在处理标签噪声时的表现。通过17种代表性方法在8个常用数据集上的广泛实验,NoisyGL揭示了多个关键发现,推动了GLN领域的进步。尽管如此,NoisyGL目前主要适用于同质图,对异质图的支持有限。
418 7
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
1048 5
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
714 0
|
JSON 监控 编译器