在 Azure 中,不同 VNet 之間可以互相連線,但有幾個前提條件和不同的實作方式。
這正連接著你之前的問題:該用 VNet Peering 還是 Private Link?
1. 不同的 VNet 互連:主要方式
A. VNet Peering (虛擬網路對等互連) —— 最推薦
這是將兩個 VNet 打通最直接、效能最高的方式。
- 同區域 (Regional Peering):連接同一個 Azure 區域內的 VNet。
- 跨區域 (Global Peering):連接不同 Azure 區域(例如:台灣與美國)的 VNet。
- 特點:流量走的是 Microsoft 的私有骨幹網路,不會經過公用網際網路。連線後,兩邊的資源(如 VM)就像在同一個網路一樣,可以用私有 IP 直接互傳資料。
B. Private Link (私有連結)
如果你不想「打通整個網路」,只想讓 VNet A 的某台機器存取 VNet B 裡的「某個特定服務」(例如資料庫或你自己寫的 API),就用 Private Link。
- 優點:安全性最高,因為你只開放了「一個服務」而不是「整個網段」。
2. 關鍵限制:IP 位址不能重疊
在你提供的 Microsoft FAQ 連結中,最重要的一點是:如果兩個 VNet 的 IP 位址範圍 (Address Space) 有重疊,它們就「無法」透過 VNet Peering 進行連線。
- 錯誤範例:
- VNet A:
10.0.0.0/16 - VNet B:
10.0.0.0/16 - ❌ 無法建立 Peering,因為路由器不知道
10.0.0.1到底是指 A 還是 B。
- VNet A:
- 正確範例:
- VNet A:
10.1.0.0/16 - VNet B:
10.2.0.0/16 - ✅ 可以完美連線。
- VNet A:
3. 如果 IP 真的重疊了怎麼辦?
如果你接手了別人的專案,發現兩個 VNet 的 IP 範圍一模一樣,但又必須互連,這時你有兩種選擇:
- 使用 Private Link:Private Link 不受 IP 重疊限制。因為它是在你的 VNet 裡產生一個新的 IP(端點),這個 IP 是你自己定的,不會衝突。
- 使用 VPN Gateway (NAT):透過 VPN 建立連線,並利用網路位址轉換 (NAT) 來避開衝突(複雜度較高)。
總結建議
- 如果 IP 沒有重疊:請直接用 VNet Peering,這最簡單且速度最快。
- 如果只想開放特定服務,或 IP 已重疊:請使用 Private Link。
- 如果是跨專案的大型架構:建議採用上題提到的 Hub-Spoke 架構,統一規劃 IP 網段避免未來衝突。
這組設定 絕對可以連線。
原因很簡單:這兩個 VNet 的 IP 位址範圍完全沒有重疊。
1. 網路範圍分析
我們來拆解這兩個網段:
- VNet A (
10.0.1.0/24):- IP 範圍:
10.0.1.0到10.0.1.255 - 總可用位址:256 個(扣除 Azure 預留的 5 個,可用 251 個)。
- IP 範圍:
- VNet B (
10.2.0.0/16):- IP 範圍:
10.2.0.0到10.2.255.255 - 總可用位址:65,536 個。
- IP 範圍:
因為 10.0.x.x 與 10.2.x.x 是不同的區塊,所以它們在路由上不會產生衝突。
2. 你該如何連通它們?
針對你的需求,有兩種推薦做法:
方案 A:VNet Peering(最推薦)
如果你希望 VNet A 的 VM 可以像在同一個辦公室一樣,直接透過 10.2.0.5 存取 VNet B 的機器。
- 優點:低延遲、高頻寬,設定最簡單。
- 操作:在 VNet A 的設定頁面點擊「對等互連 (Peerings)」,並新增連線指向 VNet B(反向連線通常會自動建立)。
方案 B:Private Link(針對特定服務)
如果你只想讓 VNet A 存取 VNet B 裡的「特定資料庫」或「特定的 Load Balancer」,而不希望整個網路互通。
- 優點:安全性更高,符合最小權限原則。
- 操作:在 VNet A 的子網段中建立一個 Private Endpoint,指向 VNet B 中的服務。
3. 注意事項(避坑指南)
雖然這兩個 VNet 可以連線,但如果你之後要在這兩個 VNet 之間建立連線,請注意:
- 子網段 (Subnet) 規劃:確保你在 VNet 內部切分的 Subnet 也沒有超出上述範圍。
- DNS 解析:連線打通後,IP 雖然通了,但如果你想用「電腦名稱」存取(例如
vm-prodb.internal),你還需要設定 Azure Private DNS Zone 並關聯到這兩個 VNet。 - NSG 規則:記得在網路安全性群組 (NSG) 中放行來自對方網段的流量,否則封包會被防火牆擋住。
簡單總結:這兩個網段分得很開,你可以放心地進行 VNet Peering。