创建路由表
创建路由表以定义规则,从而将网络流量沿着最佳路径转发到其目标。 例如,路由表提供用于通过网络将数据包发送到其路由上的下一个中继段的信息。
准备工作
创建路由表之前,请确保至少有一个 VPC,并查看和遵守路由表 限制和指导原则。
你可以使用控制台、CLI、API 或 Terraform 为 IBM Cloud 服务创建路由表。
在控制台中创建路由表
要在控制台中创建路由表,请按照以下步骤操作:
-
从 IBM Cloud 控制台,选择导航菜单
,然后单击基础架构
> 网络 > 路由表。 此时将显示“VPC 的路由表”页面。
-
单击页面右上角的 创建。
-
在“VPC 供应的路由表”页面中,完成以下信息:
-
为路由表输入一个唯一的名称。
-
选择要与路由表关联的虚拟私有云。
-
标签-(可选)添加标签,帮助您组织和查找资源。 以后可以添加更多标记。 有关更多信息,请参阅使用标记。
-
访问管理标记-(可选)为资源添加访问管理标记,以帮助组织访问控制关系。 访问管理标记唯一支持的格式是
key:value
。 有关更多信息,请参阅 使用标记控制对资源的访问。 -
虚拟私有云- 选择您的 VPC。
-
在“流量”部分中,可以从以下可选功能部件中进行选择:
-
接受来自 的路由 (可选)-选择哪些资源可以在路由表中创建路由。 您可以选择 VPN 服务器和/或 VPN 网关的交换机。
-
流量来源(可选)- 选择要使用此路由表将流量路由到 VPC 的流量来源。
- Direct Link- 允许从 IBM Cloud Direct Link 专用或连接连接到内部部署位置的入口流量。 (可选) 您可以宣传指向直接链路的路由,这些路由不在 VPC 的地址前缀范围内。
- 转接网关- 允许入口流量从一个 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 地址。 因此,如果入局包将路由与因特网绑定的 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: $iam_token" \ -d '{ "name": "my-ingress-routing-table", "route_direct_link_ingress": true }'
使用 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 }
答复和数据源中包括通用报告编号和资源组。
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 注册表。