實作虛擬網路流量路由

已完成

Azure 會在 Azure 虛擬網路內自動為每個子網路建立路由表,並將系統的預設路由新增至該表格。 您可以使用自訂路由覆寫某些 Azure 系統路由,並將額外的自訂路由新增至路由表。 Azure 會依據子網路路由表中的路由,來路由子網路的輸出流量。

系統路由

Azure 會自動建立系統路由,並將路由指派給虛擬網路中的每個子網路。 您無法建立或移除系統路由,但是您可以使用自訂路由覆寫某些系統路由。 Azure 會建立每個子網路的預設系統路由,並在您使用特定 Azure 功能時,將額外的選用預設路由新增至特定子網路或每個子網路。

預設路由

每個路由都包含位址首碼和下一個躍點類型。 當流量離開子網路並傳送至具有路由位址首碼的 IP 位址時,包含該首碼的路由就是 Azure 使用的路由。 每當建立虛擬網路時,Azure 就會自動為虛擬網路內的每個子網路建立下列預設系統路由:

來源

位址首碼

下一個躍點類型

預設

虛擬網路獨有

虛擬網路

預設

0.0.0.0/0

網際網路

預設

10.0.0.0/8

預設

192.168.0.0/16

預設

100.64.0.0/10

在路由傳送方面,躍點是整體路由的導航點。 因此,下一個躍點是下一個導航點,會將流量導向其最終目的地的旅程。 上表中所列的下一個躍點代表 Azure 如何路由傳送以所列位址首碼為目標的流量。 下一個躍點類型的定義如下:

  • 虛擬網路:在虛擬網路位址空間內的位址範圍之間路由傳送流量。 Azure 會使用位址首碼來建立路由,該路由會對應至虛擬網路位址空間內所定義的每個位址範圍。 Azure 會自動使用針對每個位址範圍建立的路由,在子網路之間路由傳送流量。

  • 網際網路:將位址前置詞所指定的流量路由傳送到網際網路。 系統預設路由會指定 0.0.0.0/0 位址首碼。 除非目的地位址適用於 Azure 服務,否則 Azure 會將虛擬網路內位址範圍未指定的任何位址流量路由傳送到網際網路。 Azure 會透過骨幹網路將其服務的任何流量直接路由傳送到服務,而不是將流量路由傳送到網際網路。 您可以使用自訂路由,來覆寫位址首碼為 0.0.0.0/0 的 Azure 預設系統路由。

  • 無:路由傳送到下一個躍點類型為 [無] 的流量會遭到捨棄,而不是路由傳送到子網路以外的地方。 Azure 會自動為下列位址首碼建立預設路由:

    • 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16:保留在 RFC 1918 中以供私人使用。
    • 100.64.0.0/10:保留在 RFC 6598 中。

如果您在虛擬網路位址空間內指派上述任何位址範圍時,Azure 會自動將路由的下一個躍點類型從無變更至虛擬網路。 如果您對其指派位址範圍的虛擬網路位址空間中,包含四個保留位址首碼的其中一個 (但不是完全相同) 時,Azure 會移除該首碼的路由,並針對您新增的位址首碼來新增路由 (使用虛擬網路作為下一個躍點類型)。

選用預設路由

Azure 會為您啟用的任何 Azure 功能新增預設系統路由。 根據功能,Azure 會將選用的預設路由新增至虛擬網路內的特定子網路,或新增至虛擬網路內的所有子網路。 Azure 可能在您啟用不同功能時新增的額外系統路由和下一個躍點類型如下:

來源

位址首碼

下一個躍點類型

虛擬網路內路由新增至其中的子網路

預設

虛擬網路獨有,例如:10.1.0.0/16

VNet 對等互連

全部

虛擬網路閘道

透過 BGP 從內部部署公佈的首碼,或在本機網路閘道中設定的首碼

虛擬網路閘道

全部

預設

多個

VirtualNetworkServiceEndpoint

