輪輻虛擬網路中的預設路由插入
Azure 中最常見的架構之一是中樞和輪輻設計,其中部署在輪輻虛擬網路 (VNet) 中的工作負載會透過存在於中樞 VNet 中的共用網路裝置傳送流量。 使用者定義路由 (UDR) 通常需要在輪輻 VNet 中設定,以引導流量進入中樞的安全性裝置。 不過,此設計需要系統管理員跨許多輪輻管理這些路由。
Azure 路由伺服器提供了集中點,讓網路虛擬設備 (NVA) 可在此公告其插入輪輻 VNet 中的路由。 如此,系統管理員即無須在輪輻 VNet 中建立及更新路由表。
拓撲
下圖描述具有中樞 VNet 和兩個輪輻 VNet 的簡單中樞和輪輻設計。 在中樞內,已部署網路虛擬設備與路由伺服器。 如果沒有路由伺服器,則必須在每個輪輻中設定使用者定義的路由。 這些 UDR 通常包含 0.0.0.0/0 的預設路由,可透過 NVA 傳送所有來自輪輻 VNet 的流量。 例如,下列案例可用於基於安全考量的流量檢查。
使用中樞 VNet 中的路由伺服器,即無須使用使用者定義的路由。 NVA 會向路由伺服器公告網路前置詞,因而插入前置詞,使其顯示於部署在下列位置的任何虛擬機器的有效路由中:中樞 VNet 或與中樞 VNet 對等互連 (透過使用遠端虛擬網路的閘道或路由伺服器設定) 的輪輻 VNet。
透過網路虛擬設備 (NVA) 連線至內部部署
如果網路虛擬設備 (NVA) 是用來透過 IPsec VPN 或 SD-WAN 技術提供內部部署網路的連線,則相同的機制可用來吸引來自輪輻到網路虛擬設備 (NVA) 的流量。 此外,網路虛擬設備 (NVA) 可以從 Azure 路由伺服器動態學習 Azure 首碼,並使用動態路由通訊協定向內部部署公告它們。 下圖描述此設定:
透過 NVA 檢查私人流量
上一節說明網路虛擬設備 (NVA) 藉由將 0.0.0.0/0
預設路由從 NVA 插入路由伺服器而檢查的流量。 不過,如果您想要只檢查透過 NVA 的輪輻對輪輻和輪輻對內部部署流量,您應考慮 Azure 路由伺服器不會公告與從 NVA 得知的虛擬網路位址空間相同或較長前置詞的路由。 換句話說,Azure 路由伺服器不會將這些前置詞插入虛擬網路中,而且不會在中樞或輪輻 VNet 中的虛擬機器 NIC 上對前置詞進行編程。
不過,Azure 路由伺服器會公告比從 NVA 得知的 VNet 位址空間更大的子網路。 您可以從 NVA 公告您在虛擬網路中擁有的超級網路。 例如,如果您的虛擬網路使用 RFC 1918 位址空間 10.0.0.0/16
,則 NVA 可以向 Azure 路由伺服器公告 10.0.0.0/8
,且這些前置詞將會插入中樞和輪輻 VNet 中。 在關於 BGP 與 VPN 閘道中會提及此 VNet 行為。
重要
如果有一個情節,即從 ExpressRoute 和 NVA 公告的前置詞長度相同,Azure 會優先選擇從 ExpressRoute 得知的路由並將其加以編程。 如需詳細資訊,請參閱一節。
透過虛擬網路閘道連線至內部部署
如果 VPN 或 ExpressRoute 閘道存在於與路由伺服器和 NVA 相同的虛擬網路中,以提供內部部署網路的連線,則系統也會在輪輻 VNet 中對這些閘道得知的路由進行編程。 這些路由會覆寫路由伺服器插入的預設路由 (0.0.0.0/0
),因為它們會更具體 (較長的網路遮罩)。 下圖描述先前的設計,其中已新增 ExpressRoute 閘道。
您無法將輪輻 VNet 中的子網路設定為只瞭解來自 Azure 路由伺服器的路由。 停用與子網路建立關聯之路由表中的「傳播閘道路由」,可防止兩種類型的路由 (來自虛擬網路閘道的路由,以及從 Azure 路由伺服器的路由) 都插入至該子網路中的 NIC。
根據預設,路由伺服器也會將所有從 NVA 得知的前置詞公告至 ExpressRoute。 由於 ExpressRoute 的路由限制或路由伺服器本身等因素,這可能不是理想的做法。 在此情況下,NVA 可以宣告其通往路由伺服器的路由,包括 BGP 社群 no-advertise
(值為 65535:65282
)。 當路由伺服器使用此 BGP 社群接收路由時,會將路由插入子網路中,但不會將其公告給任何其他 BGP 同儕節點 (例如 ExpressRoute 或 VPN 閘道,或其他 NVA)。
SDWAN 與 ExpressRoute 和 Azure 防火牆共存
先前設計的特定案例是客戶在流量流程中插入 Azure 防火牆,以檢查所有透過 ExpressRoute 或 SD-WAN/VPN 設備進入內部部署網路的流量。 在此情況下,所有輪輻子網路都有路由表,可防止輪輻從 ExpressRoute 或路由伺服器學習任何路由,並以 Azure 防火牆的預設路由 (0.0.0.0/0) 做為下一個躍點,如下圖所示:
Azure 防火牆子網路會得知來自 ExpressRoute 和 VPN/SDWAN NVA 的路由,並決定以何種方式傳送流量。 如上一節所述,如果 NVA 設備向路由伺服器公告超過 200 個路由,就應該傳送其以 BGP 社群 no-advertise
標示的 BGP 路由。 如此一來,SDWAN 前置詞將不會透過 Express-Route 插回內部部署。
流量對稱
如果在主動/主動案例中使用多個 NVA 實例來提升復原能力或延展性,則如果 NVA 需要保留連線的狀態,則需要流量對稱。 新一代防火牆案例的範例。
- 若要從 Azure 虛擬機器連線至公用網際網路,NVA 會使用來源網路位址轉譯 (SNAT),讓輸出流量來自於 NVA 的公用 IP 位址,進而達到流量對稱。
- 針對從網際網路到虛擬機器中執行的工作負載輸入流量,除了目的地網路位址轉譯 (DNAT),NVA 將需要執行來源網路位址轉譯 (SNAT),以確保來自虛擬機器的傳回流量會落在處理第一個封包的相同 NVA 執行個體上。
- 針對 Azure 之間的相互連線,因為來源虛擬機器會獨立採取路由決策,因此目前需要 SNAT 才能達成流量對稱。
多個網路虛擬設備 (NVA) 執行個體也可以部署在主動/被動設定中;例如,如果其中一個執行個體公告較糟的路由 (比另一個執行個體的 AS 路徑更長)。 在此情況下,Azure 路由伺服器只會在 VNet 虛擬機器中插入慣用的路由,而且只有在主要網路虛擬設備 (NVA) 執行個體透過 BGP 停止公告時,才會使用較不慣用的路由。
將路由公告至虛擬網路閘道和 VNet 的不同路由伺服器
如前幾節所示,Azure 路由伺服器具有雙重角色:
- 它會得知並公告往返於虛擬網路閘道 (VPN 和 ExpressRoute) 的路由
- 其會在 VNet 和直接對等互連的 VNet 上設定得知的路由
這種雙重功能通常很有趣,但有時可能會對某些需求造成負面影響。 例如,如果路由伺服器部署在一個以 NVA 公告 0.0.0.0/0 路由並以 ExpressRoute 閘道公告內部部署首碼的 VNet 中,則會在其 VNet 和直接對等互連之 VNet 中的虛擬機器上設定所有路由 (來自 NVA 的 0.0.0.0/0 和內部部署首碼)。 結果是,由於內部部署首碼比 0.0.0.0/0 更明確,因此內部部署與 Azure 之間的流量將會略過 NVA。 如果不想這麼做,本文中的前幾節已示範如何停用 VM 子網路中的 BGP 傳播並設定 UDR。
不過,還有更動態的替代方法。 您可以使用不同的 Azure 路由伺服器來執行不同的功能:其中一部負責與虛擬網路閘道互動,另一部則負責與虛擬網路路由互動。 下圖顯示此方法的可能設計:
中樞內的路由伺服器 1 用來將來自 SDWAN 的前置詞插入 ExpressRoute 中。 由於輪輻 VNet 與中樞 VNet 的對等互連並非透過使用遠端虛擬網路的閘道或路由伺服器 (在輪輻 VNet 對等互連中) 和使用此虛擬網路的閘道或路由伺服器 (中樞 VNet 對等互連中的閘道傳輸) 來執行的,因此輪輻 VNet 無法辨識這些路由 (SDWAN 前置詞和 ExpressRoute 前置詞都是如此)。
為了將路由傳播至輪輻 VNet,NVA 使用在新的輔助 VNet 中部署的路由伺服器 2。 NVA 只會將單一 0.0.0.0/0
路由傳播至路由伺服器 2。 由於輪輻 VNet 與此輔助 VNet 的對等互連是透過使用遠端虛擬網路的閘道或路由伺服器 (在輪輻 VNet 對等互連中) 和使用此虛擬網路的閘道或路由伺服器 (中樞 VNet 對等互連中的閘道傳輸) 來執行的,因此輪輻中的所有虛擬機器都將能夠辨識 0.0.0.0/0
路由。
0.0.0.0/0
路由的下一個躍點是 NVA,因此輪輻 VNet 仍需對等互連至中樞 VNet。 另一個要注意的重點是,中樞 VNet 必須對等互連至路由伺服器 2 部署所在的 VNet,否則將無法建立 BGP 相鄰。
如果要將 ExpressRoute 到輪輻 VNet 的流量傳送至防火牆 NVA 進行檢查,仍需要 GatewaySubnet 中的路由表,否則 ExpressRoute 虛擬網路閘道會使用從 VNet 對等互連得知的路由,將封包傳送至虛擬機器。 此路由表中的路由應符合輪輻前置詞,而下一個躍點應為防火牆 NVA (或防火牆 NVA 前方供備援之用的負載平衡器) 的 IP 位址。 防火牆 NVA 可以與上圖中的 SDWAN NVA 相同,也可以是不同的裝置 (例如 Azure 防火牆),因為 SDWAN NVA 可以公告下一個躍點指向其他 IP 位址的路由。 下圖顯示此設計與新增的 Azure 防火牆:
注意
對於任何來自目的地為私人端點的內部部署流量,此流量會略過中樞中的防火牆 NVA 或 Azure 防火牆。 不過,這會導致非對稱式路由(這可能會導致內部部署與私人端點之間的連線中斷),因為私人端點會將內部部署流量轉送至防火牆。 為了確保路由對稱性,請在已部署私人端點的子網路上,啟用私人端點的路由表網路原則。
此設計允許將路由自動插入輪輻 VNet 中,而不會干擾從 ExpressRoute、VPN 或 SDWAN 環境得知其他路由,以及新增防火牆 NVA 以進行流量檢查。
相關內容
- 深入瞭解 ExpressRoute 和 Azure VPN 的 Azure 路由伺服器支援。
- 瞭解如何設定 Azure 路由伺服器與網路虛擬設備之間的對等互連。