examlab .net 用最有效率的方法,考取最有價值的證照
本篇導覽 約 27 分鐘

VPC 路由 — 最長前綴匹配、傳播與黑洞路由

5,400 字 · 約 27 分鐘閱讀 ·

ANS-C01 領域 2.1/2.2 深入解析 VPC 路由:最長前綴匹配、來自 VGW/TGW 的 BGP 路由傳播、靜態路由優先順序、用於 TGW 分段的黑洞路由、用於 GWLB 夾心拓撲的入口路由、VPC 對等互連非傳遞路由、MTU 不匹配導致的黑洞問題、星狀拓撲模式,以及 AWS 進階網路專家認證中測試最頻繁的 VPC 路由表陷阱。

立即做 20 題練習 → 免費 · 不用註冊 · ANS-C01

VPC 路由在 ANS-C01 中是整個考試測試頻率最高的機制。Solutions Architect (助理架構師) 考試可能會問:「資料庫應該放在哪個子網路?」,而 Advanced Networking Specialty (進階網路專家) 考試則會問:「給定一個路由表,其中包含來自 VGW 的傳播路由 10.0.0.0/16、指向對等連線的靜態路由 10.0.0.0/24、明確的黑洞路由 10.0.0.5/32,以及指向 NAT 閘道的預設路由 0.0.0.0/0 —— 目標為 10.0.0.5 的封包會去哪裡?目標為 10.0.0.99 的封包會去哪裡?目標為 8.8.8.8 的封包又會去哪裡?」這就是最長前綴匹配 (Longest Prefix Match) 在靜態與傳播路由之間進行仲裁,它是所有其他領域 2 考題建立其上的基礎原始元件。

本主題涵蓋了完整的路由原始元件:本地路由、靜態與傳播路由、最長前綴匹配、來自虛擬私有閘道 (VGW) 和傳輸閘道 (TGW) 的路由傳播、用於 Gateway Load Balancer 夾心拓撲等中間盒模式的入口路由 (Ingress routing)、用於 Transit Gateway 路由表中顯式流量隔離的黑洞路由 (Blackhole routes),以及 VPC 對等互連的非傳遞性、非對稱安全群組配置或 MTU 黑洞如何破壞看起來完全正確的路由表。本主題對應至任務說明 2.1 (實作本地網路與 AWS 雲端之間的路由與連線性)任務說明 2.2 (跨多個 AWS 帳號、區域和 VPC 實作路由與連線性),這兩者都包含大量情境題。

為什麼 VPC 路由是 ANS-C01 領域 2 的基礎

領域 2 (網路實作) 佔 ANS-C01 考試的 26%,僅次於領域 1 (網路設計,佔 30%)。在領域 2 內,VPC 路由是將所有其他實作細節聯繫在一起的結締組織。如果不先推導路由表,就無法回答 Transit Gateway 的問題。如果不理解傳播的 BGP 路由如何與靜態路由交互,就無法回答 Direct Connect 故障轉移的問題。如果不辨認出端點路由是否在正確的路由表中,就無法回答 PrivateLink 的情境題。因此,掌握 VPC 路由是領域 2 中投資回報率最高的學習活動。

本主題的框架是確定性的封包轉發。離開 ENI 的每個封包都會查閱精確的一個路由表 —— 即與該 ENI 子網路關聯的路由表 —— 並套用一條單一規則:最長前綴匹配勝出,且在相同前綴長度下優先選擇靜態路由而非傳播路由。不存在基於來源 IP 的「原則路由 (Policy routing)」,不存在各應用程式的路由區分器,也不存在雲端意義上的 VRF。這種簡單性是一項特性:它使路由決策具備可解釋性。缺點是,任何路由表配置錯誤都會導致靜默失敗而非有用的錯誤訊息,修復則要求維運人員在大腦中模擬最長前綴演算法。

ANS-C01 考試以三種不同的形式測試 VPC 路由。單一 VPC 路由涉及子網路路由表、入口路由、NAT 閘道放置。多 VPC 路由涉及 VPC 對等互連路由需求、Transit Gateway 連接路由表以及區域間路由。混合路由則涉及本地通報的 BGP 前綴如何傳播到 VPC 路由表,以及 AWS 如何在傳播的 VGW 路由、傳播的 TGW 路由以及 Site-to-Site VPN 隧道之間進行仲裁。本指南將按專家級考試要求的精確度引導你完成這三種形式。

白話文解釋 VPC Routing — Longest Prefix Match 與傳播

VPC 路由將幾個簡單的原始元件 (路由表、最長前綴匹配、傳播、黑洞) 結合成複雜的情境,特別是當它們疊加在星狀拓撲、混合連線和中間盒檢查之上時。三個類比可以幫助理解這些移動零件。

類比一 — 具備精確投遞規則的郵件分揀處