僅限服務端點已啟用的子網路

  • 虛擬網路 (VNet) 對等互連:當您在兩個虛擬網路間建立虛擬網路對等互連時,系統會在每個虛擬網路位址空間中,為每個位址範圍新增路由。

  • 虛擬網路閘道:當您將虛擬網路閘道新增至虛擬網路時,Azure 會新增一或多個具有虛擬網路閘道的路由作為下一個躍點類型。 來源會列為虛擬網路閘道,因為閘道會將路由新增至子網路。

    • 如果您的內部部署網路閘道會交換邊界閘道協定 (BGP) 路由與 Azure 虛擬網路閘道,則系統會針對每個從內部部署網路閘道散佈的每個路由新增路由。 您可以傳播至 Azure 虛擬網路閘道的路由數目有所限制,因此您應該將內部部署路由摘要至可能的最大位址範圍。 如需您可以傳播的路由數目詳細資訊,請參閱網路限制

VirtualNetworkServiceEndpoint:當您對特定服務啟用服務端點時,Azure 會將服務的公用 IP 位址新增至路由表。 系統會為虛擬網路內的個別子網路啟用服務端點,因此只會將路由新增至已啟用服務端點的子網路路由表。 Azure 服務的公用 IP 位址會定期變更,而 Azure 會在必要時管理路由表的更新。

VNet 對等互連VirtualNetworkServiceEndpoint 下一個躍點類型只會新增至虛擬網路內子網路的路由表,而這些子網路是透過 Azure Resource Manager 部署模型所建立的。 下一個躍點類型不會新增至路由表,這些路由表與透過傳統部署模型所建立的虛擬網路子網路建立關聯。

自訂路由

若要更精確地控制網路流量的路由傳送方式,您可以使用您自己的使用者定義路由 (UDR) 來覆寫 Azure 建立的預設路由。 當您想要確保兩個子網路之間的流量都能通過防火牆設備時,或如果您想要確保不會將來自 VNet 的流量路由傳送到網際網路,這項技術會很有用。

使用者定義的路由

您可以在 Azure 中建立自訂或使用者定義 (靜態)、路由來覆寫 Azure 的預設系統路由,或將其他路由新增至子網路的路由表。

在 Azure 中,每個子網路可以有零個或一個相關聯的路由表。 當您建立路由表並將其與子網路建立關聯時,其中的路由會結合,或覆寫 Azure 新增至子網路的預設路由。

建立使用者定義路由時,您可以指定下列的下一個躍點類型:

虛擬設備:虛擬設備通常是執行網路應用程式 (例如防火牆) 的虛擬機器。 使用虛擬設備躍點類型建立路由時,您也會指定下一個躍點 IP 位址。 IP 位址可以是:

  • 虛擬機器所連結網路介面的私人 IP 位址。
  • Azure 內部負載平衡器的私人 IP 位址。

虛擬網路閘道:當您想要將特定位址首碼指定的流量路由傳送至虛擬網路閘道時指定。 虛擬網路閘道必須搭配 VPN 類型建立。

:當您想要卸除位址首碼的流量,而不是將流量轉送至目的地時指定。

虛擬網路:當您想要覆寫虛擬網路內的預設路由時指定。

網際網路:當您想要明確地將位址首碼指定的流量路由至網際網路時指定,或您想要 Azure 服務所用的流量 (具有公用 IP 位址) 保留在 Azure 骨幹網路中時指定。

設定使用者定義的路由

以下是您有包含三個子網路的虛擬網路範例。

  • 子網路為前端、DMZ 和後端。 在 DMZ 子網路中,有一個網路虛擬設備 (NVA)。 NVA 是有助於網路功能 (例如路由傳送和防火牆最佳化) 的 VM。
  • 您想要確保來自前端子網路的所有流量都會通過 NVA 傳送至後端子網路。

已指派路由表的虛擬網路圖。

建立路由表

建立路由表很簡單。 您提供名稱訂用帳戶資源群組位置。 您也決定使用虛擬網路閘道路由傳播

Azure 入口網站中 [建立路由表] 窗格的螢幕擷取畫面。

