RancherManagedNetwork的示例分析

小編給大家分享一下Rancher Managed Network的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目網(wǎng)站建設、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元新鄉(xiāng)做網(wǎng)站,已為上家服務,為新鄉(xiāng)各地企業(yè)和個人服務,聯(lián)系電話:18982081108

IPSec基本概念

這一節(jié)不準備詳細講解IPSec原理,只將一些重要概念點到為止,有興趣的同學可以下來研究IETF的RFC。我們首先用一張圖來認識IPSec框架:

Rancher Managed Network的示例分析

  1. IPSec模式

    1.傳輸模式:適用于兩臺主機之間的數(shù)據(jù)保護。

    2.隧道模式:適用于建立site-2-site的安全VPN隧道。(Rancher Managed網(wǎng)絡顯然是要為Host上的所有Containers打通一條加密隧道,是使用隧道模式)

  2. IPSec安全協(xié)議

    安全協(xié)議包括AH、ESP以及它們的組合AH-ESP,Rancher中使用的是ESP,通過下圖我們可以形象的了解IPSec的模式和安全協(xié)議之間的關系:Rancher Managed Network的示例分析另外,有抓過包的同學會發(fā)現(xiàn),Rancher的IPSec報文與這里基于Tunnel模式+ESP安全協(xié)議的封包格式有些不同。實際抓到的報文在外層的IP頭部之后,ESP域之前,還包含了一個使用4500端口的UDP頭部。這是NAT-T功能,它的實現(xiàn)機制是首先判斷是否兩端設備是否都支持NAT-T,然后檢測鏈路上是否存在NAT,一旦兩個條件都滿足就啟動NAT-T,將所有的業(yè)務報文使用UDP的4500端口進行傳輸。

  3. 保障私密性

    IPSec支持使用多種加密算法對傳輸?shù)臉I(yè)務數(shù)據(jù)進行加密。通過加密把數(shù)據(jù)從明文變成無法讀懂的密文,從而確保數(shù)據(jù)的私密性。加密算法分為:對稱加密算法(DES/AES/3DES等)與非對稱加密算法(比如RSA)Rancher Managed Network的示例分析

  4. 保障完整性

    通過對數(shù)據(jù)進行HASH運算,產(chǎn)生類似于指紋的數(shù)據(jù)摘要,連同數(shù)據(jù)一起傳輸?shù)綄Χ?,以確認數(shù)據(jù)未被非法篡改,保障數(shù)據(jù)完整性。常見的HASH算法有MD5/SHA等。Rancher Managed Network的示例分析

  5. 保障真實性

    對稱加密和HASH都要求通信雙方具有相同的密鑰,在雙方之間安全地傳遞密鑰就需要一套密鑰交換算法。通過身份認證可以保證數(shù)據(jù)的真實性,確保數(shù)據(jù)確實是由特定的對端發(fā)出的。常用的身份認證方式包括:Pre-shared key 預共享密鑰、 RSA Signature 數(shù)字簽名等下圖是隧道模式的ESP封包流程,它反映了如何使用加密算法和驗證算法來生成最終的加密報文。Rancher Managed Network的示例分析

  6. IKE

    另外,IPSec還包括IKE。IKE是一種安全機制,提供端與端之間的動態(tài)認證,為IPsec提供了自動協(xié)商交換密鑰、建立SA的服務,簡化IPsec的使用、管理(配置和維護)工作。IKE不是在網(wǎng)絡上直接傳輸密鑰,而是通過一系列數(shù)據(jù)的交換,最終計算出雙方共享的密鑰。有了IKE,IPsec很多參數(shù)(如:密鑰)都可以自動建立,降低了手工配置的復雜度。IKE使用UDP端口500,通過使用特定的密鑰交換算法進行秘鑰交換。常見的算法有DH和RSA算法。講了這么多理論的東西,現(xiàn)在我們回到Rancher,來看看Rancher的Managed網(wǎng)絡是如何工作的。

Rancher Managed網(wǎng)絡原理

通過進入agent-instance容器查看進程信息可以發(fā)現(xiàn)其主要啟動了如下進程:

1.rancher-metadata

2.rancher-DNS

3.rancher-net

4.charon

5.haproxy

6.host-api

rancher-metadata啟動了一個web server,用于響應該agent所轄containers的metadata請求。rancher-dns實現(xiàn)了一個監(jiān)聽在IP地址:169.254.169.250上的skydns實例,用于響應該agent所轄container的dns請求。haproxy其實是一個負載均衡程序,其自帶對member指定端口的healthcheck,此處主要用它來對配置了healthcheck的容器做健康檢查。host-api在該container內(nèi)用于將haproxy采集到的數(shù)據(jù)上報到cattle。我們重點來分析rancher-net和charon:rancher-net的配置主要基于文件:"/var/lib/cattle/etc/cattle/ipsec/config.json">

Rancher Managed Network的示例分析

rancher-net通過啟動charon來往xfrm中下發(fā)配置,從而維護IPSec的鏈路和policy。charon用來實現(xiàn)IKE之間的協(xié)商并下發(fā)rule到xfrm,下一章節(jié)實踐中對IPSec加密方式的修改就要通過調(diào)用charon的接口來實現(xiàn)。rancher-net除了通過charon下發(fā)xfrm state外,還需要配置xfrm policy,這一塊的實現(xiàn)是在rancher-net中直接執(zhí)行“ip xfrm policy add”來實現(xiàn)的。

