企業與雲IPSec組網自動化實踐

伴隨着不斷出現的外部,內部挑戰,我們將業務向公有云遷移。隨着時間的推移,逐漸形成了混合雲架構。

廣告 (2).png

混合雲架構需要組建虛擬專用網絡,實現資源互通,滿足加密傳輸要求。混合雲網絡連接類型總結如下:

1、VPCVPC(同一個雲服務商)

2、VPCVPC(不同雲服務商之間)

3、 企業本地網絡到VPC 

常見的組網方案有:專線SD-WAN。但也會帶來以下問題:

首先是VPC的互通。例如,將阿里雲北京的VPC資源接入AWS新加坡的VPC。通常我們使用軟件解決,但繁瑣的CLI和不同雲服務商不同工作流的部署方法,會造成在基礎設施上花費太多的精力。

雲到雲部署流程.png

其次是VPC和企業私網互通。例如,將阿里雲杭州的VPC基礎設施接入到北京的數據中心。傳統的連接方式依賴硬件,需要改動網絡,部署花費幾天或幾周的時間。

數據中心到雲部署流程.png


最後則是快速提供網絡服務能力。業務需求是更快的發佈應用程序。拼湊使用多種連接方式組網,會使網絡架構臃腫,增加複雜度。快,敏捷將是難以實現的。

基於以上問題。如何減少網絡改動,採用一致的工作流程,簡化加密隧道的創建,刪除和管理?我們結合容器,探究出了一種自動化實現方案。 


SDN.png

從圖中可以看出,我們參考了SDN軟件架構設計,將IPSec網關的功能抽象出來邏輯分層,實現集中管理。

IPSec組網自動化方案需要以下3個組件:

1、IPSec容器

部署在VPC或本地網絡

處理IPSec流量

通過WebSocket與控制器連接

2、控制器

通過Restful API完成指定隧道的創建,刪除,管理

通過雲服務商API完成VPC的路由配置

通過Restful APIWeb Client通信

3、Web Client

配置管理界面

連接可視化

各組件連接關係如下圖:

SDN架構 (1).png

雲與雲創建VPC加密對等連接的過程及其實現如下:

1、用戶在管理界面點擊需要互通的網絡,Web Client向控制器發送創建連接請求,控制器向指定IPSec容器下發IPSec配置,同時在VPC路由表添加到達對端網絡的路由條目。配置完成後拉起隧道,兩端網絡完成互通。

2、如果遇到兩端網絡VPC CIDR衝突的情況,可以通過管理界面修改指定連接的CIDRWeb Client向控制器發送修改CIDR請求,控制器向IPSec容器下發新的IPSec配置,同時更新VPC路由條目。完成後重新拉起隧道。

3、如果網絡環境發生變化,例如雲服務器的公網IP變更,監控服務會通知容器自動更新IPSec配置,同時更新VPC路由條目,重新拉起隧道。

雲到雲部署流程 (1).png

以上就是系統的工作原理。從中我們可以看出,系統已經很好地解決了傳統連接方式所遇到的問題:

1、控制器通過IPSec容器API接口完成IPSec連接配置,使用雲服務商API接口完成VPC路由配置,從而實現了自動化。這種設計的優勢在於可以消除複雜度,不需要網絡工程師,任何人都可以運行。

2、對於企業和雲網絡互通需求,由運行在本地數據中心的IPSec容器向運行在雲網絡的IPSec容器發起IPSec連接,這樣設計是爲了避免對企業網絡進行改動,減少對硬件設備的依賴,適應主流的互聯網接入方式。

3、採用容器化的部署方式,簡化部署過程。由於採用了集中管理,分佈運行的設計,可以滿足隨處運行,可持續升級的需求。

爲了提高使用體驗,我們在設計與實現時考慮到了很多細節,在這裏拿出來與大家分享。

1、容器與控制器的通信協議選擇

在選擇容器與控制器通信協議時,考慮了以下幾點:

A、控制器能及時聯繫到容器:用戶在Web界面的操作(例如下發配置信息或查詢運行狀態數據),得到及時響應;

B、儘可能減少對運行環境的要求,比如開放端口、配置防火牆等;

C、適應運行環境的各種Internet接入方式,包括直接路由、NAT、Proxy。

基於上述約束,初步確定了容器作爲通訊的客戶端,控制器作爲通訊的服務端。

在具體通信協議的選擇時,考慮了MQTT和WebSocket。兩者比較,前者有成熟的開源組件,用很少的開發就可以實現設備接入、消息路由、數據存儲、自動訂閱 、狀態監控等功能;而後者實現相同的功能,需要額外的工作量。但是考慮到WebSocket基於HTTP/HTTPS,對防火牆更友好,我們選擇了WebSocket作爲網關與控制器的通信協議。網關作爲WebSocket客戶端,控制器作爲WebSocket服務端,這樣實現了用戶側的防火牆零配置,而基於WebSocket的長連接又可以滿足通信的實時性。

2、如何簡化部署及使用?

在用戶部署對等網絡時,我們希望能夠將用戶的操作最簡化,不需要去查VpcID、RouterTableID、CidrBlock等等信息,只需要輸入容器的公網IP地址。爲實現這個目標,我們充分利用雲廠商的API來獲取配置所需的參數、信息,再通過API完成VPC路由的配置。

各家公有云的實現不一樣,API的表現也不一樣。例如VPC路由配置API,有的廠商是同步操作,有的是異步操作。異步操作又間接限制併發請求,甚至對API調用間隔也產生了間接限制。我們對各家公有云廠商的API進行適配,最終實現配置簡化的目標。

3、控制器的設計

控制器與容器的交互僅限於配置信息下發、運行狀態查詢等帶外管理功能。網絡之間的流量直接通過IPSec容器建立起來的加密隧道傳輸,不經過控制器。考慮到控制器存在單點故障的可能性,控制器採用了多活集羣設計,可以橫向擴展,實現容器帶外管理負載。

交互 (1).png

IPSec組網自動化方案解決了幾個問題:

快速組網:使用IPSec連接基礎設施,在雲與雲,企業與雲之間建立任意互聯。在幾分鐘內,將資源連接到任何位置。

使用簡化:用自動化工作流取代複雜的cli手動配置,讓DevOps專注於核心業務,而不是基礎設施。

網絡改動少:適應原有網絡,不對原有網絡進行改動。


產品註冊地址:www.accesshub.cn

tu.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章