IBM Cloud Docs
在 VPC 中使用子网

在 VPC 中使用子网

子网可帮助您的网络流量更高效地从源到目标的路径。 可以将访问控制表 (ACL) 与子网配合使用,以保护每个子网中的资源。

准备工作

开始之前,必须根据列出的任何条件为您分配一个或多个 IAM 访问角色,这些角色包含以下操作。 您可以通过转至 用户 > 用户> 访问权来检查您的访问权。

  • is.subnet.subnet.create
  • is.public-gateway.public-gateway.operate 指定 public_gateway 时为必填项
  • is.network-acl.network-acl.operate

在 VPC 中创建子网

您可以使用控制台、CLI 或 API 在 VPC 中创建子网。

如果在子网中使用 RFC 1918 定义的范围之外的 IP 范围( 10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16 ),则连接到该子网的实例可能无法访问部分公共互联网。 如果计划配置同时使用 non-RFC-1918 地址和公共连接 (浮动 IP 或公共网关) 的 VPC,请确保使用包含 Delegate-VPC 操作的定制路由。

使用 UI 在 VPC 中创建子网

要在 VPC 实例中创建子网,请执行以下步骤:

  1. 从浏览器中,打开 IBM Cloud 控制台

  2. 选择导航 菜单,然后单击基础设施 > 网络 > 子网

  3. 在“VPC 子网”列表上单击 创建 +

  4. 在“位置”部分,请提供以下信息:

    • 地理位置:指明要创建子网的大致区域。
    • 区域:指明要创建子网的区域。
    • 区域:指明要创建子网的区域。
  5. 在详细信息部分,请提供以下信息:

    • 名称: 输入子网的唯一标识,例如 my-subnet
    • 资源组:为子网选择一个资源组。
    • 标记: (可选) 添加任何相关标记以帮助对子网进行分组。
    • 访问管理标记: (可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为 key:value。 有关更多信息,请参阅 使用标记控制对资源的访问
    • 虚拟私有云:选择要在其中创建子网的 VPC。
    • IP 范围选择: 将自动计算 IP 范围的最有效位置。 如果要定制 IP 范围而不是接受缺省选择,请选择其他地址前缀,更改地址数或手动输入 IP 范围。
    • 路由表:选择您希望新子网使用哪个路由表。
    • 子网访问控制表: 选择要让新子网使用的访问控制表。
    • 公共网关: 指示您是否希望子网通过将交换机切换到 已连接来与公共因特网通信。 连接公共网关将创建 浮动 IP 并产生成本。
  6. 在“摘要”面板中,单击 创建子网 以创建子网。

“附加资源”选项卡

连接的资源 选项卡列出连接到子网的所有资源,并提供创建和连接新资源的方法。 您可以从此选项卡创建以下资源:

  • 实例
  • Bare metal servers
  • 实例模板
  • 实例组
  • 负载均衡器
  • VPN 网关
  • 虚拟端点网关
  • VPN 服务器

在要创建的资源的资源列表中单击 创建 +。 您将转至相应的创建资源工作流程,您可以在该工作流程中开始创建资源的过程。

“保留 IP”选项卡

保留 IP 选项卡是与子网关联的所有保留 IP 的列表。 有关保留 IP 的更多信息,请参阅 管理 IP 地址

使用 CLI 在 VPC 中创建子网

要使用 CLI 创建子网,请运行以下命令:

ibmcloud is subnet-create SUBNET_NAME VPC ((--zone ZONE_NAME --ipv4-address-count ADDR_COUNT) | --ipv4-cidr-block CIDR_BLOCK) [--acl ACL] [--pgw PGW] [--rt RT] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--output JSON] [-q, --quiet]

其中:

SUBNET_NAME
子网的名称。
VPC
VPC 的标识或名称。
--ipv4-cidr-block
子网的 IPv4 范围。 该选项与 --ipv4-address-count 互斥。
--ipv4-address-count
所需的 IPv4 地址总数必须是 2 的幂次,最小值为 8。 该选项与 --ipv4-cidr-block 互斥。
--zone
专区的名称。
--acl
网络 ACL 的标识或名称。
--pgw
公共网关的标识或名称。
--rt
路由表的标识或名称。 该选项还支持路由表的云资源名称 (CRN)。
--resource-group-id
资源组的标识。 该 ID 与 --resource-group-name 互斥。
--resource-group-name
资源组的名称。 该名称与 --resource-group-id 互斥。
--output
指定输出格式,仅支持 JSON。 以下项之一:JSON
-q, --quiet
禁止详细输出。

使用 API 在 VPC 中创建子网

遵循以下指示信息以使用 API 在 VPC 中创建子网:

  1. 设置 API 环境
  2. 存储要在 API 命令中使用的任何其他变量。
