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網絡范圍進行網絡分段,管理起來就變得更復雜了。
我們考慮到加密、分段和操作需求,我們決定創建自己的解決方案。
我們的目標
主機之間加密連接 – 這有可能是比較無趣但也是最重要的目標。它對本地和互聯網上流量進行加密,是非常重要的。
對服務提供者是透明的 - 我們希望這個解決方案適用于任何計算機,無論是基于云的主機、數據中心中的服務器、單個筆記本電腦,還是位于地下室壁櫥中的一組計算機。
允許高級流量過濾 – 該解決方案應使網絡上的各個節點能夠給予連接主機的標識(不僅僅是IP地址)允許或拒絕通信。特別是在處理短暫主機的時候,你不需考慮盒里應有的IP。
提供強身份認證 – 主機應該通過證書頒發機構頒發的certificate來標識自己,并且連接到對等方時會對用戶定義的屬性(數據中心、角色、環境等)進行編碼。
性能要好 - 不會有性能損失,從而大大增加主機之間的延遲或減少可用帶寬。
可測試性 – 首先系統應該先允許單獨測試,這是現代團隊發布軟件的方式。當前大多數的網絡管理都要求整個主機集進行全部或全部更改,這使得更改篩選規則變得越來越可怕。如果通過條例評估下推到各個主機,你就可以測試對篩選條例的更改,就像在將新軟件版本分發到100%的主機之前測試的更改一樣。
給每個人一匹小馬 - 開個玩笑吧,我們的要求太多了,所以我想我們可以把以上合稱為一個伸展性的目標。
?
軟件編寫
從一開始,我們就研究現代最好的加密策略。研究之中,我們發現了Trevor Perrin 所創建的Noise Protocol Framework,他也是Signal Protocol的合著者,這也是Signal Messenger的基礎。在早期的規劃,我們決定把Noise成為密鑰交換和對稱加密的基礎。需要一提,我們并沒有自己的crypto 密碼。
當我們研究軟件定義網絡(SDN)和mesh網絡軟件時,Tinc出現了。在難以到達的節點之間,Tinc用來建立隧道的一些策略對于Nebula的設計有很大幫助。
和別人共享Nebula
在本版本發布之前,我們已經與一群工程師共享了Nebula,并收到了系統的積極反饋。Nebula對于連接數千臺計算機的亮點極大,但對于連接兩臺或三臺計算機的效果也一樣很出色。
Nebula進行了系統上付費安全評估,同時進行了多次內部安全審查。我們正在將Nebula添加到我們的官方bug懸賞計劃中,同時歡迎軟件中遭遇的bug相關的回饋信息。
LiveVideoStack?秋季招聘
LiveVideoStack正在招募編輯/記者/運營,與全球頂尖多媒體技術專家和LiveVideoStack年輕的伙伴一起,推動多媒體技術生態發展。同時,也歡迎你利用業余時間、遠程參與內容生產。了解崗位信息請在BOSS直聘上搜索“LiveVideoStack”,或通過微信“Tony_Bao_”與主編包研交流。
總結
以上是生活随笔為你收集整理的Nebula:Slack 的覆盖全球性的开源网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LiveVideoStackCon深圳-
- 下一篇: 两雄争霸:解读MSU2019年度视频编码