針對已啟用虛擬網路閘道傳播的所有子網路,會自動將路由新增至路由表。 當您使用 ExpressRoute 時,傳播可確保所有子網路都能取得路由資訊。

建立自訂路由

針對我們的範例,

  • 新的路由會命名為 ToPrivateSubnet
  • 私人子網路位於 10.0.1.0/24。
  • 路由會使用虛擬設備。 請注意 [下一個躍點類型] 的其他選擇:[虛擬網路閘道]、[虛擬網路]、[網際網路] 和 [無]。
  • 虛擬設備位於 10.0.2.4。

[新增路由] 頁面的螢幕擷取畫面。已醒目提示 [下一個躍點類型] 下拉式清單。已選取 [虛擬設備]。

總而言之,此路由會套用到 10.0.1.0/24 (私人子網路) 中的任何位址首碼。 前往這些位址的流量會傳送至具有 10.0.2.4 位址的虛擬設備。

與路由表建立關聯

我們範例中的最後一個步驟是要將公用子網路與新的路由表建立關聯。 每個子網路可以有零個或一個與其相關聯的路由表。

路由表與虛擬網路建立關聯的螢幕擷取畫面。

注意

根據預設,使用系統路由時,流量會直接傳送至私人子網路。 不過,您可以透過使用者定義的路由來強制讓流量通過虛擬設備。

注意

在此範例中,虛擬設備不應該有公用 IP 位址,而且應該啟用 IP 轉送。

使用強制通道保護 VNet

強制通道可讓您透過站對站 VPN 通道,重新導向或「強制」所有網際網路繫結流量傳回內部部署位置,以便進行檢查和稽核。 這是大部分企業 IT 原則的重要安全性需求。 如果您未設定強制通道,則 Azure 中來自 VM 的網際網路繫結流量會永遠從 Azure 網路基礎結構直接向外周遊到網際網路,而您無法選擇檢查或稽核流量。 未經授權的網際網路存取可能會導致資訊洩漏或其他類型的安全性漏洞。 您可以使用 Azure PowerShell 來設定強制通道。 無法使用 Azure 入口網站進行設定。

在下列範例中,前端子網路不會使用強制通道。 前端子網路中的工作負載可以直接從網際網路繼續接受並回應客戶要求。 中介層和後端子網路會使用強制通道。 任何從這兩個子網路到網際網路的輸出連接會強制或重新導向回站對站 (S2S) VPN 通道的其中一個內部部署網站。

後端和中間層子網路會透過 S25 VPN 執行強制通道。前端子網路會直接路由傳送到網際網路。

設定強制通道

Azure 中的強制通道處理會使用虛擬網路自訂使用者定義的路由進行設定。

  • 每個虛擬網路子網路都有一個內建系統路由表。 系統路由表具有下列三個路由群組:

    • 本機 VNet 路由:直接路由傳送到相同虛擬網路中的目的地 VM。
    • 內部部署路由:路由傳送到 Azure VPN 閘道。
    • 預設路由:直接路由傳送到網際網路。 以前兩個路由未涵蓋的私人 IP 位址為目標的封包會被捨棄。
  • 若要設定強制通道處理,您必須:

    • 建立路由表。
    • 將使用者定義的預設路由新增至 VPN 閘道。
    • 將路由表關聯至適當的 VNet 子網路。
  • 強制通道必須與具有路由型 VPN 閘道的 VPN 相關聯。

    • 您必須在連線到虛擬網路的跨單位本機站台之間設定預設網站連線。
    • 內部部署 VPN 裝置必須使用 0.0.0.0/0 設定為流量選取器。

使用強制通道處理可讓您限制和檢查 Azure 中 VM 和雲端服務的網際網路存取,同時繼續啟用網際網路存取所需的多層服務架構。

設定 Azure 路由伺服器

Azure 路由伺服器可以簡化網路虛擬設備 (NVA) 和虛擬網路之間的動態路由。 此伺服器可讓您直接透過邊界閘道協定 (BGP) 路由通訊協定,在任何支援 BGP 路由通訊協定的 NVA 與 Azure 虛擬網路 (VNet) 中的 Azure 軟體定義網路 (SDN) 之間交換路由資訊,而不需要手動設定或維護路由表。 Azure 路由伺服器是完全受管理的服務,並設定有高可用性。