將每個子網路想像成一個郵件分揀處,每個路由表則是該分揀處快遞員的路線手冊本地路由 (Local route) 是規則:「任何寄往本鄰里的郵件,直接投入街尾的信箱」——始終存在,且在 VPC 內部投遞中永遠勝出,不可移除。最長前綴匹配 (Longest Prefix Match) 是郵差的準則:如果一封信寄往「倫敦唐寧街 10 號」,而路線手冊上同時有「整個倫敦 → 大貨車」和「唐寧街 10 號 → 外交信使」,則外交信使勝出,因為它是最精確的匹配。靜態路由 (Static routes) 是郵政局長親手寫入的條目 —— 具備高權威性,除非有人明確重寫,否則絕不更改。傳播路由 (Propagated routes) 是路線手冊每天早上從區域調度中心自動接收的條目 (來自 VGW 或 TGW 的 BGP) —— 很有用,但在相同精確度下優先權低於手寫條目。黑洞路由 (Blackhole routes) 是明確的「不准投遞到此地址 —— 靜默退回寄件人」規則;它們是你將特定目的地與網路其餘部分隔離的方式。VPC 對等互連 (Peering) 是兩個分揀處之間的私人快遞線路 —— 但快遞員只投遞路線手冊中明確寫出的地址;他們不負責將郵件轉運到第三個分揀處。

類比二 — 具備精確度規則的圖書館卡片索引

VPC 路由表是尋找書籍用的圖書館卡片索引本地路由是卡片「任何在此圖書館的書 → 檢查書架」,始終存在。最長前綴匹配是「最精確的索引條目勝出」 —— 如果索引中同時有「參考書:Dewey 500–599」和「參考書:Dewey 530.12 → 特藏室」,則尋找 Dewey 530.12 的請求會去特藏室,而不是一般的 500 號書架。靜態路由是圖書管理員的手寫覆蓋卡片,在相同精確度下始終優於印刷卡片。傳播路由是來自聯合目錄 (BGP) 的自動印刷卡片 —— 在相同精確度下優先權低於手寫卡片。黑洞路由是「此書已宣告丟失 —— 不准搜索書架」的卡片。入口路由 (Ingress routing) 是館長在正門口設置的特殊規則:「任何進入的請求在到達卡片索引之前,必須先在安檢櫃檯停下」 —— 這就是你強制流量經過檢查設備的方式。

類比三 — 具備出口指示牌的高速公路網

VPC 子網路是進入高速公路的駕駛員。路由表是每個路口的出口指示牌層級本地路由是「本 VPC 的 CIDR — 保持直行」的入口標誌。最長前綴匹配是規則「越精確的出口勝出」:如果有一個出口標誌寫著「區域 10.0.0.0/16」,另一個寫著「小鎮 10.0.5.0/24」,則要去 10.0.5.42 的駕駛員會從「小鎮」出口下交流道。傳播路由是區域運輸當局根據交通反饋 (BGP) 豎立的指示牌;靜態路由則是當地議會在上面加蓋的指示牌,在相同精確度下當地標誌勝出。黑洞路由是「橋樑斷裂 —— 禁止進入」的標誌,旨在有意丟棄流量。入口路由是入口匝道上的收費站,在車輛加入主路之前強制其接受檢查。VPC 對等互連路由是兩條高速公路之間的私人橋樑車道 —— 但只允許橋上寫明的特定地址通過;你不能經由這座橋開往後方的第三條高速公路。

對於 ANS-C01,當問題涉及同一個表中疊加靜態、傳播和黑洞路由時,郵件分揀處類比是效益最高的心智模型 —— 手寫 vs 印刷 vs 作廢的隱喻可以清晰映射。對於涉及多個 VPC 的對等互連和 TGW 場景,公路網的形象讓非傳遞性對等互連和 TGW 路由表隔離變得直覺。對於入口路由和中間盒模式,入口匝道上的收費站子類比最為簡潔。參考資料:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html

VPC 路由表基礎 — 本地、靜態與傳播

每個 VPC 在建立時都有一個主路由表 (Main route table),你可以為特定子網路附加自訂路由表。子網路在任何時候都精確地與一個路由表關聯;如果沒有顯式關聯,它會繼承主路由表。每個路由表都包含路由,每條路由都有三個組件:目的地 CIDR目標 (Target) (local, IGW, NAT GW, VGW, TGW, 對等連線, ENI, GWLB 端點等) 以及傳播旗標 (靜態或傳播)。

本地路由 — 始終排在第一,永不可編輯

本地路由 (Local route) 匹配 VPC 的主要 CIDR (以及後來新增的任何次要 CIDR),且目標為 local。它是自動建立無法刪除無法覆蓋的 —— 即使在同一個表中有一條更精確的靜態路由,當目的地包含在本地路由的 CIDR 範圍內時,對於 VPC 內部流量而言,本地路由始終勝出。這是 ANS-C01 用來考驗考生的規則:你無法透過標準路由表將 VPC 內部流量重定向到中間盒設備,因為本地路由對 VPC CIDR 擁有絕對優先權。

靜態路由 — 手動編寫,在相同前綴下優先權最高

靜態路由 (Static route) 是你 (或 IaC) 顯式新增的路由。靜態路由與傳播路由的評估準則為:最長前綴匹配第一,靜態 vs 傳播仲裁第二。在相同前綴長度下,靜態路由勝過傳播路由。靜態路由可以指向任何有效目標 —— 網際網路閘道、NAT 閘道、虛擬私有閘道、傳輸閘道、VPC 對等連線、網路介面、Gateway Load Balancer 端點或電信閘道 (Wavelength)。

傳播路由 — 從 VGW/TGW 自動填入

當與 VPC 關聯的虛擬私有閘道或傳輸閘道啟用了路由傳播 (Route propagation) 時,傳播路由 (Propagated route) 會自動新增到路由表中。傳播路由來自透過 Site-to-Site VPN、Direct Connect VIF 或 TGW 連接的 BGP 通報。傳播減少了維運開銷 —— 當本地端通報新的前綴時,VPC 路由表會自動更新,無需手動干預。

ANS-C01 中測試最頻繁的 VPC 路由規則:當靜態路由和傳播路由具有相同的前綴長度時,靜態路由勝出。這是操作員的覆蓋機制。情境描述:「BGP 通報了 10.5.0.0/16,路由表中指向另一個目標的靜態 10.5.0.0/16 路由 —— 哪個目標會收到目標為 10.5.0.42 的流量?」答案是靜態目標勝出。但在不同前綴長度下,最長前綴匹配優先於來源性質:傳播的 10.5.0.0/24 勝過靜態的 10.5.0.0/16,因為 /24 更精確。請背熟這條規則的這兩部分。參考資料:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html

最長前綴匹配 — AWS 如何決定哪條路由勝出

離開 ENI 的每個封包都會觸發路由表查閱。AWS 應用最長前綴匹配 (LPM):在所有匹配的路由中,前綴最長 (最精確) 的那一條勝出。/32 勝過 /24,/24 勝過 /16,/16 勝過 /0。在相同前綴長度下的平局由靜態優先於傳播來打破,然後是路由表的優先順序。

案例實作 — 三條重疊路由

考慮一個具有以下條目的路由表:

目的地 目標 類型
10.0.0.0/16 local 本地 (自動)
10.5.0.0/16 vgw-1234 傳播
10.5.0.0/24 tgw-5678 靜態
10.5.0.42/32 eni-9abc 靜態
0.0.0.0/0 nat-def0 靜態

目標為 10.5.0.42 的封包 → /32 勝出 → ENI eni-9abc。目標為 10.5.0.99 的封包 → /24 勝出 → TGW tgw-5678。目標為 10.5.99.99 的封包 → /16 勝出 → VGW vgw-1234。目標為 8.8.8.8 的封包 → /0 勝出 → NAT 閘道 nat-def0。

具備本地路由的 LPM

本地路由覆蓋了 VPC 的主要和次要 CIDR。在 VPC 自身的 CIDR 空間內,路由表中沒有任何更精確的路由可以覆蓋本地路由 —— 這是一條特殊規則 (不是標準的 LPM 仲裁)。要將 VPC 內部流量重定向到中間盒設備,你不能在標準路由表中使用 /32 靜態路由;你需要 IGW 或 VGW 上的入口路由表 (Ingress route table) (路由表選項功能),或者你需要架構獨立的 VPC 並使用帶有設備模式的 TGW。

LPM 與 BGP

當 BGP 通報多個前綴時,AWS 將每個前綴作為獨立的傳播路由匯入。如果本地端通報 10.5.0.0/16 和 10.5.0.0/24,兩者都會進入傳播路由清單,而 LPM 會為任何 10.5.0.x 封包選擇 /24。這是路由彙總 (Route summarization) 的基礎 —— 通報一個較不精確的彙總路由覆蓋廣泛範圍,同時允許更精確的例外路由進行覆蓋。

  • 本地路由 (Local route):針對 VPC CIDR 自動建立的路由,目標為 local,不可變。
  • 靜態路由 (Static route):手動新增的路由,在相同前綴長度下勝過傳播路由。
  • 傳播路由 (Propagated route):透過 BGP 通報從 VGW/TGW 自動新增的路由。
  • 最長前綴匹配 (LPM):最精確的路由勝出。
  • 路由傳播 (Route propagation):每個路由表的旗標,啟用從 VGW/TGW 自動填入。
  • 黑洞路由 (Blackhole route):明確的丟棄路由,TGW 中的目標為 blackhole,VPC 中為不可達目標。
  • 入口路由 (Ingress routing):附加到 IGW/VGW 用於入站流量重定向的路由表。
  • 邊緣關聯 (Edge association):將路由表與 IGW 或 VGW (而非子網路) 關聯以進行入口路由。
  • 參考資料:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html

路由傳播 — VGW 與 TGW BGP 自動填入

路由傳播是每個路由表的旗標,用於將來自虛擬私有閘道或傳輸閘道的 BGP 通報前綴自動匯入路由表中。沒有傳播,你必須手動為每個本地前綴新增靜態路由 —— 對於大型混合網路來說,這在維運上是不可持續的。

VGW 傳播

對於附加了 VGW 的 VPC 路由表,如果傳播旗標設為「是」,則會透過 Site-to-Site VPN 從本地客戶端閘道接收所有 BGP 通報的前綴。當本地端新增一個分支機構並通報新的 /24 時,該路由會在幾秒鐘內出現在 VPC 路由表中。移除 BGP 通報會自動移除該路由。

