创建路径

您可以通过配置路由来控制 VPC 中的网络流量。 根据包的目标地址,使用 VPC 路由来指定包的下一个中继段。

对于 VPC 中的每个区域,可以存在多个路由表。 对于出口流量,当包离开子网时,系统会根据子网区域中的路由表来评估其目标,以确定下一步发送包的位置。 每个 VPC 都有一个默认路由表,它附加到每个子网,除非用户明确将子网附加到不同的路由表。

VPC 定制路由具有四个主要组件:

  • 目标 CIDR:指定该路由适用的目标 IP 地址范围。

  • 下一个跳点:指定当路由操作为“Deliver”时,匹配的流量将被转发到的 IP 地址。

    您可以编辑现有路由的下一个中继段 IP 地址。

  • 区域:指定评估该路由的区域。 对于出站路由,该区域通常指源流量的来源区域。 对于入站路由,该区域指的是处理入站流量且下一跳必须位于其中的区域。

  • 操作:指定如何处理匹配的流量,例如转发、委派或丢弃该流量。

源自 VPC 的指定区域且具有指定目标 CIDR 路由到下一个中继段的目标地址的任何流量。 如果目标地址位于多个 VPC 路由的目标 CIDR 中,那么将使用最具体的路由。 如果 VPC 具有两个或更多相同的特定路由,那么流量是在每个路由之间分布的循环。

每个路由都有一个目标属性,其中包含前缀长度 ( 10.2.0.0/24 中的 /24 )。 每个定制路由表支持的唯一前缀长度为 14。 具有相同前缀的多条路由仅被视为一个唯一前缀。

VPC地址前缀不再仅限于 RFC-1918 地址。 现在,您必须通过包含新 Delegate-VPC 操作的自定义路由,来配置同时使用 non-RFC-1918 地址且具有公共连接性(浮动IP地址或公共网关)的VPC。 对于符合 non-RFC-1918 规范且位于VPC外部的目标CIDR,必须指定此操作。例如,通过 Direct Link、Transit Gateway 或VPC经典访问方式可达的目标即属于此类情况。 有关何时使用 Delegate-VPC 操作的更多信息,请参阅 IANA 注册的 IP 分配的路由注意事项

如果两者都为 true,那么需要 Delegate-VPC 操作:

  • VPC 使用 non-RFC-1918 地址
  • VPC 具有公共连接

在下列情况下,不需要 Delegate-VPC 操作:

  • VPC 仅使用 RFC-1918 地址
  • VPC 没有公共连接

在创建自定义路由之前,请阅读 《关于路由表和路由》 一文,以了解入站和出站路由的行为。

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

在控制台中创建路由

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

  1. 确保查看 限制和准则

  2. IBM Cloud 控制台,选择导航菜单 导航菜单图标,然后单击基础架构 VPC 图标 > 网络 > 路由表。 此时将显示 VPC 页面的路由表。

  3. 选择与要查看的路由表相关联的 VPC。 然后,单击路由表的名称以显示其详细信息。

  4. 滚动到“检修路线”部分,然后单击 创建

  5. 在“创建路由”侧面板中,输入以下信息:

    • 区域-选择路线的可用性区域。

    • 名称- 输入新路线的名称。

    • Destination CIDR-路由的目标 CIDR (例如,10.0.0.0/16)。

    • 优先级-输入从 04 的优先级。 默认值为 2。 有关更多信息,请参阅 确定路由首选项

    • 操作 ——对匹配该路由的数据包执行的操作。 值为:

      • 代表-使用系统路由表来路由包。
      • 代表-VPC-代表系统的内置路由,忽略因特网绑定的路由。 如果 VPC 使用 non-RFC-1918 地址并且还具有公共连接,那么是必需的。 有关详细信息,请参阅 IANA 注册的 IP 分配的路由注意事项
      • 交付-将包路由到下一个中继段目标。 您可以添加多个具有相同地址前缀的路由。 虚拟路由器通过使用不同的下一个中继段 IP 地址来执行同等成本的多路径路由 (ECMP)。
      • Drop-丢弃包。

    对子网进行处理的流量使用与子网关联的定制路由表。 如果在定制路由表中找不到匹配的路由,那么将使用 VPC 系统路由表继续路由。 您可以使用 删除操作的定制路由表缺省路由来避免此行为。

    • 类型-选择 IP 地址VPN 连接

    • 下一个中继段 (IP 地址)-输入下一个中继段。

      您可以修改现有路由的下一个中继段 IP 地址。

    • 广告-向入口源发布广告。 目前,支持 Direct Link 和 Transit Gateway。 可选。

  6. 点击 “保存”以保存新路线。 路由将显示在“路由表详细信息”页面上。

