設定虛擬網路閘道,並且將連接設定 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,就忽然恢復正常了。
因此如果有人遇到跟我類似的狀況,當您調整虛擬區域網路的設定,如果發覺有異常無法正常按照設定去連接的話,那麼可以試試看是否可以也利用「重設」來解決,而不要急著去刪除重新建立了。