TGW 傳播

對於 Transit Gateway,傳播是在 TGW 路由表層級配置的,而不是 VPC 路由表層級。TGW 連接可以與一個 TGW 路由表關聯 (這決定了該連接在哪裡查閱路由),並可以將路由傳播到一個或多個 TGW 路由表 (這決定了它的路由在哪裡顯示)。VPC 路由表僅需包含一個靜態的 0.0.0.0/0 → tgw-xxx 條目將流量導向 TGW;其餘部分由 TGW 路由表處理。

傳播不涵蓋 VPC 對等互連

ANS-C01 中常見的陷阱:VPC 對等互連連線不參與路由傳播。你必須手動在兩個 VPC 的路由表中新增靜態路由。對等 VPC 之間沒有 BGP,沒有路由交換,當一個 VPC 的 CIDR 變更時也不會自動調整。

情境描述一個中心 VPC 和三個與中心 VPC 對等的分支 VPC。中心 VPC 對 VGW 啟用了傳播。本地端透過 BGP 通報了 192.168.0.0/16。傳播將 192.168.0.0/16 → vgw-xxx 填入中心 VPC 路由表。考生假設分支 VPC 也能透過對等互連連線接收此路由。事實並非如此。 VPC 對等互連不傳播路由 —— 每個分支 VPC 必須顯式將 192.168.0.0/16 → pcx-xxx (對等互連連線 ID) 新增為靜態路由。更糟的是,對等互連不支持傳遞路由:從分支 VPC A 透過中心 VPC 到達本地端的封包會被丟棄,因為分支 A 到的路徑在 hub-to-VGW 這一跳不具備傳遞性。針對「分支必須到達本地端」的考試答案是 Transit Gateway,而非 VPC 對等互連。參考資料:https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html

靜態覆蓋傳播路由

你可以透過新增一條相同前綴長度且指向其他地方 (或黑洞) 的靜態路由來停用特定前綴的傳播。這是操作員的逃生口,用於當本地端通報了你不想接受的路由時 —— 例如,透過新增一條指向 NAT 閘道並贏得平局的靜態 0.0.0.0/0 路由,來封鎖錯誤的 0.0.0.0/0 BGP 通報。

用於中間盒與 Gateway Load Balancer 模式的入口路由

入口路由 (Ingress routing) 是 VPC 的一項功能,讓你將路由表與網際網路閘道 (IGW)虛擬私有閘道 (VGW) 關聯,而不是與子網路關聯。關聯的路由表控制入站流量在到達其目的地子網路之前的引導方式。這是實現南北向流量中間盒檢查的機制。

Gateway Load Balancer 夾心拓撲

規範性的 ANS-C01 入口路由模式是 Gateway Load Balancer 夾心拓撲。從網際網路到 ALB 的入站流量到達 IGW。如果沒有入口路由,IGW 會直接轉發到 ALB 子網路。有了入口路由,IGW 路由表會先將入站流量重定向到檢查子網路中的 Gateway Load Balancer 端點 (GWLBe),第三方防火牆集群在此進行檢查,然後再透過路由返回 ALB 子網路。從 ALB 到網際網路的回程流量會透過 GWLBe 路由回來 (透過 ALB 子網路的路由表),以便防火牆看到對稱的雙向流量。

配置入口路由

建立一個路由表,將其與 IGW (而非子網路) 關聯,並新增目的地為檢查層後方子網路 CIDR 範圍且目標為 vpce-xxxx (GWLB 端點) 的路由。發往這些 CIDR 的入站流量將被重定向經過 GWLB 端點。

為什麼不直接使用 NACL 或安全群組?

NACL 和安全群組可以過濾流量,但無法重定向流量。當流量必須經過執行深層封包檢查、解密 TLS 或應用行為分析的狀態檢查設備時,入口路由是必需的 —— 這些控制無法用簡單的允許/拒絕元組來表達。

狀態檢查設備 (Palo Alto, Fortinet, Check Point, AWS Network Firewall) 要求流程的雙向流量都經過同一個設備執行個體。僅配置入口路由是不夠的 —— 你還必須配置目的地子網路的路由表,以便到網際網路的回程流量流經同一個 GWLB 端點,且你必須仔細使用 GWLB 跨區域負載平衡,以免流程在入站時碰到設備 A 而在出站時碰到設備 B。針對「狀態防火牆丟棄了一半連線」的考試答案是路由不對稱 —— 透過跨區域 GWLB 或與子網路 AZ 對齊的區域性 GWLB 端點來修復。參考資料:https://docs.aws.amazon.com/vpc/latest/userguide/route-table-options.html

黑洞路由 — 顯式流量隔離

黑洞路由 (Blackhole route) 是一條其目標特意無效的路由,導致 AWS 靜默丟棄匹配的流量。在兩種情況下會使用黑洞路由。

TGW 黑洞路由

