使用子网

子网可帮助您的网络流量更高效地从源到目标的路径。 您可以使用子网网络 ACL 来保护每个子网内的资源。

准备工作

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

  • is.subnet.subnet.create
  • is.public-gateway.public-gateway.operate (指定 public_gateway 时需要)
  • is.network-acl.network-acl.operate

创建子网

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

如果您为子网使用的 IP 地址范围超出了 RFC 1918 定义的范围(10.0.0.0/8172.16.0.0/12192.168.0.0/16 ),则连接到该子网的实例可能无法访问互联网的部分区域。 如果计划配置同时使用 non-RFC-1918 地址和公共连接(浮动 IP 地址或公共网关)的 VPC,请确保使用 Delegate-VPC 操作配置自定义路由。

在控制台中创建子网

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

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

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

  3. 单击 VPC 子网列表表上的创建

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

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

    • 名称: 输入子网的唯一标识,例如 my-subnet
    • 资源组:为子网选择一个资源组。
    • 标记: (可选) 添加任何相关标记以帮助对子网进行分组。
    • 访问管理标记: (可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为 key:value。 有关更多信息,请参阅 使用标记控制对资源的访问
    • 虚拟私有云:选择要在其中创建子网的 VPC。
  6. 在 IP 范围选择部分,提供以下信息:

    • IP 范围:自动计算出 IP 范围内最有效的位置。 如果要定制 IP 范围而不是接受缺省选择,请选择其他地址前缀,更改地址数或手动输入 IP 范围。

    • 地址前缀:选择子网的基本网络前缀。 这决定了分配子网 IP 地址的较大 IP 范围。 从 VPC 中的可用前缀中选择。

    • IP 地址总数:选择所需的 IPv4 地址总数。

    • 地址空间:显示 VPC 中所选前缀的完整 IP 地址范围。 该范围定义了可以分配子网 IP 范围的边界。

    • 路由表:选择您希望新子网使用哪个路由表。

    • 子网访问控制表: 选择要让新子网使用的访问控制表。

    • 公共网关: 指示您是否希望子网通过将交换机切换到 已连接来与公共因特网通信。

      连接公共网关会创建一个 浮动 IP 并产生费用。

  7. 在摘要面板中,单击创建子网

“附加资源”选项卡

附加资源 "选项卡列出子网附加的所有资源,并允许创建:

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

在要创建的资源的资源列表表中单击“创建”。 您将被引导至相应的资源创建工作流,在此您可以开始创建资源的过程。

“保留 IP”选项卡

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

通过命令行界面(CLI)创建子网

要通过 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 创建子网

请按照以下说明使用 API 创建子网:

  1. 设置 API 环境
  2. 存储要在 API 命令中使用的任何其他变量。
创建子网的参数
查询参数 信息
version
需要
string
请求指定日期格式的API YYYY-MM-DD 版本。 可提供任何截至当前日期的日期。 请指定当前日期以获取最新版本。
可能的值:值必须与正则表达式匹配 ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
generation
所需
int32
基础设施世代。
可能的值为: 2
请求正文
Required
子网原型对象。
vpc
需要
string
子网所在的 VPC。
以下之一: VPCIdentityById, VPCIdentityByCRN, VPCIdentityByHref
ip_version
string
此子网应支持的IP版本。 允许值:[ipv4]
name
需要
string
此子网的名称。 该名称不得被 VPC 中的其他子网使用。 若未指定,名称将由随机选取的单词以连字符连接组成。
可能的值:1 ≤ 长度 ≤ 63,值必须与正则表达式匹配 ([a-z]|[a-z][-a-z0-9]*[a-z0-9])$
示例: my-subnet
network_acl
string
此子网要使用的网络访问控制列表。 若未指定,则使用 VPC 的默认网络访问控制列表。
以下之一: NetworkACLIdentityById, NetworkACLIdentityByCRN, NetworkACLIdentityHref
public_gateway
string
此子网用于互联网方向流量的公共网关。 若未指定,子网将不会连接到公共网关。
以下之一: PublicGatewayIdentityById, PublicGatewayIdentityByCRN, PublicGatewayIdentityByHref
resource_group
ResourceGroupIdentityById
要使用的资源组。 如果未指定,则使用该账户的 默认资源组
routing_table
string
此子网应使用的路由表。 如果未指定,那么将使用 VPC 的缺省路由表。 路由表属性 route_direct_link_ingress, route_internet_ingress, route_transit_gateway_ingress, 和 route_vpc_zone_ingress 必须为 false
以下之一: RoutingTableIdentityById, RoutingTableIdentityByCRN, RoutingTableIdentityByHref
SubnetByTotalCount
int 64

SubnetByCIDR
string
对于 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" }
    }'

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