创建子网的参数
查询参数 信息
版本
必需
字符串
请求格式为 YYYY-MM-DD的日期的 API 版本。 可提供截至当前日期的任何日期。 指定当前日期以请求最新版本。
可能的值: 值必须与正则表达式匹配 ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
生成
必需
int32
基础结构生成。
可能的值: 2
请求主体
必需
子网原型对象。
vpc
必需
字符串
子网将驻留的 VPC。
下列其中一项: VPCIdentityByIdVPCIdentityByCRNVPCIdentityByHref
ip_version
string
要支持此子网的 IP 版本。 允许的值: [ipv4]
name
必需
字符串
此子网的名称。 该名称不得被 VPC 中的其他子网使用。 如果未指定,那么该名称将是随机选择的词的连字符列表。
可能的值: 1 ≤ length ≤ 63 ,值必须与正则表达式 ^([a-z]|[a-z][-a-z0-9]*[a-z0-9])$
示例: my-subnet
network_acl
string
要用于此子网的网络 ACL。 如果未指定,那么将使用 VPC 的缺省网络 ACL。
下列其中一项: NetworkACLIdentityByIdNetworkACLIdentityByCRNNetworkACLIdentityHref
public_gateway
string
要用于此子网的因特网绑定流量的公共网关。 如果未指定,那么子网将不会连接到公共网关。
下列其中一项: PublicGatewayIdentityByIdPublicGatewayIdentityByCRNPublicGatewayIdentityByHref
资源组
ResourceGroupIdentityById
要使用的资源组。 如果未指定,则使用账户的 默认资源组
routing_table
string
要用于此子网的路由表。 如果未指定,那么将使用 VPC 的缺省路由表。 路由表属性 route_direct_link_ingressroute_internet_ingressroute_transit_gateway_ingressroute_vpc_zone_ingress 必须为 false
下列其中一项: RoutingTableIdentityByIdRoutingTableIdentityByCRNRoutingTableIdentityByHref
子网总数
整数 64
或者
SubnetByCIDR
字符串
对于SubnetByTotalCount,指定总数IPv4需要地址。 为了 SubnetByCIDR,指定IPv4子网范围,以CIDR格式表示。 这两个选项都需要子网将驻留的 zone

启动所有变量后,提交请求。

例如:

curl -X POST
"$vpc_api_endpoint/v1/subnets?version=2022-10-31&generation=2"
-H "Authorization: Bearer $iam_token"
-d '{
      "name": "my-subnet-1",
      "ipv4_cidr_block": "10.0.1.0/24",
      "ip_version": "ipv4",
      "zone": { "name": "us-south-1" },
      "vpc": { "id": "a0819609-0997-4f92-9409-86c95ddf59d3" }
    }'

启动请求后,将显示以下响应:

启动响应创建示例
响应主体 详细信息
available_ipv4_address_count
始终包含此子网中未在使用且未被用户或提供者保留的
int64
The 数目的 IPv4 地址。
例如 15
created_at
始终包含
date-time
创建子网的日期和时间
crn
始终包含
字符串
此子网的 CRN
可能的值: 9 ≤ length ≤ 512
示例: crn:v1:bluemix:public:is:us-south-1:a/123456::subnet:7ec86020-1c6e-4889-b3f0-a15f2e50f87e
  • href
    始终包含*
    string
该子网的 URL
可能的值: 10 ≤ length ≤ 8000,值必须与正则表达式匹配 ^http(s)?://([^/?#]*)([^?#]*)(?([^#]*))?(#(.*))?$
示例: https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e
  • id
    始终包含
    字符串
此子网的唯一标识
可能的值: 1 ≤ length ≤ 64 , 值必须与正则表达式 ^[-0-9a-z_]+$
示例: 7ec86020-1c6e-4889-b3f0-a15f2e50f87e
ip_version
始终包含
字符串
此子网支持的 IP 版本。
可能的值: [ipv4]
** ipv4_cidr_block**
总是包含
字符串
name
始终包含
字符串
此子网的名称。 该名称在 VPC 中的所有子网中都是唯一的。
可能的值: 1 ≤ length ≤ 63 ,值必须与正则表达式 ^-?([a-z]|[a-z][-a-z0-9]*[a-z0-9]|[0-9][-a-z0-9]*([a-z]|[-a-z][-a-z0-9]*[a-z0-9]))$
示例: my-subnet
** network_acl
** resource_group**
总是包括
ResourceGroupReference
resource_type
始终包含
字符串
资源类型。
可能的值: 1 ≤ length ≤ 128 ,值必须与正则表达式 ^[a-z][a-z0-9]*(_[a-z0-9]+)*$
示例: subnet
** routing_table**
总是包括
RoutingTableReference
status
始终包含
字符串
子网的状态。
可能的值: availabledeletingfailedpending
** total_ipv4_address_count**
始终包括
int64
vpc
始终包含
VPCReference
此子网所在的 VPC。
** zone**
始终包括
ZoneReference
** public_gateway**
PublicGatewayReference
创建状态代码
状态码
201 子网创建成功。
400 提供了无效的子网原型对象。
409 子网原型对象与 VPC 中的另一个子网冲突,或者在 VPC 的地址前缀外部指定 CIDR 块。

