建立多個跨Microsoft Azure訂用帳戶的VNet對VNet連線
情境描述
就在2014年5月Scott Guthrie在他的Blog再次發佈許多令人振奮的Microsoft Azure新功能,其中有一個筆者覺得很有意思的功能是VNET to VNET Connectivity,也就是你可以在Microsoft Azure Virtual Network使用Site to Site VPN來串聯多個Virtual Network(以下簡稱VNET),就像在Virtual Network中經由Site to Site VPN來連接企業內部部署的網路和Microsoft Azure一樣,在VNET to VNET功能中,您要串連的網路可以是Microsoft Azure的不同資料中心或是企業內部部署的網路(例如下圖為串連美東和美西兩個資料中心),更強大的是您要串連的VNET還可以分別屬於不同的Microsoft Azure訂用帳戶。
接著本文將要為了介紹如何實作VNET to VNET Connectivity,分別用3個不同的Microsoft Azure訂用帳戶來建立位於3個不同資料中心的VNET,並使用Site to Site VPN將他們串連起來。
環境說明
筆者分別使用MSDN - VS Premium、MSDN - VS Professional 1和MSDN - VS Professional 2三個不同的Microsoft Azure訂用帳戶,在東南亞、東亞以及日本東部的資料中心建立VNET,然後兩兩建立Site to Site VPN將之串連起來,也就是說讓東南亞的VNET可以分別跟東亞和日本東部的VNET互通,以此類推(如下圖)。
相關組態如下表:
Microsoft Azure訂用帳戶 |
地區 |
虛擬網路名稱 |
虛擬網路定義 |
區域網路名稱 |
區域網路定義 |
MSDN - VS Premium |
東亞 |
HKVNet |
10.1.0.0/24 |
SGLan JPELan |
10.2.0.0/24 10.3.0.0/24 |
MSDN - VS Professional 1 |
東南亞 |
SGVNet |
10.2.0.0/24 |
HKLan JPELan |
10.1.0.0/24 10.3.0.0/24 |
MSDN - VS Professional 2 |
日本東部 |
JPEVNet |
10.3.0.0/24 |
HKLan SGLan |
10.1.0.0/24 10.2.0.0/24 |
建立虛擬網路
登入Microsoft Azure管理入口網站,點選【新增>網路服務>虛擬網路>自訂建立】。
在建立虛擬網路的第一個步驟中,輸入虛擬網路名稱、位置及選擇要使用哪一個訂用帳戶(請參考上一節的表格)。
第二個步驟可以讓您指定DNS及設定VPN連線能力,在此我們先跳過這個步驟,直接按下一步。
輸入虛擬網路的位址空間,如上一節的表格,筆者首先在東南亞的資料中心建立一個名稱為HKVNet的虛擬網路,並定義位址空間為10.1.0.0/24,預設的子網路(Subnet-1)則保持系統所指定的10.1.0.0/27,設定完畢後按完成。
重複本節的步驟,建立上一節表格中的所有虛擬網路,建立完畢您應該會看到如下圖的結果。
建立區域網路
因建立Site to Site VPN需要有區域網路,而且本文所要建立的是跨訂用帳戶的VNet to VNet,才必須在每個訂用帳戶中建立將來要連接的區域網路,例如東亞的虛擬網路HKVNnet將來要連接東南亞和日本東部,所以我們必須在MSDN - VS Premium訂用帳戶中建立東南亞和日本東部位址空間的區域網路,分別是SGLan和JPELan,其位址空間與東南亞和日本東部相同,分別為10.2.0.0/24和10.3.0.0/24。
請在Microsoft Azure管理入口網站,點選【新增>網路服務>虛擬網路>加入區域網路】。
為了讓東亞的虛擬網路(HKVnet)可以連接東南亞的虛擬網路,首先我們必須建立和東南亞空間位址相同的區域網路,在這個步驟筆者將區域網路名稱設定為SGLan,作為將來要連接到東南亞的虛擬網路的識別名稱。VPN裝置IP位址的部分,先暫時填入一個符合IP v4規則的IP位址,將來動態路由閘道建立完成之後再回頭來修改。
指定位址空間的步驟,您需要輸入的位址空間為目的虛擬網路的位址空間,在此我們輸入位於東南亞的虛擬網路之位址空間,也就是10.2.0.0/24。
重複上述步驟建立與日本東部虛擬網路連接的區域網路定義,建立完成後應該會看到如下圖的結果。
接著重複上述步驟建立東南亞虛擬網路和東亞、日本東部連接的區域網路,以及建立日本東部虛擬網路和東亞、東南亞連接的區域網路(如下圖)。
設定站對站連線能力及閘道
點選虛擬網路的【設定】頁面,勾選【連接到區域網路】,選擇稍早所建立的區域網路的其中一個(例如SGLan),您會在虛擬網路位址空間的部分看到一個自動產生閘道的子網路,最後按儲存來完成站對站連線能力的設定。
回到虛擬網路的儀表板頁面,點選下方的【建立閘道>動態路由】,請確定您建立的閘道為動態路由,目前VNet to VNet僅支援動態路由。
最後就會開始建立閘道,這個步驟會花費比較久的時間,請稍待十分鐘左右。
閘道建立成功後,您就可以看到閘道IP位址。
重複上述步驟分別在東南亞的虛擬網路建立區域網路及動態路由閘道,來連接到東亞及日本東部的虛擬網路,以及在日本東部的虛擬網路建立區域網路及動態路由閘道,來連接東亞和東南亞的虛擬網路。
匯出並修改網路組態
回到虛擬網路的列表頁面,點選下方的【匯出】。
選擇要匯出網路組態的訂用帳戶,首先筆者以MSDN – VS Premium這個訂用帳戶來做示範。
利用文字編輯器打開網路組態檔NetworkConfig.xml,您可以看到如下圖1的部分,需要修改為您在【設定站對站連線能力及閘道】一節,Microsoft Azure所幫您在日本東部虛擬網路所建立的動態路由閘道的閘道IP位址,下圖2的部分則是輸入東南亞虛擬網路的閘道IP位址,而下圖3您可以看到在ConnectionsToLocalNetwork區段中有一個LocalNetworkSiteRef區段,指定連接到SGLan,因為在Microsoft Azure管理入口網站中只能指定一個區域網路,只有自己修改網路組態然後將之匯入到Microsoft Azure才可以連接多個虛擬網路。
修改完畢之後儲存。
回到Microsoft Azure管理入口網站,點選下方的【新增>網路服務>虛擬網路>匯入組態】。
選擇修改好的網路組態檔案,並確認訂用帳戶是否和您所匯出的訂用帳戶為同一個,確認無誤後按下一步。
此時Microsoft Azure會偵測到網路組態的異動,可以看到動作欄位均為更新,代表這些網路組態在您按下完成是將會被更新為您所設定的內容。
重述本節的步驟,下載網路組態、修改閘道IP位址及加入另一外個區域網路的區段,最後回到Microsoft Azure管理入口網站將網路組態匯入。
匯入網路組態成功後,在東亞的虛擬網路儀表板頁面當中,可以看到連接到東南亞(SGLan)以及日本東部(JPELan)區域網路,並且在資訊欄位中看到,接下來的動作已經無法透過管理入口網站來進行,必須搭配PowerShell或REST API才能修改虛擬網路。
建立VNet之間的Site to Stie VPN
最後的步驟須經由Windows Azure PowerShell來完成,請開啟Windows Azure PowerShell命令列提示字元工具,匯入發行設定檔,在作用中的訂用帳戶中使用下列的指令碼來建立Site to Site VPN。
Set-AzureVNetGatewayKey -VNetName 虛擬網路名稱 -LocalNetworkSiteName 區域網路名稱 -SharedKey 共享金鑰
如下圖,筆者將MSDN - VS Professional 1訂用帳戶中位於東南亞的虛擬網路(SGVNet)與位於東亞以及日本東部的區域網路透過共享金鑰建立Site to Site VPN。
重複上述步驟直到將所有的虛擬網路之間的Site to Site VPN建立起來。
稍待一會之後,在Microsoft Azure管理入口網站就可以看到虛擬網路之間的Site to Site VPN的狀態呈現已連接,表示整個Vnet to Vnet大功告成。
測試VNet to VNet
為了確認依照本文的步驟是否成功建立跨訂用帳戶的VNet to VNet,筆者在每個訂閱中分別在前面步驟所建立的虛擬網路中建立VM,請確認下圖2的訂用帳戶及下圖3的虛擬網路是否與【環境說明】一節相符。
VM建立完成,應該會看到如下圖的結果。
使用RDP連到每一台VM之中啟用File and Printer Sharing的防火牆規則。
您就可以用PING的方式來測試是否能夠和其他虛擬網路中的VM互通。
致謝
感謝Tiffena Kou所提供的資訊,筆者才能夠順利完成本文的實驗。
參考資料
VNet-to-VNet: Connecting Virtual Networks in Azure across Different Regions
Step-by-Step: Configure VNet to VNet Connectivity in Azure
Creating a Stretched Network on Microsoft Azure
Microsoft Azure: Connecting multiple VNET's to a VNET.
Microsoft Azure: Configure Cross-Subscription VNET to VNET Connectivity in Azure…
Create a Windows Azure Network using PowerShell – 31 Days of Servers in the Cloud (Part 19 of 31)
Windows Azure Management Cmdlets
Creating Azure Virtual Networks using Powershell and XML
Creating Azure Virtual Networks using Powershell and XML Part 2: Powershell functions