建立路由表

建立路由表以定義規則,將網路流量沿最佳路徑轉送至目的地。 例如,路由表提供將資料封包傳送到網路路由上的下一跳的資訊。

開始之前

在建立路由表之前,請確定您至少有一個 VPC,並檢閱和遵守路由表的 限制和指引

您可以使用主控台、CLI、API 或 Terraform 為 IBM Cloud 服務建立路由表。

在主控台中建立路由表

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

  1. IBM Cloud 主控台,選擇導覽功能表 功能表圖示,然後按一下基礎結構 VPC 圖示 > 網路 > 路由表。 出現「VPC 的路由表」頁面。

  2. 按一下頁面右上方的「建立」。

  3. 在「用于 VPC 配置的路由表」页面中,完成以下信息:

    • 請為您的路由表輸入一個唯一的名稱。

    • 選擇要與路由表關聯的虛擬私有雲。

    • 標籤- (可選)新增標籤,有助於您整理和查找資源。 您之後可以新增其他標籤。 如需相關資訊,請參閱使用標籤

    • 存取管理標籤- (選用) 將存取管理標籤新增至資源,以協助組織存取控制關係。 存取管理標籤唯一支援的格式是 key:value。 如需詳細資訊,請參閱 使用標籤控制資源存取

    • 虛擬私有雲- 請選擇您的 VPC。

    • 在 Traffic(交通)部分,您可以選擇這些選用功能:

      • Accepts routes from (選用)- 選擇哪些資源可以在路由表中建立路由。 您可以為 VPN 伺服器VPN 閘道或兩者選擇交換器。

        對於基於政策的 VPN 閘道,路由不會自動被偵測到。 路由表必須設定為接受來自 VPN 閘道的路由,且傳播的路由僅限於 VPN 政策中定義的 CIDR 前綴。 基於路由的VPN閘道器透過BGP動態發佈已學習到的路由。 有關為基於政策的 VPN 定義 CIDR 前綴的詳細資訊,請參閱 《將連線新增至 VPN 閘道》

        VPN伺服器路由源自客戶端位址池及任何已設定的客戶端路由,當路由表設定為接受來自VPN伺服器的路由時,這些路由便會被傳播。

      • 流量來源 (選用)- 選取要使用此路由表將其流量路由至 VPC 的流量來源。

        • Direct Link- 允許來自 IBM Cloud Direct Link 專用連線或 Connect 連線進入本地端位置。 可選地,您可以將不在 VPC 位址前綴範圍內的路由廣告到直接連結。
        • 中繼閘道 — 允許來自 IBM Cloud Transit Gateway 進入另一個 VPC 或傳統基礎架構。 您可以選擇將不在 VPC 位址前綴範圍內的路由廣告到中轉閘道。
        • VPC 區域 — 允許傳入流量前往同一 VPC 中的另一個可用區域。
        • 公共網際網路- 允許目的地為浮動 IP 的公共網際網路入站流量,被路由至 VPC 的下一跳 IP。
  4. 按一下「建立路由表」。

從 CLI 建立路由表

開始之前,請先 設定 CLI 環境

若要從 CLI 建立路由表,請執行下列指令:

ibmcloud is vpc-routing-table-create VPC [--name NAME] [--direct-link-ingress false | true] [--internet-ingress, --internet false | true] [--transit-gateway-ingress false | true] [--vpc-zone-ingress false | true] [--accept-routes-from-resource-type-filters, --ar-rtf vpn_server | vpn_gateway] [--advertise-routes-to direct_link | transit_gateway | direct_link, transit_gateway] [--output JSON] [-q, --quiet]

其中:

VPC
此為 VPC 的 ID 或名稱。
--name
這是 VPC 路由表的名稱。
--direct-link-ingress, --direct-link
選用。 若設定為 true,此路由表將用於將源自 IBM Cloud Direct Link 的流量路由至此 VPC。 要使路由設定成功,該 VPC 不得已存在一個將此屬性設定為「true」的路由表。 之一:false, true
--internet-ingress, --internet
指出是否使用此路由表來遞送源自網際網路的資料流量。 若將設定更新為 true ,系統將選取此路由表,前提是 VPC 中的其他路由表尚未將此屬性設定為 true``。 升級至 false 後,此路由表將被取消選取。 之一:false, true
--transit-gateway-ingress, --transit-gateway
若設定為 true,則此路由表將用於將源自 Transit Gateway 的流量路由至此 VPC。 要使路由設定成功,該 VPC 不得已存在一個將此屬性設定為「true」的路由表。 之一:false, true
--vpc-zone-ingress, --vpc-zone
選用。 若設定為「true」,則此路由表將用於路由源自公共網際網路的流量。 為了讓路由設定成功,該 VPC 不得已存在任何將此屬性設定為「true」的路由表。 之一:false, true
--accept-routes-from-resource-type-filters, --ar-rtf
以逗號分隔的資源類型篩選條件,可用於在此路由表中建立路由。 之一:vpn_server, vpn_gatewa
--advertise_routes_to TARGETS
選用。 是以逗號分隔的路由表中路由的廣告目標清單。 目前,direct_linktransit_gateway 是允許值。direct_link 要求 direct-link-ingress 設為 truetransit_gateway 要求 transit—gateway-ingress 設為 trueadvertise 選項設定為 true 的路由表中的所有路由,都會廣告給「advertise_routes_to」指定的入口來源。
--output
是輸出格式。 之一:JSON.
-q, --quiet
禁止冗長輸出。

