创建路由表

创建路由表以定义规则,使网络流量沿着最佳路径转发到目的地。 例如,路由表提供将数据包发送到网络路由上的下一跳的信息。

准备工作

创建路由表之前,请确保至少有一个 VPC,并查看和遵守路由表 限制和指导原则

你可以使用控制台、CLI、API 或 Terraform 为 IBM Cloud 服务创建路由表。

在控制台中创建路由表

要在控制台中创建路由表,请按照以下步骤操作:

  1. IBM Cloud 控制台,选择导航菜单 菜单图标,然后单击基础架构 VPC 图标 > 网络 > 路由表。 出现 VPC 的路由表页面。

  2. 单击页面右上方的创建

  3. 在“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。
  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 地址,否则动作为交付的路由将被视为放弃。 因此,如果传入的数据包与下一跳为互联网 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