[Azure]透過 VNet to VNet VPN 設定,將兩個不同的 Azure 訂閱串在一起

[Azure]透過 VNet to VNet VPN 設定,將兩個不同的 Azure 訂閱串在一起

自從上次完成 Point to Site VPN 的設定之後,後續也很容易將 Azure Web Site 透過憑證連在一起了,本來想說就可以告一個段落,但臨時又收到一個需求,要將不同訂閱之間也能串在一起。因此我們做些設定,將數個虛擬網路之間,架設起 VPN 通道,將他們能夠串在一起。

 

我的 Lab 環境大致是這樣,有兩個 Azure 的帳號,各有一個虛擬網路,在這個虛擬網路上都各有一個 VM,我們希望透過 VPN 可以讓這兩個不同的虛擬網路要能串接

image


 

為了要完成上述的測試,我們先在第一個帳號下,先去建立右邊的虛擬網路的環境,這個虛擬網路放在位於東亞的資料中心

image

 

建立好之後調整相關的子網路設定,我們設定 Lan1 是 192.168.1.0/24 。而從圖上可以看到此時是沒有「站對站連線能力」的相關設定

image

 

在這個部分多謝朋友的解釋,因為在沒有設定區域網路的狀況下,是不會有站對站連線能力的設定,因此我們回到區域網路的設定,此時要上面的架構圖來看,我們要將左邊環境的設定,設定為右邊網路環境的區域網路。

image

 

這邊的 「VPN 裝置 IP 位址」,是我第二個卡關的地方,透過朋友的說明,這裡原本要加左方的閘道 IP 給填入,但因為另外一邊還沒有設定,所以這裡先隨便給他一個騙過去就好,等完成左方的虛擬網路相關設定之後,再回來將正確的閘道 IP 給填入。

image

 

然後再將左邊環境的網路位址設定給填入,就可以完成區域網路的設定了。

image

 

此時就可以回到虛擬網路內,可以看到可以選擇設定「站對站連線能力」。勾選「連接到區域網路」,並且下方選擇對應的「區域網路」名稱,這些應該都可以很快就完成相關設定了。

image

 

接下來我們在虛擬網路的「儀表板」,會看到提示尚未建立閘道,因此選擇下方「建立閘道」的按鈕,使用「動態路由」,就可以放著等待相關設定的完成,這裡差不多要等大約 30 分鐘以上的時間,因此需要有點耐心。

image

 

完成之後就可以看到可以取得閘道 IP 位置,這個位址要先記下來,等一下我們設定架構圖左邊的網路環境的時候,會用到這個 IP 位址。

image


 

前面的處理我們完成架構圖右邊的設定,接下來我們要設定架構圖左邊的虛擬網路,這個是位置在東南亞的資料中心

image

 

建立好之後設定位址範圍和子網路,這裡千萬不能和另外一邊的相同,否則兩邊到時候會無法連線。

image

 

接著設定區域網路,這裡的 VPN 裝置 IP 位址,就是之前右邊虛擬網路的閘道位置,因此我們將閘道的 IP 值給填入

image

 

並且將右邊的網路位置配置給填入,讓架構圖左邊的虛擬網路知道哪些位址的封包,要透過 VPN 來傳送。

image

 

設定好區域網路,就可以到虛擬網路的「設定」,進行「站對站連線能力」的相關配置。

image

 

設定好之後,就可以回到「儀表板」的頁籤,選擇「建立閘道」,並且指定使用「動態路由」,設定好之後,也是要等差不多 30 分鐘的時間,就可以完成設定,並且取得左邊虛擬網路的閘道 IP

image


 

完成架構圖左邊的虛擬網路之後,此時我們可以取得正確的閘道 IP 位置,就可以回到架構圖右邊的虛擬網路上,調整之前騙他的位址,換成正確的閘道 IP 位址

image

 

完成之後,這樣算是完成一半,接下來就沒有 GUI 介面可以設定,必須要透過 PowerShell 來進行相關設定。


  

因為 Windows Server 內建的 PowerShell 是沒有包含 Azure 的相關模組,因此這裡我先透過 Microsoft Web Platform Installer 來進行安裝,下載後執行該程式,就可以很容易的完成安裝

image

 

安裝的過程很快,完成之後會出現「Microsoft Azure PowerShell」的選項,就可以使用 PowerShell 來進行 Azure 的相關設定。

 

為了要能進行相關設定,這個部分我們主要會使用到以下的幾組 PowerShell 的指令

