在 Azure 中,不同 VNet 之間可以互相連線?

在 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: 10.1.0.0/16
    • VNet B: 10.2.0.0/16
    • 可以完美連線

3. 如果 IP 真的重疊了怎麼辦?

如果你接手了別人的專案,發現兩個 VNet 的 IP 範圍一模一樣,但又必須互連,這時你有兩種選擇:

  1. 使用 Private Link:Private Link 不受 IP 重疊限制。因為它是在你的 VNet 裡產生一個新的 IP(端點),這個 IP 是你自己定的,不會衝突。
  2. 使用 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.010.0.1.255
    • 總可用位址:256 個(扣除 Azure 預留的 5 個,可用 251 個)。
  • VNet B (10.2.0.0/16)
    • IP 範圍:10.2.0.010.2.255.255
    • 總可用位址:65,536 個。

因為 10.0.x.x10.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 之間建立連線,請注意:

  1. 子網段 (Subnet) 規劃:確保你在 VNet 內部切分的 Subnet 也沒有超出上述範圍。
  2. DNS 解析:連線打通後,IP 雖然通了,但如果你想用「電腦名稱」存取(例如 vm-prodb.internal),你還需要設定 Azure Private DNS Zone 並關聯到這兩個 VNet。
  3. NSG 規則:記得在網路安全性群組 (NSG) 中放行來自對方網段的流量,否則封包會被防火牆擋住。

簡單總結:這兩個網段分得很開,你可以放心地進行 VNet Peering。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *