具有多個網路路徑的非對稱式路由

本文說明在網路來源與目的地之間有多個路由可用時,網路流量如何採取不同的路徑。

您必須知道兩個概念,才能了解非對稱式路由。 第一個是多個網路路徑的效果。 另一個概念是裝置 (如防火牆) 如何保持狀態。 這些裝置類型稱為具狀態裝置。 這兩個因素結合時,它們可以建立一種案例,讓具狀態裝置卸除網路流量。 卸除流量的原因是未偵測到來自本身的流量。

多個網路路徑

當企業網路只有一個透過網際網路服務提供者連至網際網路的連結時,則往返網際網路的所有流量都會經過相同的路徑。 公司通常會購買多個線路來建立備援路徑,以改善網路運作時間。 使用這種類型的設定,流量可能會經由某個連結外送至網際網路,並透過不同的連結返回。 此案例通常稱為非對稱式路由。 在非對稱式路由中,返回網路流量會採取與原始外送流程不同的路徑。

Network with multiple paths

不過,非對稱式路由通常會在進入網際網路時發生。 當引入多個路徑的組合時,也會發生這種情況。 第一個範例是當您具有網際網路路徑,以及前往相同目的地的私人路徑時。 第二個範例是當您具有多個同時前往相同目的地的私人路徑時。

在來源和目的地之間沿著路徑的每個路由器,都會計算要到達目的地所採取的最佳路徑。 路由器會根據兩個主要因素判斷最可能的路徑:

  • 外部網路之間的路由是以「邊界閘道通訊協定」(BGP) 路由通訊協定為基礎。 BGP 會接受芳鄰的通告並經由一連串的步驟來執行這些通告,以決定到達預定目的地的最佳路徑。 它會在其路由表中儲存最佳路徑。
  • 與路由相關聯的子網路遮罩的長度會影響路由路徑。 如果路由器收到相同 IP 位址的多個公告,則路由器會選取子網路遮罩較長的路徑,因為系統會將其視為更具體的路由。

具狀態裝置

路由器會為了進行路由傳送而查看封包的 IP 標頭。 有些裝置看起來在封包的更深處。 這些裝置通常會查看第 4 層 (傳輸控制通訊協定 (TCP) 或使用者資料標通訊協定 (UDP)),或甚至是第 7 層 (應用程式層) 標頭。 這幾種裝置不是安全性裝置,就是頻寬最佳化裝置。

防火牆是具狀態裝置的常見範例。 防火牆允許或拒絕封包根據各種準則傳遞其介面。 這些準則包括但不限於通訊協定、TCP/UDP 連接埠和 URL 標頭。 這個層級的封包檢查會對裝置造成沈重的處理負載。

為了改善效能,防火牆會檢查流程的第一個封包。 如果允許封包繼續進行,其會將流程資訊保留在其狀態表中。 然後,根據最初的判斷會允許與此流程相關的所有後續封包。 屬於現有流程的封包可能抵達不是其起源的防火牆。 因為其沒有初始流程的先前狀態資訊,所以防火牆會卸除封包。

非對稱式路由與 ExpressRoute

當您透過 Azure ExpressRoute 連接到 Microsoft 時,您的網路會發生下列變更:

  • 您有 Microsoft 的多個連結。 一個連結是您現有的網際網路連線,而另一個則是透過您的 ExpressRoute 連線。 目的地為 Microsoft 的特定流量可能會通過網際網路連線,但會透過您的 ExpressRoute 連線返回。 當流量通過 ExpressRoute 傳送,但透過網際網路路徑返回時,也會發生相同的情況。
  • 您已從 ExpressRoute 線路收到更具體的 IP 位址。 因此,當來自您網路的流量前往 Microsoft,以取得透過 ExpressRoute 提供的服務時,您的路由器一律會偏好使用 ExpressRoute 連線。

若要了解這兩項變更對網路產生的效果,讓我們來考量一些案例。 舉例來說,您有一個連到網際網路的線路,而且您透過網際網路取用所有的 Microsoft 服務。 您網路與 Microsoft 的來回流量會周遊相同的網際網路連結並通過防火牆。 防火牆會在看到第一個封包時記錄流程。 系統允許該交談的每個後續封包,因為流程存在於狀態表中。

Asymmetric routing with ExpressRoute

然後,您會啟動 ExpressRoute 線路,以取用 Microsoft 透過 ExpressRoute 提供的服務。 來自 Microsoft 的所有其他服務都是透過網際網路取用。 您會在連線到 ExpressRoute 連線的邊緣部署不同的防火牆。 Microsoft 會透過 ExpressRoute,針對特定服務,向您的網路通告更多特定的前置詞。 您的路由基礎結構會選擇 ExpressRoute 做為這些前置詞的慣用路徑。

如果您未透過 ExpressRoute 向 Microsoft 公告您的公用 IP 位址。 Microsoft 會透過網際網路與您的公用 IP 位址進行通訊。 從您網路傳送到 Microsoft 的流量會使用 ExpressRoute 連線,但從 Microsoft 返回的流量接著會使用網際網路路徑。 當邊緣的防火牆看到其不熟悉的流程回應封包時,其會卸除這些封包。

如果您選擇要針對 ExpressRoute 和網際網路公告相同的網路位址轉譯 (NAT)。 您會在私人 IP 位址的網路上看到類似的用戶端問題。 Windows Update 等服務的要求會透過網際網路傳送,因為這些服務的 IP 位址不會透過 ExpressRoute 公告。 不過,回傳流量會透過 ExpressRoute 返回。 因為 Microsoft 收到的 IP 位址具有來自網際網路和 ExpressRoute 的相同子網路遮罩,所以慣用的路徑一律為 ExpressRoute。 如果您網路邊緣上面臨 ExpressRoute 連線的防火牆或其他具狀態裝置,沒有任何有關流程的先前資訊,則其會卸除這些封包。

非對稱式路由解決方案

您有兩個可用選項來解決非對稱式路由的問題。 第一個是透過路由,第二個是使用來源型 NAT (SNAT)。

路由

確定已向適當的廣域網路 (WAN) 連結公告您的公用 IP 位址。 例如,如果您想要將網際網路用於驗證流量,而將 ExpressRoute 用於郵件流量。 請不要透過 ExpressRoute 公告您的 Active Directory 同盟服務 (AD FS) 公用 IP 位址。 此外,也確保不會對路由器透過 ExpressRoute 接收的 IP 位址公開內部部署 AD FS 伺服器。 透過 ExpressRoute 收到的路由更加明確,所以會讓 ExpressRoute 成為 Microsoft 驗證流量的慣用路徑。 如果您未注意到如何在網路中進行路由傳送,則可能會引發非對稱式路由問題。

如果您想要使用 ExpressRoute 進行驗證,請確定您是透過 ExpressRoute (沒有 NAT) 公告 ADFS 公用 IP 位址。 以這種方式設定時,源自 Microsoft 的流量會前往 AD FS server 將透過 ExpressRoute 前往的內部部署。 從您網路返回的流量若前往 Microsoft,則會使用 ExpressRoute,因為其是透過網際網路的慣用路由。

來源型 NAT

解決非對稱式路由問題的另一種方法就是使用 SNAT。 例如,您選擇不透過 ExpressRoute 來公告內部部署簡易郵件傳輸通訊協定 (SMTP) 伺服器的公用 IP 位址。 相反地,您想要使用網際網路進行這種類型的通訊。 源自 Microsoft 並傳送至內部部署 SMTP 伺服器的要求會周遊網際網路。 您會使用 SNAT 將傳入要求傳送至內部 IP 位址。 來自 SMTP 伺服器的傳回流量會前往邊緣防火牆 (您用於進行 NAT),而不是透過 ExpressRoute。 因此,返回流量將會採用網際網路路徑。

Source-based NAT network configuration

非對稱式路由偵測

Traceroute 是確保網路流量周遊預期路徑的最佳方式。 如果您預期從內部部署 SMTP 伺服器至 Microsoft 的流量會採用網際網路路徑,則預期的路徑追蹤是從 SMTP 伺服器至 Microsoft 365。 結果會驗證流量確實離開您的網路朝向網際網路,而不是朝向 ExpressRoute。