Slack開源自行開發的覆蓋網路工具Nebula,在Slack內部,已經使用了Nebula兩年,他們在每臺伺服器上安裝Nebula,以安全地連接分散在不同公有雲以及自家資料中心等,全球數十個地點的數萬臺主機。

Slack提到,他們原本使用IPSec提供地區間的加密連線,雖然一開始的時候運作良好,但隨著發展反成了管理上的負擔,而且由於要傳送到其他區域的封包,都要流經IPSec通道主機進行路由,這個動作增加了額外的網路路由跳躍節點,因此會為這些封包傳送帶來微小但是可測量的效能影響。

為了解決這些問題,Slack研究了各種IPSec替代方案,但是都無法解決他們的核心需求,他們需要能夠即便跨不同網路邊界,仍可以維持安全連線的解決方案,Slack提到,大多數雲端供應商提供稱為安全群組(Security Groups)由使用者定義的網路主機分群功能,讓群組成員可以依身份過濾網路流量,但是這些安全群組有其邊界,安全群組在主機供應商的各地區都獨立,而且主機供應商之間也都沒有互通,也就是說,對於跨多區域或是供應商的主機連線,唯一有用的選擇只有按IP位置或是IP範圍進行網路分區隔離(Network Segmentation),但這又讓服務管理更加複雜。

為了滿足內部加密、分區隔離以及其他操作的需求,Slack開發了可擴展的覆蓋網路(Overlay Network)工具Nebula。覆蓋網路是一種建立在網際網路之上的網路,覆蓋網路中的節點,可透過虛擬或是邏輯相連接。Nebula讓Slack能夠無縫地連接位在世界各地的電腦,目前支援在Linux、OSX和Windows,甚至Slack也正在開發iOS的版本。

Nebula提供了主機間的加密連接,Slack提到,雖然這項功能看起來並不特別,但是要全加密本地端以及網際網路上的流量,有許多需要考量以及克服的障礙。Nebula所建立的覆蓋網路與服務供應商無關,這代表任何一臺電腦,無論是雲端供應商上的主機、資料中心的伺服器或是個人電腦等,都能以Nebula相連。

Nebula也提供了進階流量過濾的功能,讓網路上的各節點可以根據連接主機的身份,而非IP位置作為允許或是拒絕流量的條件,因此使用者可以在任何地方進行連線,而不需要在意IP位置是否被接受。另外,Nebula也可提供隔離測試,Slack表示,目前多數網路管理都要求一次性地對主機集合進行規則變更,而這使得更改過濾規則的過程充滿風險,在Nebula中,使用者能用測試軟體的方式測試過濾規則,沒問題後再部署到所有的主機上。

Nebula適用於各種規模的主機連線,可用於連接數千臺的主機,但在只有3或4臺主機連線也相同有用,Slack對Nebula進行了安全漏洞審查,並且提供了臭蟲賞金計畫,以持續確保Nebula的安全性。Nebula現在於GitHub開源,供社群使用。


Advertisement

更多 iThome相關內容