Rancher Managed Network的示例分析

Rancher Managed Network的示例分析

除此之外,還有一個可以查看strongswan狀態(tài)的命令行接口swanctl:

Rancher Managed Network的示例分析

在IPSec之外,rancher-net還需要監(jiān)聽所有的ARP請求,并響應那些目標IP地址通過IPSec tunnel可達,但又不在本Host的ARP請求。綜上,rancher-net的功能包含:監(jiān)聽8111端口,響應reload和ping的HTT請求。當有reload請求時,讀取配置文件,將到達配置文件中所有IP的路徑都校驗一遍:

a.如果有新加主機,添加ipsec隧道;

b.如果有新加container,但是已經(jīng)存在IPSec,更新xfrm policy;

c.如果有刪除執(zhí)行相反操作。

監(jiān)聽eth0上的ARP請求,響應需要到達IPSec對端IP的ARP請求。整個IPSec隧道的拓撲如下所示:

Rancher Managed Network的示例分析

Managed網(wǎng)絡實踐

說了這么多,各位都已經(jīng)蒙圈了吧。話不多少,修改代碼環(huán)節(jié)隆重上場。代碼的修改相對簡單,只需要將proposals的第一個加密方式改為null。如:“null-sha1-modp2048” 代表:

1.使用對稱加密方式為null(不加密);

2.使用sha1的HASH算法;

3.使用modp2048的非對稱加密算法進行秘鑰交換。

然后使用Dockerfile.dapper重新編譯代碼,確保沒有編譯錯誤。我們知道,所有agent上的包均是啟動時從cattle拉下來的;因此,通過更新docker image的方式來替換rancher-net是沒有用的。為了做測試,我們先直接將編譯出來的rancher-net可執(zhí)行文件通過docker cp替換掉agent-instance中的rancher-net。

替換并運行,發(fā)現(xiàn)charon協(xié)商IKE無法成功,提示“ENCRYPTION_ALGORITHM NULL (key size 20) not supported!”。 這是因為我們將加密算法置為了NULL,系統(tǒng)中的charon不支持。

查詢官網(wǎng)發(fā)現(xiàn)NULL需要IKE中openssl的支持,有可能是rancher在編譯charon的時候沒有指定編譯openssl plugin所致:

Rancher Managed Network的示例分析

修改方法是charon編譯的時候指定參數(shù)--enable-openssl 見:

[https://lists.strongswan.org/pipermail/dev/2011-February/000253.html]

分析代碼發(fā)現(xiàn)agent-instance在初始化的時候是通過安裝“rancher/strongswan-package”生成的包來得到charon的。因此,

轉(zhuǎn)到rancher/strongswan-package重新指定./configure --enable-openssl編譯charon。

Rancher Managed Network的示例分析

生成新的可執(zhí)行文件后,先執(zhí)行“ip xfrm state flush” 和 “ip xfrm policy flush”, 然后再重啟rancher-net和charon;如果先不刷掉policy和state會導致新添加的ipsec無法生效。修改之后,環(huán)境如下:

Rancher Managed Network的示例分析

兩個Network Agent容器分別為IPSec的端點,另外,每臺host上各運行有一個Iperf容器用于測試。

Rancher Managed Network的示例分析

通過swanctl --list-algs可以看到,所有支持的加密算法,其中由于我們load了openssl,已經(jīng)能夠支持NULL了。

Rancher Managed Network的示例分析

查看xfrm里的ipsec規(guī)則,encryption已經(jīng)為ciper_null,即不加密。

Rancher Managed Network的示例分析

xfrm里的policy列出了到達對端iperf container的策略,即走IPSec tunnel。

跨主機測試

在兩臺主機上的iperf容器,一個作為iperf服務端,另一個作為客戶端做帶寬測試。在測試過程中,需要抓包確認是否修改已經(jīng)生效,如下:

Rancher Managed Network的示例分析

可以看到,ESP sequence之后是0X45 0X00的,顯然這是一個RAW的IP header。為了確認這個信息,我們decode出該IP header中的src IP和dst IP,分別為:

0x0A 0X2A 0XF4 0XFA 和0x0A 0x2A 0xB4 0xF9

0x0A 0X2A 0XF4 0XFA = 10.42.224.250

0x0A 0x2A 0xB4 0xF9 = 10.42.180.249

這兩臺IP地址正是我們的iperf服務端和客戶端容器的IP地址;因此,可以判斷此時報文是沒有經(jīng)過加密的;我們的修改已生效。

更改前

Rancher Managed Network的示例分析

更改后

Rancher Managed Network的示例分析

經(jīng)在兩臺千兆網(wǎng)卡的服務器上5分鐘iperf測試,使用Rancher原生Managed網(wǎng)絡的帶寬為600+Mbps,在修改加密方式為NULL之后,iperf測試帶寬提升為800+Mbps。

看完了這篇文章,相信你對“Rancher Managed Network的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

文章名稱:RancherManagedNetwork的示例分析
本文地址:http://muchs.cn/article6/iehsig.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、虛擬主機、標簽優(yōu)化關鍵詞優(yōu)化、云服務器、App設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)