Azure 路由伺服器可簡化虛擬網路中 NVA 的設定、管理和部署。

  • 每當虛擬網路位址更新時,您不再需要手動更新 NVA 上的路由表。

  • 每當 NVA 宣佈新的路由或撤銷舊的路由,您不再需要手動更新使用者定義的路由。

  • 您可以使用 Azure 路由伺服器對等互連 NVA 的多個執行個體。 您可以在 NVA 中設定 BGP 屬性,並根據設計 (例如,主動-主動 (如需效能) 或主動-被動 (如需復原)),讓 Azure 路由伺服器知道哪一個 NVA 執行個體是主動或哪一個是被動。

  • NVA 與 Azure 路由伺服器之間的介面是以一般標準通訊協定為基礎。 只要 NVA 支援 BGP,您就可以將其與 Azure 路由伺服器對等互連。

  • 您可以在任何新的或現有的虛擬網路中部署 Azure 路由伺服器。

  • 了解如何部署 Azure 路由伺服器

診斷路由傳送問題

假設您嘗試連線到 Azure 虛擬網路中的特定虛擬機器 (VM) 持續失敗。 您可以藉由檢視對 VM 中網路介面而言有效的路由,來診斷路由問題。 子網路中所有網路介面的有效路由是下列項目的組合:您所建立的路由、Azure 的預設路由,和透過邊界閘道協定 (BGP) 經由 Azure VPN 閘道從您的內部部署網路傳播的任何路由。

您可以使用 Azure 入口網站、Azure PowerShell 或 Azure CLI 來檢視每個網路介面的有效路由。 下列步驟顯示每項技術的範例。 在每個情況下,只有在 VM 處於執行中狀態時,才會傳回輸出。 若有多個網路介面連結至 VM,您可以檢視每個網路介面的有效路由。 因為每個網路介面可以位於不同子網路中,所以每個網路介面可有不同的有效路由。

在 Azure 入口網站中檢視有效路由

  1. 使用具有必要權限的 Azure 帳戶登入 Azure 入口網站。

  2. 在搜尋方塊中,輸入您想要調查的 VM 名稱。

  3. 從搜尋結果中選取 VM。

  4. 在 [設定] 底下,選取 [網路功能],然後藉由選取其名稱以瀏覽至網路介面資源。

    Azure 入口網站 - 選取特定 NIC。

  5. 在 [支援 + 疑難排解] 底下,選取 [有效路由]。 對名為 myVMNic1 的網路介面來說,其有效的路由如下圖中所示:

    Azure 入口網站 - 特定 NIC 的有效路由。

使用 Azure PowerShell 來檢視有效路由

您可以使用 Get-AzEffectiveRouteTable 命令來檢視網路介面的有效路由。 下列範例會取得名為 myVMNic1 的網路介面 (位於資源群組 myResourceGroup 中) 的有效路由:

Get-AzEffectiveRouteTable `

-NetworkInterfaceName myVMNic1 `

-ResourceGroupName myResourceGroup `

解決路由問題

您可能會採取以解決路由問題的步驟包括:

  1. 新增自訂路由以覆寫預設路由。 了解如何新增自訂屬性
  2. 變更或移除導致流量路由傳送到不想要位置的自訂路由。 了解如何變更刪除自訂路由。
  3. 確定路由表已與正確的子網路相關聯 (包含網路介面的子網路)。 了解如何建立路由表與子網路的關聯
  4. 確定您已部署的裝置 (例如 Azure VPN 閘道或網路虛擬設備) 如預期般執行。

為以下每個問題選擇最佳的答案。 然後選取 [檢查您的答案]

檢定您的知識

1.

何種類型的路由可讓流量覆寫 Azure 設定的路由?

2.

VNet 遇到一些路由問題。 工程師可以在哪裡著手診斷問題?