有关更多信息 (包括 Java,Node,Python 和 Go 示例),请参阅 VPC API 参考 中的“创建子网”。

在 VPC 中查看子网

您可以使用 UI,API 或 CLI 在 VPC 中查看子网的详细信息。

使用 UI 查看 VPC 中的子网

创建子网后,它将显示在“VPC 子网”列表中。

要使用控制台查看列表中子网的详细信息,请 CLIck 名称列中子网的链接。 概述 选项卡显示您在子网创建中使用的信息。

使用 CLI 在 VPC 中查看子网

要使用 CLI 查看有关 VPC 中子网的详细信息,请运行以下命令:

ibmcloud is subnet SUBNET [--vpc VPC] [--show-attached] [--output JSON] [-q, --quiet]

其中:

SUBNET
子网的标识或名称。
--vpc
VPC 的标识或名称。 只需要在此 VPC 中按名称指定唯一资源。
--show-attached
查看连接到子网的资源(实例、负载均衡器和 VPN 网关)的详细信息。
--output
指定输出格式,仅支持 JSON。 其中一个 :JSON。
-q, --quiet
禁止详细输出。

使用 API 在 VPC 中查看子网

要调用此方法,必须为您分配一个或多个包含以下操作的 IAM 访问角色。 您可以通过转至 用户 > 用户> 访问权 来检查您的访问权

  • is.subnet.subnet.read

遵循以下指示信息以使用 API 在 VPC 中检索子网:

  1. 设置 API 环境
  2. 存储要在 API 命令中使用的任何其他变量。
检索子网的参数
查询参数 信息
id
必需
字符串
子网标识。
可能的值: 1 ≤ length ≤ 64,值必须与正则表达式匹配 ^[-0-9a-z_]+$
版本
必需
字符串
请求格式为 YYYY-MM-DD的日期的 API 版本。 可提供截至当前日期的任何日期。 指定当前日期以请求最新版本。
可能的值: 值必须与正则表达式匹配 ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
生成
必需
int32
基础结构生成。
允许值: 2
  1. 当启动所有变量时,运行命令。

例如:

curl -X GET "$vpc_api_endpoint/v1/subnets/$subnet_id?version=2022-10-31&generation=2"
-H "Authorization: Bearer $iam_token"

启动请求后,将显示以下响应:

启动响应检索示例
响应主体 详细信息
available_ipv4_address_count
始终包含此子网中未在使用且未被用户或提供者保留的
int64
The 数目的 IPv4 地址。
例如 15
created_at
始终包含
date-time
创建子网的日期和时间
crn
始终包含
字符串
此子网的 CRN
可能的值: 9 ≤ length ≤ 512
示例: crn:v1:bluemix:public:is:us-south-1:a/123456::subnet:7ec86020-1c6e-4889-b3f0-a15f2e50f87e
  • href
    始终包含*
    string
该子网的 URL
可能的值: 10 ≤ length ≤ 8000,值必须与正则表达式匹配 ^http(s)?://([^/?#]*)([^?#]*)(?([^#]*))?(#(.*))?$
示例: https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e
  • id
    始终包含
    字符串
此子网的唯一标识
可能的值: 1 ≤ length ≤ 64 , 值必须与正则表达式 ^[-0-9a-z_]+$
示例: 7ec86020-1c6e-4889-b3f0-a15f2e50f87e
** ip_version**
始终包含
字符串
此子网支持的 IP 版本。
可能的值: [ipv4]
** ipv4_cidr_block**
始终包含
string| IPv4 子网范围,以 CIDR 格式表示。
可能的值: 9 ≤ length ≤ 18 ,值必须与正则表达式 ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/(3[0-2]|[1-2][0-9]|[0-9]))$
示例: 10.0.0.0/24
name
始终包含
字符串
此子网的名称。 该名称在 VPC 中的所有子网中都是唯一的。
可能的值: 1 ≤ length ≤ 63 ,值必须与正则表达式 ^-?([a-z]|[a-z][-a-z0-9]*[a-z0-9]|[0-9][-a-z0-9]*([a-z]|[-a-z][-a-z0-9]*[a-z0-9]))$
示例: my-subnet
** network_acl
** resource_group**
总是包括
ResourceGroupReference
resource_type
始终包含
字符串
资源类型。
可能的值: 1 ≤ length ≤ 128 ,值必须与正则表达式 ^[a-z][a-z0-9]*(_[a-z0-9]+)*$
示例: subnet
** routing_table**
总是包括
RoutingTableReference
status
始终包含
字符串
子网的状态。
可能的值: availabledeletingfailedpending
** total_ipv4_address_count**
始终包括
int64
vpc
始终包含
VPCReference
此子网所在的 VPC。
** zone**
始终包括
ZoneReference
** public_gateway**
PublicGatewayReference
检索状态代码
状态码
200 已成功检索子网。
404 找不到具有指定标识的子网。

有关更多信息 (包括 Java,Node,Python 和 Go 示例),请参阅 VPC API 参考 中的“检索子网”。