1. 程式人生 > >企業與雲IPSec組網自動化實踐

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

tar 傳統 快的 hub 得到 net 路由 http 隨著

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

技術分享圖片

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

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

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

3、 企業本地網絡到VPC

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

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

技術分享圖片

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

技術分享圖片


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

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


技術分享圖片

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

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

1、IPSec容器

部署在VPC或本地網絡

處理IPSec流量

通過WebSocket與控制器連接

2、控制器

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

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

通過Restful APIWeb Client通信

3、Web Client

配置管理界面

連接可視化

各組件連接關系如下圖:

技術分享圖片

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

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

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

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

技術分享圖片

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

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容器建立起來的加密隧道傳輸,不經過控制器。考慮到控制器存在單點故障的可能性,控制器采用了多活集群設計,可以橫向擴展,實現容器帶外管理負載。

技術分享圖片

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

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

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

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


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

技術分享圖片

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