建立路由表
建立路由表以定義規則,將網路流量沿最佳路徑轉送至目的地。 例如,路由表提供將資料封包傳送到網路路由上的下一跳的資訊。
開始之前
在建立路由表之前,請確定您至少有一個 VPC,並檢閱和遵守路由表的 限制和指引。
您可以使用主控台、CLI、API 或 Terraform 為 IBM Cloud 服務建立路由表。
在主控台中建立路由表
若要在主控台中建立路由表,請遵循下列步驟:
-
從 IBM Cloud 主控台,選擇導覽功能表
,然後按一下基礎結構
> 網路 > 路由表。 出現「VPC 的路由表」頁面。
-
按一下頁面右上方的「建立」。
-
在「用于 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。
-
-
-
按一下「建立路由表」。
從 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_link和transit_gateway是允許值。direct_link要求direct-link-ingress設為true。transit_gateway要求transit—gateway-ingress設為true。advertise選項設定為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 建立路由表,請依照以下步驟操作:
-
設定您的 API 環境。
-
將
VpcId的值儲存至變數中,以便在 API 指令中使用:export VpcId=<your_vpc_id> -
建立路由表。
出站路由表:
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 建立路由表,請依照以下步驟操作:
-
設定您的 Terraform 環境。
-
請使用以下其中一個範例:
- 要建立路由表:
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。