建立路徑
您可以透過配置路徑來控制 VPC 中網路資料流量的流程。 根據封包的目的地位址,使用 VPC 路徑來指定封包的下一個中繼站。
VPC 中每一個區域可以有多個遞送表。 對於輸出資料流量,當封包離開子網路時,系統會根據子網路區域中的遞送表來評估其目的地,以決定下一個傳送封包的位置。 每個 VPC 都有一個附加到每個子網路的預設路由表,除非使用者明確地將子網路附加到不同的子網路。
VPC 自訂路徑有四個主要元件:
-
目的 CIDR:指定此路由所適用的目的 IP 位址範圍。
-
下一個跳點:當路由動作為「
Deliver」時,指定將匹配的流量轉發至該 IP 位址。您可以編輯現有路徑的下一個中繼站 IP 位址。
-
區域:指定評估該路由的區域。 就出口路徑而言,該區域通常指的是來源流量所源自的區域。 對於入站路徑而言,該區域指的是處理入站流量且下一跳必須位於其中的區域。
-
動作:指定如何處理符合條件的流量,例如轉發、委派或丟棄該流量。
任何源自 VPC 的指定區域,且在指定目的地 CIDR 內具有目的地位址的資料流量都會遞送至下一個中繼站。 如果目的地位址在多個 VPC 路徑的目的地 CIDR 內,則會使用最明確的路徑。 如果 VPC 具有兩個或兩個以上相等特定路徑,則資料流量是在每一個路徑之間分配的循環式資料流量。
每一個路徑都有一個目的地內容,其中包含字首長度 ( 10.2.0.0/24 中的 /24 )。 每個自訂遞送表支援的唯一字首長度數目為 14。 多個具有相同前綴的路由僅被視為一個唯一前綴。
VPC 位址前綴不再僅限於 RFC-1918 位址。 您現在必須使用包含新 Delegate-VPC 操作的自訂路由,來設定同時使用 non-RFC-1918 位址且具備公共連線能力(浮動IP位址或公共閘道)的VPC。 您必須為符合 non-RFC-1918 規範且位於VPC外部的目的地CIDR指定此操作,例如可透過 Direct Link、Transit Gateway 或經典VPC存取的目標。 如需何時使用 Delegate-VPC 動作的相關資訊,請參閱 IANA 登錄 IP 指派的遞送考量。
如果兩者都是 true,則需要 Delegate-VPC 動作:
- VPC 使用 non-RFC-1918 位址
- VPC 具有公用連線功能
在下列情況下,不需要 Delegate-VPC 動作:
- VPC 僅使用 RFC-1918 位址
- VPC 沒有公用連線功能
在建立自訂路由之前,請先閱讀 《 關於路由表與路由 》,以了解入站與出站路由的運作方式。
您可以使用主控台、CLI、API 或 Terraform 為 IBM Cloud 服務建立路由。
在主控台中建立路由
若要在主控台中建立路由,請遵循下列步驟:
-
請務必檢閱 限制和準則。
-
從 IBM Cloud 控制台中,選擇導航
,然後按一下基礎設施
> 網路 > 路由表。 即會出現 VPC 的遞送表頁面。
-
選擇與您要查看的路由表關聯的 VPC。 然後,按一下遞送表的名稱以顯示其詳細資料。
-
捲動至「路徑」區段,然後按一下 建立。
-
在「建立遞送端」畫面中,輸入下列資訊:
-
區域- 為您的路由選擇一個可用區域。
-
名稱- 輸入新路線的名稱。
-
目的地 CIDR-路徑的目的地 CIDR (例如,
10.0.0.0/16)。 -
優先順序-輸入從
0到4的優先順序。 預設值為2。 如需相關資訊,請參閱 判斷路由喜好設定。 -
動作 — 針對符合該路由的封包所執行的動作。 值如下:
- 委派-使用系統遞送表來遞送封包。
- 委派-VPC-委派至系統的內建路徑,忽略網際網路連結路徑。 如果 VPC 使用 non-RFC-1918 位址且具有公用連線功能,則此為必要項目。 如需詳細資料,請參閱 IANA 登錄 IP 指派的遞送考量。
- 遞送-將封包遞送至下一個中繼站目標。 您可以新增具有相同位址字首的多個路徑。 虛擬路由器會使用不同的下一個中繼站 IP 位址來執行同等成本的多路徑遞送 (ECMP)。
- 捨棄-捨棄封包。
資料流量補救子網路會使用與子網路相關聯的自訂遞送表。 如果在自訂遞送表中找不到相符路徑,則會使用 VPC 系統遞送表繼續遞送。 您可以利用 捨棄動作,以自訂遞送表預設路徑來避免此行為。
-
類型-選取 IP 位址 或 VPN 連線。
-
下一個中繼站 (IP 位址)-輸入下一個中繼站。
您可以修改現有路徑的下一個中繼站 IP 位址。
-
通告-向入口來源通告。 目前支援 Direct Link 及 Transit Gateway。 選用。
-
-
點擊「儲存」以儲存新路線。 路線會出現在「遞送表詳細資料」頁面上。
透過命令列介面 (CLI) 建立路由
開始之前,請 設定 CLI 環境。
若要從 CLI 建立 VPC 路徑,請執行下列指令:
ibmcloud is vpc-routing-table-route-create VPC ROUTING_TABLE --zone ZONE_NAME --destination DESTINATION_CIDR [--action delegate_vpc | delegate | deliver | drop] [--priority PRIORITY] [--next-hop NEXT_HOP [--vpngw VPNGW]][--advertise true | false] [--name NAME] [--output JSON] [-q, --quiet]
其中:
VPC- VPC 的 ID 或名稱。
ROUTING_TABLE- VPC 路由表的 ID 或名稱。
--zone- 該區域的名稱。
--destination- 路由的目的地 CIDR。 在表格中,每個區域至多有兩條路由可具有相同的目的地,且僅當這兩條路由的動作皆為「
deliver」時才成立。 --action- 針對與路由相符的封包執行的動作。 之一:
delegate_vpc,delegate,deliver,drop。Default:deliver --priority- 路由的優先順序。 之一:
0,1,2,3,4。預設:2。 值越低,優先順序越高。 如果自訂路由表包含目的地相同的路由,則會選擇優先順序最高(值最低)的路由。 --next-hop- 若動作為「
deliver」,請輸入要將封包路由至的下一個跳點之 IP 位址或 VPN 連線 ID。 --vpngw- VPN 閘道的名稱。
--advertise- 通告至直接鏈結、Transit Gateway 或兩者入口來源。
true之一,false。 --name- VPC 路由表的名稱。
--output- 輸出格式。 下列其中一項:
json。 --q, quiet- 禁止冗長輸出。
CLI 範例
-
透過指定區域名稱、目的地 CIDR 以及作為 IP 位址的下一跳來建立路由:
ibmcloud is vpc-routing-table-route-create r134-b754e387-8b06-43be-a5ea-909595a50676 r134-6cfaceb8-99d6-4743-bee8-ebbcbba6a563 --zone us-south-1 --destination 10.2.2.0/24 --action deliver --priority 1 --next-hop 10.0.0.2 --name my-vpc-route -
透過指定區域名稱、目的地 CIDR 以及將 VPN 連線 ID 設為下一跳,來建立路由:
ibmcloud is vpc-routing-table-route-create r134-b754e387-8b06-43be-a5ea-909595a50676 r134-6cfaceb8-99d6-4743-bee8-ebbcbba6a563 --zone us-south-1 --destination 10.2.2.0/24 --action deliver --priority 1 --next-hop 02h7-1cf20e69-e2ce-400b-b070-0897521e2eb6 --name my-vpc-route
使用 API 建立路線
若要使用 API 來建立目的地路徑,請遵循下列步驟:
-
設定 API 環境。
-
儲存下列變數的值,以在 API 指令中使用:
export VpcId=<your_vpc_id> export RoutingTableId=<your_routing_table_id> -
透過指定
next_hop作為 IP 位址或 VPN 連線 ID 來建立路由:curl -X POST "$vpc_api_endpoint/v1/vpcs/$VpcId/routing_tables/$RoutingTableId/routes?version=$api_version&generation=2" \ -H "Authorization: Bearer $iam_token" \ -d '{ "name": "my-new-route", "zone": {"name": "us-south-2"}, "action": "deliver", "destination": "10.10.10.0/24", "next_hop": {"address": "10.0.0.3"} }'curl -X POST "$vpc_api_endpoint/v1/vpcs/$VpcId/routing_tables/$RoutingTableId/routes?version=$api_version&generation=2" \ -H "Authorization: Bearer $iam_token" \ -d '{ "name": "my-new-route", "zone": {"name": "us-south-2"}, "action": "deliver", "destination": "10.10.10.0/24", "next_hop": {"id": "02h7-1cf20e69-e2ce-400b-b070-0897521e2eb6"} }'
如需更多資訊與可選參數,請參閱《VPC API 參考文件》中的「在 VPC 路由表中建立路由」章節。
使用 Terraform 建立路徑
若要使用 Terraform 建立路徑,請遵循下列步驟:
-
設定您的 Terraform 環境。
-
建立路徑:
resource "ibm_is_vpc_routing_table_route" "example" { vpc = ibm_is_vpc.example.id routing_table = ibm_is_vpc_routing_table.example.routing_table zone = "us-south-1" name = "custom-route-2" destination = "192.168.4.0/24" action = "deliver" next_hop = ibm_is_vpn_gateway_connection.example.gateway_connection // Example value "10.0.0.4" }
有關此 ibm_is_vpc_routing_table_route 資源的更多資訊,請參閱 Terraform 註冊表。