Add-AzureAccount : Authenticates through Windows Azure Active Directory and downloads associated subscriptions.

Get-AzureSubscription : Gets an Azure subscription configuration

Select-AzureSubscription : Selects an Azure subscription to be used as the current subscription

Get-AzureVNetSite : Azure virtual networks

Set-AzureVNetGatewayKey : Sets the IPsec/IKE pre-shared key

基本上會用到兩個指令 Add-AzureAccount 和 Set-AzureVNetGatewayKey,其他幾個主要是為了方便管理,因此我將上面設定兩個 Azure 訂閱帳號都設定我可以同時管理,因此可以登入一個帳號之後,選擇切換不同的訂閱環境去設定,如果想要單純一點,基本上可以使用 Add-AzureAccount  去登入不同的帳號,然後用 Set-AzureVNetGatewayKey 在兩個不同訂閱身份下設定也是可以。

 

這裡我先用 Add-AzureAccount 的命令,執行之後會出現登入畫面,讓我們輸入登入 Azure 的帳號和密碼

image

image

image

 

如果您跟我一樣,帳號下面控管多個 Azure 訂閱的話,可以先透過 Get-AzureSubscription 的指令先查看一下。

image

 

而這裡我看了一下 SubscriptionId,先回到 Azure Portal 上面確認一下沒有問題之後,就可以使用 Select-AzureSubscription 的指令切換到不同的訂閱

image

 

此時我們利用 Get-AzureVNetSite 來檢查一下虛擬網路的設定,而這一步的用意只是確定前一個步驟在切換到不同的訂閱時候,是否有真正的切換過去,也避免我們後續下指令的時候搞錯了對象。這裡看起來應該是原本架構圖上右邊的虛擬網路

image

 

接下來就是關鍵了,我們主要要使用 Set-AzureVNetGatewayKey 的指令來設定,利用 –VNetName 指定虛擬網路的名稱,利用 –LocalNetworkSiteName 指定區域網路的名稱,而使用 –ShareKey 指定IPsec/IKE pre-shared key ,這裡只能使用英文字母和數字,不能使用特殊符號。這樣就完成架構圖右邊虛擬網路的相關設定了。

image

 

接下來我們要切換 Azure 的訂閱,來設定架構圖左邊的虛擬網路,但如同前面所談到的,如果您的帳號沒有另外一個訂閱的管理權,那麼就反覆上面的動作,改成是另外一個虛擬帳號訂閱的相關設定。而這裡因為我目前登入帳號可以管理另外一個訂閱,因此我使用Select-AzureSubscription 的指令來切換

 image

 

然後用 Get-AzureVNetSite 檢查一下是否有正常切換,可以抓到該訂閱下的虛擬網路設定

image

 

最後用 Set-AzureVNetGatewayKey 的指令來設定,要記得兩邊的 Key 要設定為一樣才可以。

image

 

完成上述相關設定之後,我們回到 Azure Portal 上來查看虛擬網路的儀表板,就可以看到兩邊已經正常連接起來

image

image

 


 

接下來我們進行測試,在我們前面虛擬網路建立閘道的同時,我們已經利用那個空檔的時間來建立兩個 Azure VM

image

image

 

為了測試方便,我在這兩個 VM 裡面都調整一下防火牆的進階設定,將 Ping 的回應給開啟

image

 

因此我們就可以在這兩個 VM 去互相 Ping 對方了,下面這個從 IP 我們可以看出,這個是架構圖右邊網路的 VM,因此我們去 Ping 另外一個虛擬網路的 IP,可以看到是可以順利連接的。

image

 

而從另外一邊看起來也是很正常的

image


  

如果您也想練習一下的時候,要注意當測試完畢,想要打掉整個環境的時候,可能會遇到無法刪除虛擬網路的問題,雖然你已經把相關使用該虛擬網路的 VM 或 Web Site 都刪除,Azure Portal 還是會表示你有在使用中,此時你可以用個小技巧,先把閘道給刪除掉,就可以正常刪除虛擬網路了。而 MSDN 上和 Terry 的部落格中,也有很詳細的資料可以參考,有興趣的朋友也可以看一下以下這些參考資料。

 

參考資料

1. 如何安裝和設定 Azure PowerShell ( 網址 )

2. 設定 VNet 對 VNet 連線 ( 網址 )

3. 建立多個跨Microsoft Azure訂用帳戶的VNet對VNet連線( 網址 ) : 如果您想要超過兩個以上的虛擬網路串接,可參考 Terry 透過匯出設定檔的方式來做設定。