建立路徑

您可以透過配置路徑來控制 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 服務建立路由。

在主控台中建立路由

若要在主控台中建立路由,請遵循下列步驟:

  1. 請務必檢閱 限制和準則

  2. IBM Cloud 控制台中,選擇導航選單圖標,然後按一下基礎設施VPC 圖標 > 網路 > 路由表。 即會出現 VPC 的遞送表頁面。

  3. 選擇與您要查看的路由表關聯的 VPC。 然後,按一下遞送表的名稱以顯示其詳細資料。

  4. 捲動至「路徑」區段,然後按一下 建立

  5. 在「建立遞送端」畫面中,輸入下列資訊:

    • 區域- 為您的路由選擇一個可用區域。

    • 名稱- 輸入新路線的名稱。

    • 目的地 CIDR-路徑的目的地 CIDR (例如,10.0.0.0/16)。

    • 優先順序-輸入從 04 的優先順序。 預設值為 2。 如需相關資訊,請參閱 判斷路由喜好設定

    • 動作 — 針對符合該路由的封包所執行的動作。 值如下:

      • 委派-使用系統遞送表來遞送封包。
      • 委派-VPC-委派至系統的內建路徑,忽略網際網路連結路徑。 如果 VPC 使用 non-RFC-1918 位址且具有公用連線功能,則此為必要項目。 如需詳細資料,請參閱 IANA 登錄 IP 指派的遞送考量
      • 遞送-將封包遞送至下一個中繼站目標。 您可以新增具有相同位址字首的多個路徑。 虛擬路由器會使用不同的下一個中繼站 IP 位址來執行同等成本的多路徑遞送 (ECMP)。
      • 捨棄-捨棄封包。

    資料流量補救子網路會使用與子網路相關聯的自訂遞送表。 如果在自訂遞送表中找不到相符路徑,則會使用 VPC 系統遞送表繼續遞送。 您可以利用 捨棄動作,以自訂遞送表預設路徑來避免此行為。

    • 類型-選取 IP 位址VPN 連線

    • 下一個中繼站 (IP 位址)-輸入下一個中繼站。

      您可以修改現有路徑的下一個中繼站 IP 位址。

    • 通告-向入口來源通告。 目前支援 Direct Link 及 Transit Gateway。 選用。

  6. 點擊「儲存」以儲存新路線。 路線會出現在「遞送表詳細資料」頁面上。

透過命令列介面 (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 來建立目的地路徑,請遵循下列步驟:

  1. 設定 API 環境

  2. 儲存下列變數的值,以在 API 指令中使用:

    export VpcId=<your_vpc_id>
    export RoutingTableId=<your_routing_table_id>
    
  3. 透過指定 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 建立路徑,請遵循下列步驟:

  1. 設定您的 Terraform 環境。

  2. 建立路徑:

    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 註冊表