建立多個跨Microsoft Azure訂用帳戶的VNet對VNet連線

建立多個跨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訂用帳戶。

clip_image034

接著本文將要為了介紹如何實作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互通,以此類推(如下圖)。

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管理入口網站,點選【新增>網路服務>虛擬網路>自訂建立】。

image

在建立虛擬網路的第一個步驟中,輸入虛擬網路名稱、位置及選擇要使用哪一個訂用帳戶(請參考上一節的表格)。

image

第二個步驟可以讓您指定DNS及設定VPN連線能力,在此我們先跳過這個步驟,直接按下一步。

image

輸入虛擬網路的位址空間,如上一節的表格,筆者首先在東南亞的資料中心建立一個名稱為HKVNet的虛擬網路,並定義位址空間為10.1.0.0/24,預設的子網路(Subnet-1)則保持系統所指定的10.1.0.0/27,設定完畢後按完成。

image

重複本節的步驟,建立上一節表格中的所有虛擬網路,建立完畢您應該會看到如下圖的結果。

image

建立區域網路

因建立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管理入口網站,點選【新增>網路服務>虛擬網路>加入區域網路】。

image

為了讓東亞的虛擬網路(HKVnet)可以連接東南亞的虛擬網路,首先我們必須建立和東南亞空間位址相同的區域網路,在這個步驟筆者將區域網路名稱設定為SGLan,作為將來要連接到東南亞的虛擬網路的識別名稱。VPN裝置IP位址的部分,先暫時填入一個符合IP v4規則的IP位址,將來動態路由閘道建立完成之後再回頭來修改。

image

指定位址空間的步驟,您需要輸入的位址空間為目的虛擬網路的位址空間,在此我們輸入位於東南亞的虛擬網路之位址空間,也就是10.2.0.0/24。

image

重複上述步驟建立與日本東部虛擬網路連接的區域網路定義,建立完成後應該會看到如下圖的結果。

image

接著重複上述步驟建立東南亞虛擬網路和東亞、日本東部連接的區域網路,以及建立日本東部虛擬網路和東亞、東南亞連接的區域網路(如下圖)。

image

設定站對站連線能力及閘道

點選虛擬網路的【設定】頁面,勾選【連接到區域網路】,選擇稍早所建立的區域網路的其中一個(例如SGLan),您會在虛擬網路位址空間的部分看到一個自動產生閘道的子網路,最後按儲存來完成站對站連線能力的設定。

image

回到虛擬網路的儀表板頁面,點選下方的【建立閘道>動態路由】,請確定您建立的閘道為動態路由,目前VNet to VNet僅支援動態路由。

image

最後就會開始建立閘道,這個步驟會花費比較久的時間,請稍待十分鐘左右。

image

閘道建立成功後,您就可以看到閘道IP位址。

image

重複上述步驟分別在東南亞的虛擬網路建立區域網路及動態路由閘道,來連接到東亞及日本東部的虛擬網路,以及在日本東部的虛擬網路建立區域網路及動態路由閘道,來連接東亞和東南亞的虛擬網路。

image

image

匯出並修改網路組態

回到虛擬網路的列表頁面,點選下方的【匯出】。

image

選擇要匯出網路組態的訂用帳戶,首先筆者以MSDN – VS Premium這個訂用帳戶來做示範。

image

利用文字編輯器打開網路組態檔NetworkConfig.xml,您可以看到如下圖1的部分,需要修改為您在【設定站對站連線能力及閘道】一節,Microsoft Azure所幫您在日本東部虛擬網路所建立的動態路由閘道的閘道IP位址,下圖2的部分則是輸入東南亞虛擬網路的閘道IP位址,而下圖3您可以看到在ConnectionsToLocalNetwork區段中有一個LocalNetworkSiteRef區段,指定連接到SGLan,因為在Microsoft Azure管理入口網站中只能指定一個區域網路,只有自己修改網路組態然後將之匯入到Microsoft Azure才可以連接多個虛擬網路。

image

修改完畢之後儲存。

image

回到Microsoft Azure管理入口網站,點選下方的【新增>網路服務>虛擬網路>匯入組態】。

image

選擇修改好的網路組態檔案,並確認訂用帳戶是否和您所匯出的訂用帳戶為同一個,確認無誤後按下一步。

image

此時Microsoft Azure會偵測到網路組態的異動,可以看到動作欄位均為更新,代表這些網路組態在您按下完成是將會被更新為您所設定的內容。

image

重述本節的步驟,下載網路組態、修改閘道IP位址及加入另一外個區域網路的區段,最後回到Microsoft Azure管理入口網站將網路組態匯入。

image

image

匯入網路組態成功後,在東亞的虛擬網路儀表板頁面當中,可以看到連接到東南亞(SGLan)以及日本東部(JPELan)區域網路,並且在資訊欄位中看到,接下來的動作已經無法透過管理入口網站來進行,必須搭配PowerShell或REST API才能修改虛擬網路。

image

image

image

建立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。

image

重複上述步驟直到將所有的虛擬網路之間的Site to Site VPN建立起來。

image

稍待一會之後,在Microsoft Azure管理入口網站就可以看到虛擬網路之間的Site to Site VPN的狀態呈現已連接,表示整個Vnet to Vnet大功告成。

image

image

image

測試VNet to VNet

為了確認依照本文的步驟是否成功建立跨訂用帳戶的VNet to VNet,筆者在每個訂閱中分別在前面步驟所建立的虛擬網路中建立VM,請確認下圖2的訂用帳戶及下圖3的虛擬網路是否與【環境說明】一節相符。

image

image

image

VM建立完成,應該會看到如下圖的結果。

image

使用RDP連到每一台VM之中啟用File and Printer Sharing的防火牆規則。

image

您就可以用PING的方式來測試是否能夠和其他虛擬網路中的VM互通。

image

致謝

感謝Tiffena Kou所提供的資訊,筆者才能夠順利完成本文的實驗。

參考資料

設定 VNet 對 VNet 連線

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…

Azure: VM Security Extensions, ExpressRoute GA, Reserved IPs, Internal Load Balancing, Multi Site-to-Site VPNs, Storage Import/Export GA, New SMB File Service, API Management, Hybrid Connection Service, Redis Cache, Remote Apps and more…

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