创建路由表
创建路由表以定义规则,使网络流量沿着最佳路径转发到目的地。 例如,路由表提供将数据包发送到网络路由上的下一跳的信息。
准备工作
创建路由表之前,请确保至少有一个 VPC,并查看和遵守路由表 限制和指导原则。
你可以使用控制台、CLI、API 或 Terraform 为 IBM Cloud 服务创建路由表。
在控制台中创建路由表
要在控制台中创建路由表,请按照以下步骤操作:
-
从 IBM Cloud 控制台,选择导航菜单
,然后单击基础架构
> 网络 > 路由表。 出现 VPC 的路由表页面。
-
单击页面右上方的创建。
-
在“VPC 配置的路由表”页面中,填写以下信息:
-
请为您的路由表输入一个唯一的名称。
-
选择要与路由表关联的虚拟专用云。
-
标签- (可选)添加标签,以便整理和查找您的资源。 以后可以添加更多标记。 有关更多信息,请参阅使用标记。
-
访问管理标记-(可选)为资源添加访问管理标记,以帮助组织访问控制关系。 访问管理标记唯一支持的格式是
key:value。 如需了解更多信息,请参阅 使用标记控制对资源的访问。 -
虚拟私有云 ——请选择您的 VPC。
-
在“交通”部分,您可以选择这些可选功能:
-
接受路由 (可选)- 选择哪些资源可以在路由表中创建路由。 您可以为 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 地址,否则动作为交付的路由将被视为放弃。 因此,如果传入的数据包与下一跳为互联网 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。