隨著 Azure 平臺用戶越來越多,同時需求也越來越廣泛,其中之一就是網(wǎng)絡(luò)架構(gòu)上的需求,比如需要強大的應(yīng)用層防火墻,網(wǎng)絡(luò)訪問控制管理,網(wǎng)絡(luò)安全認證,出口網(wǎng)關(guān)統(tǒng)一等,而用戶為了滿足架構(gòu)需求,希望借助第三方網(wǎng)絡(luò)設(shè)備廠商來兼容 Azure 的網(wǎng)絡(luò)服務(wù)來實現(xiàn)。雖然看起來是一個很好的方式,但是其中存在著很多兼容問題以及需要通過實踐來測試架構(gòu)上的可行性。
本文旨在將經(jīng)驗總結(jié)分享給大家,希望對大家以后的工作和項目有所幫助。
以下內(nèi)容不涉及太多技術(shù)分析,以結(jié)果為主。
如今 Cloud 產(chǎn)業(yè)更新快速,因此不排除 Azure 與廠商之間兼容性會存在變化。
不涉及太多的 Palo Alto 的產(chǎn)品介紹,如果你選擇的廠商技術(shù)特點與之類似,可以借鑒。
以下內(nèi)容涉及到部分 Azure 基本知識,如果對某些服務(wù)不了解請查詢官方文檔。
由廠商 Palo Alto 提供如下資源:
Azure 的 VHD 鏡像文件:軟件版本號為 7.1.10。
提供在 Azure 上部署的 Template 配置文件:多網(wǎng)卡并屬于不同的子網(wǎng)。
產(chǎn)品 License 用于激活。
用提供的 VHD 創(chuàng)建 Azure 的 VM:
使用 azcopy 將 VHD 鏡像上傳到 Storage Account。
通過 Powershell/Portal/CLI 使用 Template 配置文件部署 VM。
保證內(nèi)網(wǎng)地址可以 ICMP 可達。
保證從外網(wǎng)通過 Azure VM 的VIP地址訪問到 Palos Alto 的 Web 管理界面。
注意點:
Palo Alto 提供的配置文件并不一定是一站式部署,很多資源可能需要自己去創(chuàng)建,比如存儲賬號,虛擬網(wǎng)絡(luò),子網(wǎng),資源組等。
注意配置文件中的一些資源的參數(shù)可能會和你創(chuàng)建的資源有沖突,請仔細核對,比如存儲賬號里面的 SKU。
不同 VNet 的 NVA 之間建立 IPsec 隧道:
部署步驟:
pavm1 :通過 Palo Alto 的 VHD 鏡像創(chuàng)建出來的 Azure VM1,并屬于 VNet1。
pavm2 :通過 Palo Alto 的 VHD 鏡像創(chuàng)建出來的 Azure VM2,并屬于 VNet2。
VNet Gateway 之間建立 VNetToVNet 連接。
基于 VNetToVNet 連接,pavm1 與 pavm2 建立 IPsec 隧道。
在 IPsec 隧道的基礎(chǔ)上實現(xiàn)路由傳遞。
Azure NVA 與本地 Palo Alto 設(shè)備建立 IPsec 隧道:
部署步驟:
pavm1 :通過 Palo Alto 的 VHD 鏡像創(chuàng)建出來的 Azure VM1,并屬于 VNet1。
Local-PA :擁有獨立公網(wǎng)地址的 Palo Alto 硬件設(shè)備,目前沒有發(fā)現(xiàn)版本兼容性問題。
pavm1 的網(wǎng)卡綁定 PIP 地址。
Local-PA 通過 Internet 與 pavm1 的 PIP 建立 IPsec 隧道。
在 IPsec 隧道的基礎(chǔ)上實現(xiàn)路由傳遞:BGP或者靜態(tài)。
通過 VPN Gateway 來實現(xiàn)本地 Palo Alto 設(shè)備與 Azure NVA 之間建立 IPsec 隧道:
部署步驟:
pavm1:通過 Palo Alto 的 VHD 鏡像創(chuàng)建出來的 Azure VM1,并屬于 VNet1。
Local-PA:擁有獨立公網(wǎng)地址的 Palo Alto 硬件設(shè)備,目前沒有發(fā)現(xiàn)版本兼容性問題。
Local-PA 通過 Internet 與 VPN Gateway 建立基于路由的 IPsec 隧道并傳遞內(nèi)網(wǎng)路由。
基于此 IPsec 隧道,Local-PA 的私有地址與 pavm1 的私有地址建立 IPsec 隧道。
在 IPsec 隧道的基礎(chǔ)上實現(xiàn)路由傳遞。
通過 Azure 出口轉(zhuǎn)發(fā)本地到 Internet 的流量:
從以上介紹可以看出,基于 NVA 來建立 IPsec 隧道方式有多種,需要根據(jù)自身的網(wǎng)絡(luò)架構(gòu)需求來選擇最適合的方式,以下介紹一個較復(fù)雜的需求供各位參考:讓本地網(wǎng)絡(luò)去往 Internet 的流量通過 Azure 出口進行轉(zhuǎn)發(fā)。
部署步驟:
pavm2:通過 Palo Alto 的 VHD 鏡像創(chuàng)建出來的 Azure VM2,并屬于 VNet2。
Local-PA:擁有獨立公網(wǎng)地址的 Palo Alto 硬件設(shè)備,目前沒有發(fā)現(xiàn)版本兼容性問題。
Local-PA 通過 Internet 與 VNet1 中的 VPN Gateway 建立基于路由的 IPsec 隧道并建立 EBGP 鄰居。
VNet1 中的 VPN Gateway 與 pavm2 的 PIP 建立 IPsec 隧道并建立 EBGP 鄰居。
pavm2 在 BGP 路由協(xié)議中通告默認路由。
pavm2 配置 NIC 的默認路由。
pavm2 配置 NAT 條目,封裝來自本地網(wǎng)段的源地址為 NIC 的地址。
本地網(wǎng)絡(luò) Internet 流量走向(綠色箭頭):
本地網(wǎng)絡(luò)通過內(nèi)部路由轉(zhuǎn)發(fā)到 Local-PA。
Local-PA 根據(jù)從 BGP 學(xué)到的默認路由轉(zhuǎn)發(fā)到 VPN Gateway。
VPN Gateway 根據(jù)從 BGP 學(xué)到的默認路由轉(zhuǎn)發(fā)到 pavm2。
pavm2 根據(jù)配置的 NIC 的默認路由丟給 PIP,并將源地址封裝成 NIC 地址。
將源地址轉(zhuǎn)化成 PIP 地址丟到公網(wǎng)。
分析:
為了網(wǎng)絡(luò)的擴展性,讓其中一個 VNet 中的 VPN Gateway 作為網(wǎng)絡(luò) Hub 是一個比較可行的方式。
BGP 路由協(xié)議是目前 VPN Gateway 唯一支持的動態(tài)路由協(xié)議。
由于 Azure VM 的公網(wǎng)地址并不是直接綁定到 VM 上,而是對 VM 的 NIC 地址進行 NAT 的地址轉(zhuǎn)化,因此如果將 VM 作為路由器,還需要對轉(zhuǎn)發(fā)的流量進行 NAT 轉(zhuǎn)化。
實現(xiàn)的方式有多種,各自都有利弊。
目前以下方式無法實現(xiàn):
由于 Azure VM 網(wǎng)絡(luò)禁用 GRE 協(xié)議,因此任何基于 GRE 的隧道技術(shù)都無法實現(xiàn)。
避免在 VNet 中的 VPN Gateway 與同一個 VNet 中的 pavm 建立 BGP 鄰居并傳遞路由,可能會造成環(huán)路。
如果您的網(wǎng)絡(luò)架構(gòu)會參考到部分文章內(nèi)容,請進行測試評估后再考慮部署,在部署過程中可能會遇到一些小問題,請咨詢相關(guān)廠商和 Azure 技術(shù)支持。