簡介
以前,我們演示了一個基於主機身份的虛擬專用服務(HIP-VPLS)的工作原型,當時我們使用了Mininet框架。在這裡,我們將演示如何在實際硬體上部署此系統。我們將使用NanoPi R2S作為HIP-VPLS的平台。回顧一下,虛擬專用區域網服務(VPLS)提供了在現有IP網路上構建第二層通信的手段。可以使用各種方法構建VPLS。然而,當構建生產級VPLS解決方案時,需要清楚如何解決諸如安全性、移動性和L2問題等方面的問題。
主機身份協議(HIP)最初設計用於拆分IP地址的雙重角色。換句話說,HIP是一個介於IP和傳輸層之間的第3.5層解決方案。HIP使用公鑰的哈希作為標識符。這些標識符或主機身份標籤(HITs)暴露給傳輸層,並且永遠不會改變(嚴格來說,如果系統管理員決定旋轉RSA或ECDSA密鑰對,它們可能會發生更改,但這很少發生)。另一方面,HIP使用可路由的IP地址(這些可以是IPv4或IPv6)作為定位器,並用於在端點之間傳遞HIP和IPSec數據包。總體而言,為了相互識別並交換秘密密鑰,HIP依賴於4路握手(也稱為HIP基本交換或HIP BEX)。在BEX期間,對等方協商要使用的一組加密演算法,相互識別(由於HIT是永久的並綁定到公鑰,HIP可以使用基於HIT的簡單防火牆來過濾不受信任的連接),交換密鑰(HIP可以使用Diffie- Hellman和橢圓曲線Diffie-Hellman演算法),甚至使用計算難題(這些基於密碼哈希函數和對等方在哈希函數中找到碰撞的能力;解決方案的複雜性由HIP BEX中的響應器調節)。HIP還支持移動性,並使用單獨的握手過程,其中對等方通知其對等方有關定位器(用於路由目的)的更改。
硬體
在我們的部署中,我們使用了以下設置。對於HIP交換機,我們使用了NanoPi R2S計算平台。我們使用了8埠SNR交換機來連接3個NanoPi R2S,這樣我們就模擬了設置中的IP覆蓋層。NanoPi R2S有兩個介面:一個面向LAN網路,另一個面向WAN網路。NanoPi R2S具有以下特徵:1GB內存,四核CPU,32GB SD卡。為了連接路由器,我們使用了SNR交換機(每個交換機有8個1GB / s埠和兩個小型形式因子(SFP)插槽)。測試床配置如下圖所示:
部署系統
步驟1:安裝依賴
在NanoPi R2S上安裝HIP-VPLS之前,需要安裝一些依賴程序包。在NanoPi R2S上,我們使用的操作系統是Armbian。為了安裝依賴程序包,請執行以下命令:
sudo apt-get update
sudo apt-get install build-essential libssl-dev libnl-genl-3-dev libnl-route-3-dev libpcap-dev
步驟2:下載和編譯HIP-VPLS
接下來,我們需要下載和編譯HIP-VPLS代碼。請按照以下步驟執行:
git clone https://github.com/HIP-VPLS/hip-vpls.git
cd hip-vpls
make
sudo make install
步驟3:配置HIP-VPLS
HIP-VPLS需要一個配置文件,以確定HIP交換機的端點和VPLS域。我們將使用以下示例配置文件:
ini
Copy
[hip-switch]
local-address = 192.168.2.10
insecure = true
[hip-endpoint]
address = 192.168.2.11
hit = 0x123456789abcdef0123456789abcdef01234567
[hip-endpoint]
address = 192.168.2.12
hit = 0x23456789abcdef0123456789abcdef012345678
[vpls-domain]
name = test-domain
hit-list = 0x123456789abcdef0123456789abcdef01234567, 0x23456789abcdef0123456789abcdef012345678
在此示例中,我們有一個HIP交換機和兩個HIP端點。HIP交換機的IP地址為192.168.2.10,我們設置了insecure = true以允許不安全的HIP連接。HIP端點的IP地址分別為192.168.2.11和192.168.2.12,它們都有一個HIT。我們還定義了一個名為test-domain的VPLS域,其中包含兩個HIT。
步驟4:啟動HIP-VPLS
現在,我們已經準備好啟動HIP-VPLS了。請執行以下命令:
sudo hip-vpls -c /path/to/config/file
在我們的示例中,我們的配置文件位於/home/user/hip-vpls.conf,因此我們將運行以下命令:
sudo hip-vpls -c /home/user/hip-vpls.conf
步驟5:測試HIP-VPLS
最後,我們將測試HIP-VPLS是否正常工作。在這裡,我們將ping一下HIP端點之間的VPLS。請在192.168.2.11和192.168.2.12之間執行以下命令:
ping 10.0.0.1
我們的VPLS域的名稱為test-domain,因此它將被路由到10.0.0.1。
結論
我們已經展示了如何在NanoPi R2S上部署HIP-VPLS,這是一個基於主機身份的虛擬專用服務。HIP提供了一個強大的身份驗證和密鑰協商協議,可以用於構建安全的第二層網路。我們還展示了如何使用SNR交換機將多個NanoPi R2S連接在一起,從而模擬IP覆蓋層。這是一個簡單而有效的方法,可以用來測試HIP-VPLS的性能和可伸縮性。