API响应示例
响应主体 详细信息
available_ipv4_address_count
始终包括
int64
该子网中未使用、未被用户或提供商保留的 IPv4 地址数。
示例: 15
created_at
始终包括
date-time
创建此子网的日期和时间。
crn
始终包括
string
此子网的CRN。
可能的值:9 ≤ 长度 ≤ 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
始终包括
string
该子网的唯一标识符
可能的值:1 ≤ 长度 ≤ 64,值必须与正则表达式匹配 ^[-0-9a-z_]+$
示例: 7ec86020-1c6e-4889-b3f0-a15f2e50f87e
ip_version
始终包括
string
此子网支持的IP版本。
可能的值为: [ipv4]
ipv4_cidr_block
始终包括
string
子网的 IPv4 范围,以 CIDR 格式表示。
可能的值:9 ≤ 长度 ≤ 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
始终包括
string
此子网的名称。 该名称在VPC的所有子网中都是唯一的。
可能的值:1 ≤ 长度 ≤ 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 始终包含
NetworkACLReference
resource_group
始终包括
ResourceGroupReference
此子网的资源组。
resource_type
始终包括
string
资源类型。
可能的值:1 ≤ length ≤ 128,值必须与正则表达式匹配 ^[a-z][a-z0-9]*(_[a-z0-9]+)*$
示例: subnet
routing_table
始终包括
RoutingTableReference
此子网的路由表。
status
始终包括
string
子网的状态。
可能的值: available,deleting,failedpending
total_ipv4_address_count
始终包括
int64
vpc
始终包括
VPCReference
子网所在的 VPC。
zone
始终包括
ZoneReference
该子网所属的区域。
public_gateway
PublicGatewayReference
此子网用于互联网方向流量的公共网关。
创建状态码
状态代码 含义
201 已成功创建子网。
400 提供了一个无效的子网原型对象。
409 子网原型对象与VPC中的另一个子网冲突,或指定了超出VPC地址前缀范围的CIDR块。

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

查看子网

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

在控制台中查看子网

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

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

通过命令行界面(CLI)查看子网

要在 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 查看子网

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

  • is.subnet.subnet.read

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

  1. 设置 API 环境
  2. 存储要在 API 命令中使用的任何其他变量。
检索子网的参数
查询参数 信息
id
需要
string
子网标识符。
可能的值:1 ≤ 长度 ≤ 64,值必须与正则表达式匹配 ^[-0-9a-z_]+$
version
需要
string
请求指定日期格式的API YYYY-MM-DD 版本。 可提供任何截至当前日期的日期。 请指定当前日期以获取最新版本。
可能的值:值必须与正则表达式匹配 ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
generation
需要
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
该子网中未使用、未被用户或提供商保留的 IPv4 地址数。
示例: 15
created_at
始终包括
日期-时间
创建此子网的日期和时间。
crn
始终包括
string
该子网的 CRN
可能的值:9 ≤ 长度 ≤ 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
始终包括
string
该子网的唯一标识符
可能的值:1 ≤ 长度 ≤ 64,值必须与正则表达式匹配 ^[-0-9a-z_]+$
示例: 7ec86020-1c6e-4889-b3f0-a15f2e50f87e
ip_version
始终包括
string
此子网支持的IP版本。
可能的值为: [ipv4]
ipv4_cidr_block
始终包括
string
子网的 IPv4 范围,以CIDR格式表示。
可能的值:9 ≤ 长度 ≤ 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
始终包括
string
此子网的名称。 该名称在VPC的所有子网中都是唯一的。
可能的值:1 ≤ 长度 ≤ 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 始终包含
NetworkACLReference
resource_group
始终包括
ResourceGroupReference
此子网的资源组。
resource_type
始终包括
string
资源类型。
可能的值:1 ≤ length ≤ 128,值必须与正则表达式匹配 ^[a-z][a-z0-9]*(_[a-z0-9]+)*$
示例: subnet
routing_table
始终包括
RoutingTableReference
此子网的路由表。
status
始终包括
string
子网的状态。
可能的值: available,deleting,failedpending
total_ipv4_address_count
始终包括
int64
vpc
始终包括
VPCReference
子网所在的 VPC。
zone
始终包括
ZoneReference
该子网所属的区域。
public_gateway
PublicGatewayReference
此子网用于互联网方向流量的公共网关。
获取状态码
状态代码 含义
200 已成功检索到子网。
404 找不到具有指定标识符的子网。

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