在 Transit Gateway 路由表中,你可以建立一條目標為 blackhole 的顯式靜態路由。這是在 TGW 分段之間執行隔離的規範模式 —— 例如,一個非生產 TGW 路由表傳播非生產 VPC 路由,但擁有一條針對生產 VPC CIDR 的靜態黑洞路由,這確保了即使路由傳播配置錯誤也無法允許非生產到生產的流量。

VPC 路由表黑洞 (隱含)

在 VPC 路由表中,如果一條路由的目標是對等連線或 VGW,而該目標隨後被刪除,則該路由會顯示為 blackhole,直到你將其移除或更新。這不是一種刻意的控制 —— 它是一項失效狀態警告,表示發往該前綴的流量正被靜默丟棄。考試有時會描述連線中斷,且路由表顯示黑洞條目;修復方法是將路由更新為當前的目標。

為什麼使用黑洞而不是直接移除路由?

如果你完全移除路由,最長前綴匹配會回退到較不精確的路由 (通常是預設路由 0.0.0.0/0)。特定前綴處的黑洞可以防止回退 —— 封包會被顯式丟棄,而不是被重新路由到非預期的目的地。這在 TGW 路由表中尤為重要,因為你希望顯式執行隔離,而不是依賴路由的缺失。

NAT 閘道路由模式

NAT 閘道為私有子網路中的執行個體提供離站網際網路存取,而不將其暴露於入站流量中。其路由模式是規範性的,在每場專家級考試中都會測試。

基礎 NAT GW 模式

公有子網路具有包含 local + 0.0.0.0/0 → IGW 的路由表。私有子網路具有包含 0.0.0.0/0 → NAT GW 的路由表。NAT 閘道本身位於公有子網路 (因此它擁有其自身流量的 IGW 路由)。私有子網路中向 8.8.8.8 發送流量的執行個體遵循 0.0.0.0/0 → NAT GW,NAT 閘道將來源轉換為其公有彈性 IP,並透過公有子網路路由表中的 0.0.0.0/0 → IGW 轉發。

為了高可用性 (HA) 與成本的按 AZ NAT GW 部署

每個 NAT 閘道都是受限於 AZ 的。如果該 AZ 故障,NAT 閘道也會故障。最佳實務:在每個 AZ 的獨立公有子網路中部署一個 NAT 閘道,並配置每個私有子網路的路由表指向其自身 AZ 的 NAT 閘道 (而非其他 AZ 的)。這避免了跨 AZ 資料傳輸費用並提供了 HA。考試明確青睞此模式 —— 「整個 VPC 使用單個 NAT 閘道」的答案是錯誤的。

NAT 閘道 vs NAT 執行個體

NAT 執行個體 (充當 NAT 的 EC2 執行個體) 在現代設計中已被棄用。它們在考試中僅作為干擾項出現 —— 「使用 NAT 執行個體進行成本最佳化」是錯誤的,因為 NAT 閘道在大規模下更便宜且是託管服務。

  • 本地路由:始終存在,永不可刪,在 VPC CIDR 內勝過任何更精確的路由。
  • 最長前綴匹配:最精確者勝出;在相同前綴長度下靜態勝過傳播。
  • 路由表限制:預設每表 50 條路由 (可提高至 1000);預設 200 條傳播路由;總計最多 1000 條。
  • 路由表關聯:每子網路 1 個路由表;主路由表為預設。
  • 傳播:VGW/TGW 的每路由表旗標;新表預設關閉。
  • VPC 對等互連路由:100% 手動,無傳播,非傳遞性。
  • 入口路由:與 IGW/VGW (而非子網路) 關聯的路由表,用於入站重定向。
  • 按 AZ NAT GW:每 AZ 一個以實現 HA 並避免跨 AZ 傳輸費。
  • 參考資料:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html

子網路架構模式 — 公有、私有與隔離

子網路架構是路由表設計的實際應用。ANS-C01 期望你能辨認出四種子網路模式以及定義各模式的路由表。

公有子網路 (Public subnet)

路由表:local + 0.0.0.0/0 → IGW。具備公有 IP 的執行個體可從網際網路存取 (受 SG/NACL 限制)。用於 ALB、NAT 閘道、防禦主機 (Bastion) 以及任何必須從網際網路直接存取的資源。

具備出口的私有子網路 (Private subnet)

路由表:local + 0.0.0.0/0 → NAT GW。執行個體沒有公有 IP,無法從網際網路存取,但可以透過 NAT 發起離站連線。用於應用程式伺服器、批次處理程序。

隔離子網路 (Isolated subnet — 完全無網際網路)

路由表:僅有 local,以及到 TGW/VGW 用於混合流量的選用路由。沒有 0.0.0.0/0。用於資料庫、受監管的工作負載。僅透過介面 VPC 端點存取 AWS 服務。

檢查子網路 (Inspection subnet)

路由表:local + 0.0.0.0/0 → IGW (供檢查設備本身獲取更新) 加上透過 TGW 或對等互連到分支 VPC CIDR 的特定路由。僅託管檢查設備 (Network Firewall, Palo Alto VM-Series, GWLB 端點)。

IPv6 考量

