企業與雲IPSec組網自動化實踐
混合雲架構需要組建虛擬專用網絡,實現資源互通,滿足加密傳輸要求。混合雲網絡連接類型總結如下:
1、VPC到VPC(同一個雲服務商)
2、VPC到VPC(不同雲服務商之間)
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 API與Web Client通信
3、Web Client
配置管理界面
連接可視化
各組件連接關系如下圖:
雲與雲創建VPC加密對等連接的過程及其實現如下:
1、用戶在管理界面點擊需要互通的網絡,Web Client向控制器發送創建連接請求,控制器向指定IPSec容器下發IPSec配置,同時在VPC路由表添加到達對端網絡的路由條目。配置完成後拉起隧道,兩端網絡完成互通。
2、如果遇到兩端網絡VPC CIDR沖突的情況,可以通過管理界面修改指定連接的CIDR,Web 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組網自動化實踐