除非下一跳是與路由區域中子網路的網路介面綁定的 IP 位址,否則動作為 deliver 的路由會被視為 drop。 因此,如果傳入的封包與下一跳為網際網路 IP 位址或 VPN 閘道連線的路由相匹配,封包就會被丟棄。

您可以在每個 VPC 的一個路由表上設定 true 的入口選項,而且只有在該路由表沒有連接至任何子網路時才可以設定。

CLI 範例

ibmcloud is vpc-routing-table-create 72b27b5c-f4b0-48bb-b954-5becc7c1dcb3 --name my-vpc-routing-table -—advertise-routes-to direct_link --direct-link-ingress true -—output JSON
ibmcloud is vpc-routing-table-create my-vpc --name my-vpc-routing-table --advertise-routes-to transit_gateway —-transit-gateway-ingress true --output JSON
ibmcloud is vpc-routing-table-create my-vpc --name my-vpc-routing-table --advertise-routes-to direct_link, transit_gateway  --direct-link-ingress true —transit-gateway-ingress true -—output JSON
ibmcloud is vpc-routing-table-create 979b4bc6-f018-40a2-92f5-0b1cf777b55d --name test-vpc-cli-routing-tb1 --direct-link-ingress false --internet-ingress false   --transit-gateway-ingress false  --vpc-zone-ingress true

使用 API 建立路由表

若要透過 API 建立路由表,請依照以下步驟操作:

  1. 設定您的 API 環境

  2. VpcId 的值儲存至變數中,以便在 API 指令中使用:

    export VpcId=<your_vpc_id>
    
  3. 建立路由表。

    出站路由表:

    curl -X POST \
    "$vpc_api_endpoint/v1/vpcs/$VpcId/routing_tables?version=$api_version&generation=2" \
    -H "Authorization: ${iam_token}" \
    -d '{
          "name": "test-routing-table"
        }'
    

    入站路由表:

       curl -X POST "$vpc_api_endpoint/v1/vpcs/$VpcId/routing_tables?version=$api_version&generation=2" \
       -H "Authorization: Bearer $iam_token" \
       -d '{
             "name": "my-ingress-routing-table",
             "route_direct_link_ingress": true
           }'
    

如需更多資訊及可選參數,請參閱《VPC API 參考指南》中的「為 VPC 建立路由表」。

使用 Terraform 建立路由表

若要使用 Terraform 建立路由表,請依照以下步驟操作:

  1. 設定您的 Terraform 環境。

  2. 請使用以下其中一個範例:

    • 要建立路由表:
       resource "ibm_is_vpc_routing_table" "example" {
         vpc                           = ibm_is_vpc.example.id
         name                          = "example-vpc-routing-table"
         route_direct_link_ingress     = true
       }
    
    • 若要建立一個可接受由 VPN 伺服器所建立的路由的路由表:
       resource "ibm_is_vpc_routing_table" "example" {
         vpc                              = ibm_is_vpc.example.id
         name                             = "example-vpc-routing-table"
         route_direct_link_ingress        = true
         accept_routes_from_resource_type = ["vpn_server"]
       }
    
    • 若要建立一個路由表,用以將源自 IBM Cloud Direct Link 的流量路由至此 VPC:
       resource "ibm_is_vpc_routing_table" "is_vpc_routing_table_instance" {
         vpc                           = ibm_is_vpc.example.id
         name                          = "example-vpc-routing-table"
         route_direct_link_ingress     = true
         route_transit_gateway_ingress = false
         route_vpc_zone_ingress        = false
         advertise_routes_to           = ["direct_link", "transit_gateway"]
       }
    
    • 若要建立包含使用者標籤和存取標籤的路由表:
       resource "ibm_is_vpc_routing_table" "example" {
         tags                          = ["rt-tag"]
         access_tags                   = ["access:dev"]
         vpc                           = ibm_is_vpc.example.id
         name                          = "example-vpc-routing-table"
         route_direct_link_ingress     = true
         route_transit_gateway_ingress = false
         route_vpc_zone_ingress        = false
       }
    

    CRN 及資源群組已包含在回應與資料來源中。

    resource "ibm_is_subnet" "example" {
      name               = "example-subnet"
      vpc                = ibm_is_vpc.example.id
      zone               = "us-south-1"
      ipv4_cidr_block    = "10.240.0.0/24"
      routing_table_crn  = ibm_is_vpc_routing_table.example.crn
    }
    

有關 ibm_is_vpc_routing_table 資源的文件,請參閱 Terraform Registry