對於 IPv6,0.0.0.0/0 的等效項是 ::/0 → IGW (公有子網路) 和 ::/0 → 僅限出口 IGW (私有子網路,僅限出口 IGW 是 IPv6 特有的,阻斷入站但允許出站)。雙堆疊子網路需要 IPv4 和 IPv6 路由。

使用 TGW 的星狀多 VPC 路由

以 Transit Gateway 為中心的星狀拓撲 (Hub-and-spoke) 是 ANS-C01 的規範性多 VPC 架構。每個分支 (spoke) VPC 都有一個 TGW 連接;TGW 的路由表定義了哪些分支可以互通。

分支 VPC 路由表

分支 VPC 子網路的路由表具有 local + <其他分支 CIDR 或 0.0.0.0/0> → TGW。最簡單的模式是使用指向 TGW 的預設路由:每個非本地目的地都流向 TGW,由 TGW 決定去向。

TGW 路由表

TGW 通常具有多個路由表:每個安全網域 (prod, non-prod, shared services) 一個。每個分支精確地與一個 TGW 路由表關聯 (這決定了它的查閱表),並將其 CIDR 傳播到一個或多個 TGW 路由表 (這決定了其他分支對它的可見性)。

分支間隔離

標準模式是:生產分支關聯到 prod TGW RT,並傳播到 prod 和 shared-services RT非生產分支關聯到 non-prod RT,並傳播到 non-prod 和 shared-services。這產生了完整的生產到生產連線性、非生產到非生產連線性,生產與非生產互不通,且兩者都能存取共用服務。在每個分段表中針對相反分段 CIDR 的黑洞路由顯式地執行了隔離。

集中式出口 (Egress)

常見模式:所有分支將 0.0.0.0/0 路由到 TGW,TGW 路由表將 0.0.0.0/0 轉發到一個具有 NAT 閘道和 IGW 的共用出口 VPC。這將網際網路出口費用和 IP 位址集中到一個 VPC,簡化了出口過濾。

常見路由故障 — 診斷模式

幾乎所有的 ANS-C01「連線中斷」問題都歸結為三種故障模式。

路由缺失 — 最常見

症狀:發往對等 VPC、本地端或 TGW 分支的流量被靜默丟棄。診斷:檢查與來源子網路關聯的路由表中是否包含目的地的 CIDR。如果缺失,則新增。特別檢查 VPC 對等互連連線 —— 對等互連路由不會傳播,很容易在一側忘記。

路由不對稱 — 隱形殺手

症狀:TCP 連線起初成功但隨後中斷,或狀態檢查防火牆丟棄「第二個封包」。診斷:請求走跳轉 A,回應走跳轉 B,B 上的狀態防火牆看到一個沒有匹配 SYN-ACK 的 TCP 封包並將其丟棄。修復:檢查 VPC 的 TGW 設備模式、檢查設備的 GWLB 跨區域或區域對齊、混合場景下的對稱路由表設計。

MTU 黑洞 — 罕見但致命

症狀:小型的 ping 封包成功,但大型檔案傳輸失敗或卡住。診斷:路徑上的路由器丟棄大於其 MTU 的封包,但未向發送者傳回 ICMP「需要分段」訊息 (Path MTU Discovery 失敗)。發送者持續嘗試完整大小的封包。修復:必須端對端允許 ICMP type 3 code 4;或設定 TCP MSS 鉗位 (Clamping);或降低發送端 MTU。AWS VPC 內部支持 9001 位元組的巨量框架,但 Direct Connect、IGW、VPN 和 VPC 間流量通常預設為 1500。

情境描述「ping 正常,SSH 登入正常,但檔案傳輸停在 50%」。考生常會跳向安全群組、NACL 或 IDS 速率限制。實際的根源通常是 PMTUD 損壞導致的 MTU 不匹配:小型的 SSH 控制封包通過了,但資料傳輸的較大封包因路徑上過濾了 ICMP type 3 code 4 而被靜默丟棄。修復方法是允許「需要分段」的 ICMP 訊息、在客戶端閘道啟用 TCP MSS 鉗位,或將發送端的 MTU 降至 1500。考試專門測試這一點,因為它是真實且頻發的生產問題。參考資料:https://docs.aws.amazon.com/vpc/latest/userguide/network_mtu.html

常見陷阱複習 — VPC 路由在 ANS-C01

陷阱 1:VPC 對等互連傳播路由

錯誤。VPC 對等互連路由是 100% 手動的。沒有 BGP,沒有傳播,沒有傳遞路由。

陷阱 2:靜態和傳播路由具有相同的優先順序

錯誤。在相同前綴長度下,靜態勝過傳播。在不同前綴長度下,最長前綴匹配勝出,與來源無關。

陷阱 3:本地路由可以被覆蓋

錯誤。本地路由覆蓋 VPC CIDR,且不能被同一子網路路由表中的任何更精確路由覆蓋。

陷阱 4:整個 VPC 使用單個 NAT 閘道是最佳實務

錯誤。每 AZ 一個 NAT 閘道,且每個私有子網路路由到其自身 AZ 的 NAT 閘道,是 AWS 推薦的 HA 模式。

陷阱 5:移除路由與新增黑洞相同