通过命令行界面(CLI)创建路由

开始之前,请 设置 CLI 环境

要从 CLI 创建 VPC 路由,请运行以下命令:

ibmcloud is vpc-routing-table-route-create VPC ROUTING_TABLE --zone ZONE_NAME --destination DESTINATION_CIDR [--action delegate_vpc | delegate | deliver | drop] [--priority PRIORITY] [--next-hop NEXT_HOP [--vpngw VPNGW]][--advertise true | false] [--name NAME] [--output JSON] [-q, --quiet]

其中:

VPC
VPC 的标识或名称。
ROUTING_TABLE
VPC 路由表的 ID 或名称。
--zone
该区域的名称。
--destination
路由的目标 CIDR。 在表中的每个区域内,至多有两条路由的目的地相同,且仅当这两条路由的操作均为 deliver 时才成立。
--action
要对匹配路由的数据包执行的操作。 之一:delegate_vpc, delegate, deliver, drop。默认:deliver
--priority
路由的优先级。 之一:0, 1, 2, 3, 4。默认值:2。 值越低,优先级越高。 如果自定义路由表中包含目的地相同的路由,则选择优先级最高(值最低)的路由。
--next-hop
如果操作为“deliver”,请输入要将数据包路由到的下一跳的 IP 地址或 VPN 连接 ID。
--vpngw
VPN网关的名称。
--advertise
向直接链路和/或中转网关源发布广告。 true 网站之一,false
--name
VPC 路由表的名称。
--output
输出格式。 以下项之一:json
--q, quiet
禁止冗长输出。

CLI 示例

  • 通过指定区域名称、目标 CIDR 以及作为 IP 地址的下一跳来创建路由:

    ibmcloud is vpc-routing-table-route-create r134-b754e387-8b06-43be-a5ea-909595a50676 r134-6cfaceb8-99d6-4743-bee8-ebbcbba6a563 --zone us-south-1 --destination 10.2.2.0/24 --action deliver --priority 1 --next-hop 10.0.0.2 --name my-vpc-route
    
  • 通过指定区域名称、目标 CIDR 以及将 VPN 连接 ID 设为下一跳来创建一条路由:

    ibmcloud is vpc-routing-table-route-create r134-b754e387-8b06-43be-a5ea-909595a50676 r134-6cfaceb8-99d6-4743-bee8-ebbcbba6a563 --zone us-south-1 --destination 10.2.2.0/24 --action deliver --priority 1 --next-hop 02h7-1cf20e69-e2ce-400b-b070-0897521e2eb6 --name my-vpc-route
    

使用 API 创建路线

要使用 API 创建目标路由,请执行以下步骤:

  1. 设置 API 环境

  2. 存储要在 API 命令中使用的以下变量的值:

    export VpcId=<your_vpc_id>
    export RoutingTableId=<your_routing_table_id>
    
  3. 通过指定 next_hop 作为 IP 地址或 VPN 连接 ID 来创建一条路由:

    curl -X POST "$vpc_api_endpoint/v1/vpcs/$VpcId/routing_tables/$RoutingTableId/routes?version=$api_version&generation=2" \
    -H "Authorization: Bearer $iam_token" \
    -d '{
         "name": "my-new-route",
         "zone": {"name": "us-south-2"},
         "action": "deliver",
         "destination": "10.10.10.0/24",
         "next_hop": {"address": "10.0.0.3"}
       }'
    
    curl -X POST "$vpc_api_endpoint/v1/vpcs/$VpcId/routing_tables/$RoutingTableId/routes?version=$api_version&generation=2" \
    -H "Authorization: Bearer $iam_token" \
    -d '{
         "name": "my-new-route",
         "zone": {"name": "us-south-2"},
         "action": "deliver",
         "destination": "10.10.10.0/24",
         "next_hop": {"id": "02h7-1cf20e69-e2ce-400b-b070-0897521e2eb6"}
       }'
    

有关更多信息和可选参数,请 阅 VPC API 参考文档中的“在 VPC 路由表中创建路由”。

使用 Terraform 创建路由

要使用 Terraform 创建路由,请执行以下步骤:

  1. 配置您的 Terraform 环境。

  2. 创建路径:

    resource "ibm_is_vpc_routing_table_route" "example" {
      vpc           = ibm_is_vpc.example.id
      routing_table = ibm_is_vpc_routing_table.example.routing_table
      zone          = "us-south-1"
      name          = "custom-route-2"
      destination   = "192.168.4.0/24"
      action        = "deliver"
      next_hop      = ibm_is_vpn_gateway_connection.example.gateway_connection // Example value "10.0.0.4"
    }
    

有关该 ibm_is_vpc_routing_table_route 资源的更多信息,请参阅 Terraform 注册表