在 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 实例中创建子网,请执行以下步骤:
-
从浏览器中,打开 IBM Cloud 控制台。
-
选择导航
,然后单击基础设施 > 网络 > 子网。
-
在“VPC 子网”列表上单击 创建 +。
-
在“位置”部分,请提供以下信息:
- 地理位置:指明要创建子网的大致区域。
- 区域:指明要创建子网的区域。
- 区域:指明要创建子网的区域。
-
在详细信息部分,请提供以下信息:
- 名称: 输入子网的唯一标识,例如
my-subnet
。 - 资源组:为子网选择一个资源组。
- 标记: (可选) 添加任何相关标记以帮助对子网进行分组。
- 访问管理标记: (可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为
key:value
。 有关更多信息,请参阅 使用标记控制对资源的访问。 - 虚拟私有云:选择要在其中创建子网的 VPC。
- IP 范围选择: 将自动计算 IP 范围的最有效位置。 如果要定制 IP 范围而不是接受缺省选择,请选择其他地址前缀,更改地址数或手动输入 IP 范围。
- 路由表:选择您希望新子网使用哪个路由表。
- 子网访问控制表: 选择要让新子网使用的访问控制表。
- 公共网关: 指示您是否希望子网通过将交换机切换到 已连接来与公共因特网通信。 连接公共网关将创建 浮动 IP 并产生成本。
- 名称: 输入子网的唯一标识,例如
-
在“摘要”面板中,单击 创建子网 以创建子网。
“附加资源”选项卡
连接的资源 选项卡列出连接到子网的所有资源,并提供创建和连接新资源的方法。 您可以从此选项卡创建以下资源:
- 实例
- 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 中创建子网:
- 设置 API 环境。
- 存储要在 API 命令中使用的任何其他变量。
查询参数 | 信息 |
---|---|
版本 必需 字符串 |
请求格式为 YYYY-MM-DD 的日期的 API 版本。 可提供截至当前日期的任何日期。 指定当前日期以请求最新版本。可能的值: 值必须与正则表达式匹配 ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ |
生成 必需 int32 |
基础结构生成。 可能的值: 2 |
请求主体 必需 |
子网原型对象。 |
vpc 必需 字符串 |
子网将驻留的 VPC。 下列其中一项: VPCIdentityById ,VPCIdentityByCRN 和 VPCIdentityByHref |
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。 下列其中一项: NetworkACLIdentityById ,NetworkACLIdentityByCRN 和 NetworkACLIdentityHref |
public_gateway string |
要用于此子网的因特网绑定流量的公共网关。 如果未指定,那么子网将不会连接到公共网关。 下列其中一项: PublicGatewayIdentityById ,PublicGatewayIdentityByCRN 和 PublicGatewayIdentityByHref |
资源组 ResourceGroupIdentityById |
要使用的资源组。 如果未指定,则使用账户的 默认资源组 |
routing_table string |
要用于此子网的路由表。 如果未指定,那么将使用 VPC 的缺省路由表。 路由表属性 route_direct_link_ingress , route_internet_ingress , route_transit_gateway_ingress 和 route_vpc_zone_ingress 必须为 false 。下列其中一项: RoutingTableIdentityById ,RoutingTableIdentityByCRN 和 RoutingTableIdentityByHref |
子网总数 整数 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 |
|
该子网的 URL 可能的值: 10 ≤ length ≤ 8000,值必须与正则表达式匹配 ^http(s)?://([^/?#]*)([^?#]*)(?([^#]*))?(#(.*))?$ 示例: https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e |
|
此子网的唯一标识 可能的值: 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 始终包含 字符串 |
子网的状态。 可能的值: available ,deleting ,failed ,pending |
** | 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 中检索子网:
- 设置 API 环境。
- 存储要在 API 命令中使用的任何其他变量。
查询参数 | 信息 |
---|---|
id 必需 字符串 |
子网标识。 可能的值: 1 ≤ length ≤ 64,值必须与正则表达式匹配 ^[-0-9a-z_]+$ |
版本 必需 字符串 |
请求格式为 YYYY-MM-DD 的日期的 API 版本。 可提供截至当前日期的任何日期。 指定当前日期以请求最新版本。可能的值: 值必须与正则表达式匹配 ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ |
生成 必需 int32 |
基础结构生成。 允许值: 2 |
- 当启动所有变量时,运行命令。
例如:
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 |
|
该子网的 URL 可能的值: 10 ≤ length ≤ 8000,值必须与正则表达式匹配 ^http(s)?://([^/?#]*)([^?#]*)(?([^#]*))?(#(.*))?$ 示例: https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e |
|
此子网的唯一标识 可能的值: 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 始终包含 字符串 |
子网的状态。 可能的值: available ,deleting ,failed ,pending |
** | total_ipv4_address_count** 始终包括 int64 |
vpc 始终包含 VPCReference |
此子网所在的 VPC。 |
** | zone** 始终包括 ZoneReference |
** | public_gateway** PublicGatewayReference |
状态码 | |
---|---|
200 | 已成功检索子网。 |
404 | 找不到具有指定标识的子网。 |
有关更多信息 (包括 Java,Node,Python 和 Go 示例),请参阅 VPC API 参考 中的“检索子网”。