

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 子網路由表
<a name="subnet-route-tables"></a>

您的 VPC 具有隱含路由器，並且您可以使用路由表，來控制網路流量的方向。您 VPC 中的每個子網都必須與路由表相關聯，此路由表會控制子網的路由 (子網路由表)。您可以明確地將子網與特定路由表建立關聯。否則，子網會隱含地與主路由表相關聯。子網只能一次與一個路由表建立關聯，但您可以將多個子網與相同的子網路由表建立關聯。

**Topics**
+ [路由](#route-table-routes)
+ [主路由表](#main-route-table)
+ [自訂路由表](#custom-route-tables)
+ [子網路由表關聯](#route-table-assocation)

## 路由
<a name="route-table-routes"></a>

路由表中的每個路由都會指定一個目的地和一個目標。例如，若要讓子網能夠透過網際網路閘道存取網際網路，請將下列路由新增至子網路由表。路由的目的地是 `0.0.0.0/0`，它代表所有的 IPv4 地址。目標是連接到 VPC 的網際網路閘道。


| 目標 | 目標 | 
| --- | --- | 
| 0.0.0.0/0 | igw-id | 

IPv4 和 IPv6 的 CIDR 區塊會分開處理。例如，目的地 CIDR 為 `0.0.0.0/0` 的路由不會自動包含所有 IPv6 地址。您必須為所有 IPv6 地址建立目的地 CIDR 為 `::/0` 的路由。

如果您經常在 AWS 資源中參考相同的一組 CIDR 區塊，您可以建立[客戶受管字首清單](managed-prefix-lists.md)，將它們分組在一起。然後，您可以將字首清單指定為路由表項目中的目的地。

每個路由表都包含一個用於在 VPC 內進行通訊的本機路由。此路由預設為新增至所有路由表。若您的 VPC 有超過一個 IPv4 CIDR 區塊，您的路由表便會包含每個 IPv4 CIDR 區塊的本機路由。若您將 IPv6 CIDR 區塊與您的 VPC 建立關聯，您的路由表便會包含 IPv6 CIDR 區塊的本機路由。您可以視需要[取代或還原](replace-local-route-target.md)每個本機路由的目標。<a name="route-table-rule-considerations"></a>

**規則和考量**
+ 您可以新增路由至比本機路由更具體的路由表。目的地必須符合 VPC 中子網的整個 IPv4 或 IPv6 CIDR 區塊。目標必須是 NAT 閘道、網路介面或閘道負載平衡器端點。
+ 如果您的路由表具有多個路由，我們會使用最具體且符合流量的路由 (最長的字首相符)，從而判斷如何路由流量。
+ 無法將路由新增至完全相符的 IPv4 地址或以下範圍的子集：169.254.168.0/22。此範圍位於連結本機地址空間內，並保留供 AWS 服務使用。例如，Amazon EC2 將此範圍內的地址用於只能透過 EC2 執行個體存取的服務，如執行個體中繼資料服務 (IMDS) 和 Amazon DNS 伺服器。您可以使用大於但與 169.254.168.0/22 重疊的 CIDR 區塊，但不會轉傳至指定於 169.254.168.0/22 中地址的封包。
+ 無法將路由新增至完全相符的 IPv6 地址或以下範圍的子集：fd00:ec2::/32。此範圍位於唯一的本機地址 (ULA) 空間內，並保留供 AWS 服務使用。例如，Amazon EC2 將此範圍內的地址用於只能透過 EC2 執行個體存取的服務，如執行個體中繼資料服務 (IMDS) 和 Amazon DNS 伺服器。您可以使用大於但與 fd00:ec2::/32 重疊的 CIDR 區塊，但不會轉傳至指定於 fd00:ec2::/32 中地址的封包。
+ 您可以將中間設備新增至 VPC 的路由路徑。如需詳細資訊，請參閱[中間設備的路由](route-table-options.md#route-tables-appliance-routing)。

**範例**  
在下列範例中，假設 VPC 具有 IPv4 CIDR 區塊以及 IPv6 CIDR 區塊。IPv4 和 IPv6 流量會分開處理，如下列路由表所示。


| 目標 | 目標 | 
| --- | --- | 
| 10.0.0.0/16 | Local | 
| 2001:db8:1234:1a00::/56 | Local | 
| 172.31.0.0/16 | pcx-11223344556677889 | 
| 0.0.0.0/0 | igw-12345678901234567 | 
| ::/0 | eigw-aabbccddee1122334 | 
+ Local 路由涵蓋要在 VPC (10.0.0.0/16) 內路由的 IPv4 流量。
+ Local 路由涵蓋要在 VPC (2001:db8:1234:1a00::/56) 內路由的 IPv6 流量。
+ 172.31.0.0/16 的路由會將流量傳送至對等連線。
+ 所有 IPv4 流量 (0.0.0.0/0) 的路由會將流量傳送至網際網路閘道。因此，除了 VPC 內和傳送到對等連線的流量，所有 IPv4 流量都會路由至網際網路閘道。
+ 所有 IPv6 流量 (::/0) 的路由會將流量傳送至輸出限定網際網路閘道。因此，除了 VPC 內的流量，所有 IPv6 流量都會路由至輸出限定網際網路閘道。

## 主路由表
<a name="main-route-table"></a>

當您建立 VPC 時，便會自動隨附一個主路由表。當子網未擁有與之關聯的明確路由表，則會根據預設使用主路由表。在 Amazon VPC 主控台中的 **Route Tables** (路由表) 頁面上，您可以透過尋找 **Main** (主要) 資料行中的 **Yes** (是)，檢視 VPC 的主路由表。

依預設，當您建立非預設 VPC 時，主路由表僅包含本機路由。如果您 [建立 VPC](create-vpc.md) 並選擇 NAT 閘道，Amazon VPC 會自動將路由新增至閘道的主路由表。

下列規則會套用至主路由表：
+ 您可以新增、移除和修改主路由表中的路由。
+ 但無法刪除主路由表。
+ 您無法將閘道路由表設定為主路由表。
+ 您可以透過將自訂路由表與子網路建立關聯來取代主路由表。
+ 您可以明確將子網與主路由表建立關聯，即使其已經隱含地建立關聯。

  如果您變更哪個路由表是主路由表，則可能想這樣做。當您變更哪個路由表是主路由表時，它也會變更其他新的子網，或是任何尚未與其他路由表明確建立關聯之子網的預設值。如需詳細資訊，請參閱 [取代主路由表](Route_Replacing_Main_Table.md)。

## 自訂路由表
<a name="custom-route-tables"></a>

依預設，每個路由表都包含一個用於在 VPC 內進行通訊的本機路由。如果您 [建立 VPC](create-vpc.md) 並選擇公有子網，Amazon VPC 會建立自訂路由表，並將路由新增至網際網路閘道。保護 VPC 的一種方法是將主路由表保留在原始的預設狀態。然後，明確地將您建立的每個新子網與您已建立的其中一個自訂路由表建立關聯。這可確保您明確控制每個子網路由流量的方式。

您可以新增、移除和修改自訂路由表中的路由。僅當自訂路由表格沒有關聯時，才可以刪除它。

## 子網路由表關聯
<a name="route-table-assocation"></a>

VPC 中的每個子網都必須與路由表建立關聯。子網可以明確地與自訂路由表相關聯，或者隱含或明確地與主路由表相關聯。如需檢視子網和路由表關聯的詳細資訊，請參閱[確定明確的關聯關係](WorkWithRouteTables.md#Route_Which_Associations)。

位於與 Outposts 相關聯之 VPC 中的子網可有額外目標類型的本機閘道。這是與非 Outposts 子網的唯一路由差異。

**範例 1：隱含和明確的子網關聯**  
下表顯示具有網際網路閘道、虛擬私有閘道、公有子網路和僅 VPN 子網路的 VPC 路由。

![\[與主路由表相關聯的私有子網路與具有自訂路由表的公有子網路圖表\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/subnet-association.png)


路由表 A 是自訂路由表，明確地與公有子網路關聯。該路由表具有將所有流量傳送至網際網路閘道的路由，這就能讓子網路成為公有子網路。


| 目標 | Target | 
| --- | --- | 
| VPC CIDR | 區域 | 
| 0.0.0.0/0 | igw-id | 

路由表 B 是主路由表，隱含地與私有子網路相關聯。該路表具有將所有流量傳送至虛擬私有閘道的路由，但不具有將所有流量傳送至網際網路閘道的路由，這就能讓子網路成為僅 VPN 子網路。如果您在此 VPC 中建立另一個子網路，但未建立與自訂路由表的關聯，則子網路也會隱含地與此路由表相關聯，因為此表是主路由表。


| 目標 | Target | 
| --- | --- | 
| VPC CIDR | 區域 | 
| 0.0.0.0/0 | vgw-id | 

**範例 2：取代主路由表**  
您可能想要對主路由表進行變更。若要避免任何流量中斷，建議您先使用自訂路由表來測試這些路由變更。在您滿意測試之後，便可以使用新的自訂表取代主路由表。

下圖顯示兩個子網路和兩個路由表。子網路 A 隱含地與路由表 A (主路由表) 相關聯。子網路 B 隱含地與路由表 A 相關聯。路由表 B (自訂路由表格) 並未與任何一個子網路相關聯。

![\[與路由表 A (主路由表) 都具有隱含關聯的兩個子網路。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/replace-route-table-initial.png)


若要取代主路由表，請先在子網路 B 和路由表 B 之間建立明確關聯。然後測試路由表 B。

![\[子網路 B 現在明確地與路由表 B (自訂路由表) 相關聯。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/replace-route-table-step1.png)


在測試路由表 B 之後，您可以將之設為主路由表。子網路 B 仍與路由表 B 具有明確關聯。但是，子網路 A 現在與路由表 B 具有隱含關聯，因為路由表 B 為新的主路由表。路由表 A 不再與任何一個子網路相關聯。

![\[與主路由表 B 相關聯的子網路 A 及與路由表 B 相關聯的子網路 B 圖表\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/replace-route-table-step2.png)


(選用) 若您取消子網路 B 與路由表 B 的關聯，子網路 B 和路由表 B 之間仍然具有隱含關聯。若不再需要路由表 A，您可以將其刪除。

![\[這兩個子網路都隱含地與路由表 B 相關聯。\]](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/replace-route-table-step3.png)