錯誤。移除會回退到較不精確的路由 (通常是 0.0.0.0/0)。在特定前綴處設置黑洞可以防止回退。

陷阱 6:入口路由用於離站流量

錯誤。入口路由在 IGW 或 VGW 處於流量到達子網路之前重定向入站流量。離站路由是標準的子網路路由表。

陷阱 7:TGW 傳播會自動進入 VPC 路由表

部分錯誤。TGW 傳播填入的是 TGW 路由表,而非 VPC 路由表。VPC 路由表需要一條靜態的 0.0.0.0/0 → TGW (或特定 CIDR) 來將流量導向 TGW。

陷阱 8:VPC 對等互連支持透過中心 VPC 進行傳遞路由

錯誤。對等互連是非傳遞性的。Spoke A 與 Hub 對等且 Hub 與 Spoke B 對等,並不代表 Spoke A 能到達 Spoke B。多 VPC 傳遞連線性請使用 TGW。

FAQ — VPC 路由與路由決策

Q1:當靜態和傳播路由具有相同的前綴長度時,最長前綴匹配如何解析?

靜態路由勝出。最長前綴匹配是第一準則:選擇最精確 (最長) 的前綴。如果兩條路由前綴長度相同,AWS 套用靜態優先於傳播的仲裁規則,因此手動編寫的靜態路由始終覆蓋相同精確度的自動填入傳播路由。這是操作員的逃生口 —— 當 BGP 通報了你不想接受的內容時,你可以新增一條相同前綴的靜態路由來覆蓋它。但在不同長度下,最長前綴勝出:傳播的 /24 勝過靜態的 /16,因為 /24 更精確。請背熟此規則的這兩部分。

Q2:為什麼 VPC 對等互連不支持傳遞路由,我該用什麼代替?

VPC 對等互連僅是兩個 VPC 之間的第 3 層轉發關係。兩個對等體交換路由表中顯式列出的前綴流量,且不存在對等體代表另一個對等體將流量轉發到第三個 VPC 的機制。這是設計使然 —— AWS 防止傳遞對等互連以保持爆炸半徑微小且路由決策顯式。對於每個 VPC 都需要到達所有其他 VPC 的多 VPC 連線性,AWS Transit Gateway 是答案。TGW 原生支持傳遞路由:從 spoke A 到 TGW 再到 spoke B 是一個單一的傳遞跳轉。對於複雜的分段,使用多個 TGW 路由表來執行哪些分支可以互相存取。對於單向服務公開 (例如 SaaS 供應商向多個取用者 VPC 公開 API),AWS PrivateLink 是答案,它無需傳統路由即可工作,甚至可以處理重疊 CIDR。

Q3:如何透過 Network Firewall 或第三方檢查設備重定向 VPC 內部流量?

這比看起來要難,因為本地路由對於 VPC 的 CIDR 始終勝出。三種模式可行:(a) 子網路級分段:將需要檢查的子網路放在各自的 VPC 中,並使用帶有設備模式的 TGW 加上檢查 VPC,使子網路間流量跨越 TGW 從而可以被引導。(b) 每個子網路路由表中的 Gateway Load Balancer 端點:GWLBe 條目可以在本地 CIDR 內的特定前綴長度上覆蓋某些流量模式,但非全部。(c) 基於主機或邊車的檢查:不在網路級別重定向,而是在每個執行個體上執行檢查 (例如邊車代理) —— 這與 VPC 路由正交。ANS-C01 對於「檢查 VPC 內部流量」的規範答案是多 VPC + TGW 模式加上設備模式,而非單一 VPC 路由操作。

Q4:TGW 路由傳播何時會填入 VPC 的路由表?

它不會 —— TGW 語境下的傳播是在 TGW 連接與 TGW 路由表之間進行的,而不直接進入 VPC 路由表。流程是:分支 VPC 的 TGW 連接將其 CIDR 傳播到一個或多個 TGW 路由表。關聯到這些 TGW 路由表的其他連接可以查閱路由並轉發。然後每個分支 VPC 在其 VPC 路由表中具有一條靜態路由 (例如 0.0.0.0/0 → tgw-xxx),將流量導向 TGW。VPC 路由表本身不會從 TGW 傳播中自動填入 —— 僅從直接的 VGW 傳播中填入。這種分離是有意為之:它保持了 VPC 路由決策的顯式性,並防止路由表無限制增長。

Q5:為什麼我透過 TGW 的 Site-to-Site VPN 對一個 CIDR 有效而對另一個無效?

最可能的誘因:BGP 正在從本地端通報兩個 CIDR,但 VPN 的 TGW 連接僅將部分路由傳播到了目的地分支的 TGW 路由表。檢查與目的地分支關聯的 TGW 路由表 —— 它是否包含缺失 CIDR 的傳播路由?如果沒有,要麼是 VPN 連接沒有傳播到該路由表,要麼是 BGP 過濾了該通報。第二種可能性:目的地分支處的 VPC 路由表沒有指向 TGW 的該 CIDR 路由。第三種可能性:本地客戶端閘道在通報該 CIDR 時使用了比預期更長的 AS-PATH 或更高的 MED,導致 AWS 選擇了不同的路徑。使用 TGW Route Analyzer 或 VPC Reachability Analyzer 來追蹤路徑。

