[Azure]透過虛擬網路閘道將不同的 VNet 串接起來

設定虛擬網路閘道,並且將連接設定 BGP,將不同的 VNet 給串接起來

前幾天上了一門課,透過虛擬網路閘道將三個 VNet 給串接起來,並且透過設定採用 BGP 模式,讓網卡知道有效的路由,這樣就可以讓 VNet1 上面的 VM,可以連接到 VNet3 上面的 VM

為了測試上述的 Lab,我先建立三個「資源群組」,用來放三個 VNet 的相關資源,這樣後續要做(刪除)管理會比較方便一點。也為了測試跨資料中心,因此我將這三個資源群組分別設定位於 東亞東南亞日本東部的三個資料中心。

接下來在三個資源群組內建立「虛擬網路」,下面我整理一下三個虛擬網路的設定,主要就是三個的網段不能相同,因此一開始設定的時候要注意一下

資源群組 名稱 位址空間 子網路名稱 位址範圍
Lab1 VNet-Lab1 10.1.0.0/16 Subnet-Lab1 10.1.0.0/24
Lab2 VNet-Lab2 10.2.0.0/16 Subnet-Lab2 10.2.0.0/24
Lab3 VNet-Lab3 10.3.0.0/16 Subnet-Lab3 10.3.0.0/24

當完成上述設定之後,接著我們在各個虛擬網路下,選擇「子網路」→「閘道子網路

接著設定每一個虛擬網路的「虛擬網路閘道」的設定

設定值如下,最主要是 ASN 號碼,要記得三個閘道都要設定不同值,這樣才能串接

資源群組 名稱 閘道類型 VPN 類型 SKU 虛擬網路 BGP ASN ASN
Lab1 VGW-Lab1 VPN 依路由 VpnGw1 VNet-Lab1 已啟用 65001
Lab2 VGW-Lab2 VPN 依路由 VpnGw2 VNet-Lab2 已啟用 65002
Lab3 VGW-Lab3 VPN 依路由 VpnGw3 VNet-Lab3 已啟用 65003

設定好之後應該會類似下方的範例

此時我們先將三個閘道的 IP 資訊給記錄下來,這樣後面設定的時候才不會亂掉

虛擬閘道名稱 公用 IP 位址 BGP 對等體 IP 位址
VGW-Lab1 207.46.158.236 10.1.1.254
VGW-Lab2 52.187.16.78 10.2.1.254
VGW-Lab3 13.78.96.173 10.3.1.254

接著要開始建立「區域網路閘道」,這個部分會比較麻煩一點,因此我們是三個 VNet 之間的串接,因此需要設定 Lab1→Lab2、Lab2→Lab1、Lab2→Lab3、Lab3→Lab2 這四組,可以不用設定 Lab1→Lab3 和 Lab3→Lab1 ,這樣透過設定 BPG 的功能,讓路由可以選擇最佳路由,只是會稍微多繞一點路就是了 :P

因此相關「區域網路閘道」設定如下,重點就是要設定對方的閘道資訊,像是 Lab1 要連接 Lab2 的區域網路閘道,相關的 IP 和 BGP 設定,就是 Lab2 下面的虛擬閘道資訊。

資源群組 名稱 IP 位址 位址空間 BGP ASN
Lab1 LocalGW-Lab1toLab2 52.187.16.78 10.2.1.254/32 YES 65002
Lab2 LocalGW-Lab2toLab1 207.46.158.236 10.1.1.254/32 YES 65001
Lab2 LocalGW-Lab2toLab3 13.78.96.173 10.3.1.254/32 YES 65003
Lab3 LocalGW-Lab3toLab2 52.187.16.78 10.2.1.254/32 YES 65002

接下來就是最後一步了,要透過「虛擬網路閘道」下面的「連接」→「新增」,來將兩個虛擬網路之間真正串接起來

設定畫面如下

基本上要注意的就是每一個區域網路閘道都要設定一個連線,並且要採用「連接類型」是「站對站(IPsec)」,所以連線之間的共用金鑰要相同的設定值就沒有問題了。預設建立的時候,該連接沒有啟動 BGP,因此需要到「連線」內的組態,去將 BGP 設定為「已啟用


基本上透過上述的相關設定,應該就沒有問題了,但要怎麼來驗證是否可以順利連接呢 ? 這個時候我在三個資源群組下都各自建立一個 VM,並且在建立 VM 的時候,要特別指定使用虛擬網路

當建立好 VM 之後,我們以 Lab1 資源群組下所建立的 VM 為例,可以在該 VM 的「網路介面」下的「有效的路由」選項中,可以看到除了有透過區域網路閘道和連線所建立的和 Lab2 資源群組下的 VNet 的串接路由,也透過使用 BGP 協定所取得連到 Lab3 下的 VNet 的路由設定,因此看起來設定沒有問題。

但也不要高興太早,我們還是在 VM 裡面實際測試一下,下面的例子我是透過 Lab3 資源群組下的 VM,然後透過這個 VM 去 Ping 在 Lab1 下面的 VM,從圖中我們可以看到這樣串接是有通的,因此算是完成一個簡單任務了。


而在上面這個 Lab看起來很順利,但實際我一共建立三次,每次在三個 VNet 之間建立六個「區域網路閘道」的時候都是正常的,但是要是刪除 Lab1 與 Lab3 之間的「區域網路閘道」之後,那 Lab1 就無法透過 Lab2 連接到 Lab3,查找相關網路介面上的「有效的路由」,都是沒有問題的,但實際連接卻都失敗的狀況。反覆測試和檢查相關的設定,都沒有查找到問題,正想要重建第四次的時候,忽然看到在虛擬網路閘道下,有個「重設」的選項,就當成死馬當成活馬醫,在按下重設之後,Azure 花了將近 40 分鐘再那處理,原本不能通的 VM,就忽然恢復正常了。

因此如果有人遇到跟我類似的狀況,當您調整虛擬區域網路的設定,如果發覺有異常無法正常按照設定去連接的話,那麼可以試試看是否可以也利用「重設」來解決,而不要急著去刪除重新建立了。