Q6:如何為許多分支 VPC 的離站網際網路存取設定集中式出口 VPC?

模式:在網路帳號中建立一個共用出口 VPC,並與所有分支連接到同一個 TGW。出口 VPC 具有包含 IGW + NAT GW 的公有子網路,以及位於私有子網路的 TGW 連接。TGW 路由表:每個分支都有一條 0.0.0.0/0 → 出口-VPC-連接。出口 VPC 的 TGW 連接路由表具有接收來自分支 CIDR 的傳播以處理回程流量。出口 VPC 的公有子網路具有用於出口的 IGW;私有子網路具有供分支流量通過進行 NAT 的 NAT 閘道。分支節省了 NAT 閘道成本 (整個出口 VPC 每 AZ 一個 NAT GW,而非每分支 N 個),集中了出口過濾 (出口 VPC 中的 Network Firewall),並合併了外部服務允許清單所需的彈性 IP。

Q7:TGW 路由表中的黑洞路由與缺失路由有什麼區別?

黑洞是顯式的丟棄指令;缺失路由則會透過最長前綴匹配回退到較不精確的路由,通常止於預設路由。功能上:TGW RT 包含 10.5.0.0/16 → blackhole 加預設路由 0.0.0.0/0 → spoke-A。目標為 10.5.0.42 的封包撞上黑洞並被丟棄。如果沒有黑洞,封包會回退到預設路由並到達 spoke A —— 這可能是一個非預期的目的地。使用黑洞來執行顯式的分段:「非生產絕不能到達生產」是在非生產 TGW 路由表中設置生產 CIDR 的黑洞。考試在安全性敏感場景下青睞黑洞答案,因為「回退到預設路由」會構成安全違規。

Q8:TGW 路由表中的傳播、關聯與靜態路由如何交互?

關聯 (Association) 決定了連接用於出站查閱的 TGW 路由表。每個連接精確地與一個 TGW RT 關聯。傳播 (Propagation) 決定了連接的路由被通報到哪些 TGW 路由表中。一個連接可以傳播到多個 RT。靜態路由 (Static routes) 被手動新增到特定的 TGW RT,並在相同前綴長度下勝過傳播路由。案例實作:生產 VPC 連接與生產 TGW RT 關聯 (因此其出站流量查閱生產 RT),並將其 CIDR 傳播到生產 RT 和共用服務 RT (因此生產和共用服務連接都能找到它)。生產 RT 中指向本地 VPN 連接的 192.168.0.0/16 → vpn-xxx 靜態路由會覆蓋來自相同前綴的任何傳播 /16。

Q9:路由表中存在失效的黑洞條目會有什麼營運影響?

在 VPC 路由表中,顯示為 blackhole 的路由通常意味著目標 (對等連線、VGW、NAT GW) 已被刪除但路由未被移除。發往該前綴的流量會被靜默丟棄。維運上:調查目標為何被刪除 —— 對等互連是故意拆除的嗎? —— 然後要麼移除失效路由 (使流量回退到預設路由),要麼將路由更新為當前目標。在 TGW 路由表中,黑洞顯示為刻意的靜態條目;刪除是操作員的刻意行為。使用 VPC Reachability Analyzer 和 AWS Config 規則來偵測失效黑洞;利用 EventBridge 針對 DeleteVpcPeeringConnection 事件發出警示,以觸發路由表清理自動化。

Q10:如何排除「路由看起來正確但流量仍失敗」的情境?

套用診斷階梯。第 1 層:VPC Reachability Analyzer —— 提供來源 ENI、目的地 IP,獲取帶有每跳註釋的路徑。如果 Reachability Analyzer 顯示路徑良好,則流量理應通過;否則它會指出失敗的步驟 (安全群組、NACL、路由表)。第 2 層:來源 ENI 處的 VPC Flow Logs —— 篩選目的地 IP;ACCEPT 表示 SG 允許;REJECT 表示 SG 或 NACL 丟棄;缺席表示來源根本沒嘗試發送 (通常是路由或 DNS 問題)。第 3 層:針對跨 VPC 路徑使用 TGW Route Analyzer —— 確認各 TGW 路由表在目的地上一致。第 4 層:封包擷取 (流量鏡像或執行個體級 tcpdump) —— 用於診斷路由不對稱或 MTU 黑洞。ANS-C01 排錯題的答案模式是「先 Reachability Analyzer,其次 Flow Logs,最後封包擷取」 —— 從最便宜、最有針對性的工具開始。

延伸閱讀

VPC 路由是基礎;ANS-C01 上下一個需要掌握的層級是:用於多 VPC 與 SD-WAN 整合模式的 Transit Gateway 路由表、連接與 Connect;用於混合故障轉移的 BGP 屬性操作;用於無需傳統路由即可暴露服務的 PrivateLink 與 VPC 端點;以及以宣告方式編寫上述所有內容的 CloudFormation/CDK/Terraform IaC 模式

官方資料來源

更多 ANS-C01 主題