使用子网
子网可帮助您的网络流量更高效地从源到目标的路径。 您可以使用子网网络 ACL 来保护每个子网内的资源。
准备工作
开始之前,必须根据列出的任何条件为您分配一个或多个 IAM 访问角色,这些角色包含以下操作。 您可以通过转至 用户 > 用户> 访问权来检查您的访问权。
is.subnet.subnet.createis.public-gateway.public-gateway.operate(指定public_gateway时需要)is.network-acl.network-acl.operate
创建子网
您可以使用控制台、CLI 或 API 创建子网。
如果您为子网使用的 IP 地址范围超出了 RFC 1918 定义的范围(10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16 ),则连接到该子网的实例可能无法访问互联网的部分区域。 如果计划配置同时使用
non-RFC-1918 地址和公共连接(浮动 IP 地址或公共网关)的 VPC,请确保使用 Delegate-VPC 操作配置自定义路由。
在控制台中创建子网
要在控制台中创建子网,请按照以下步骤操作:
-
从浏览器中,打开 IBM Cloud 控制台。
-
选择导航菜单
,然后单击基础设施
> 网络 > 子网。
-
单击 VPC 子网列表表上的创建。
-
在“位置”部分,请提供以下信息:
- 地理位置:指明要创建子网的大致区域。
- 区域:指明要创建子网的区域。
- 区域:指明要创建子网的区域。
-
在“详细信息”部分,请提供以下信息:
- 名称: 输入子网的唯一标识,例如
my-subnet。 - 资源组:为子网选择一个资源组。
- 标记: (可选) 添加任何相关标记以帮助对子网进行分组。
- 访问管理标记: (可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为
key:value。 有关更多信息,请参阅 使用标记控制对资源的访问。 - 虚拟私有云:选择要在其中创建子网的 VPC。
- 名称: 输入子网的唯一标识,例如
-
在 IP 范围选择部分,提供以下信息:
-
IP 范围:自动计算出 IP 范围内最有效的位置。 如果要定制 IP 范围而不是接受缺省选择,请选择其他地址前缀,更改地址数或手动输入 IP 范围。
-
地址前缀:选择子网的基本网络前缀。 这决定了分配子网 IP 地址的较大 IP 范围。 从 VPC 中的可用前缀中选择。
-
IP 地址总数:选择所需的 IPv4 地址总数。
-
地址空间:显示 VPC 中所选前缀的完整 IP 地址范围。 该范围定义了可以分配子网 IP 范围的边界。
-
路由表:选择您希望新子网使用哪个路由表。
-
子网访问控制表: 选择要让新子网使用的访问控制表。
-
公共网关: 指示您是否希望子网通过将交换机切换到 已连接来与公共因特网通信。
连接公共网关会创建一个 浮动 IP 并产生费用。
-
-
在摘要面板中,单击创建子网。
“附加资源”选项卡
附加资源 "选项卡列出子网附加的所有资源,并允许创建:
- 实例
- 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 创建子网:
- 设置 API 环境。
- 存储要在 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_versionstring |
此子网应支持的IP版本。 允许值:[ipv4] |
name需要 string |
此子网的名称。 该名称不得被 VPC 中的其他子网使用。 若未指定,名称将由随机选取的单词以连字符连接组成。 可能的值:1 ≤ 长度 ≤ 63,值必须与正则表达式匹配 ([a-z]|[a-z][-a-z0-9]*[a-z0-9])$示例: my-subnet |
network_aclstring |
此子网要使用的网络访问控制列表。 若未指定,则使用 VPC 的默认网络访问控制列表。 以下之一: NetworkACLIdentityById, NetworkACLIdentityByCRN, NetworkACLIdentityHref |
public_gatewaystring |
此子网用于互联网方向流量的公共网关。 若未指定,子网将不会连接到公共网关。 以下之一: PublicGatewayIdentityById, PublicGatewayIdentityByCRN, PublicGatewayIdentityByHref |
resource_groupResourceGroupIdentityById |
要使用的资源组。 如果未指定,则使用该账户的 默认资源组。 |
routing_tablestring |
此子网应使用的路由表。 如果未指定,那么将使用 VPC 的缺省路由表。 路由表属性 route_direct_link_ingress, route_internet_ingress, route_transit_gateway_ingress, 和 route_vpc_zone_ingress 必须为 false。以下之一: RoutingTableIdentityById, RoutingTableIdentityByCRN, RoutingTableIdentityByHref |
SubnetByTotalCountint 64或 SubnetByCIDRstring |
对于 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 |
该子网中未使用、未被用户或提供商保留的 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,failed、pending |
total_ipv4_address_count始终包括 int64 |
|
vpc始终包括 VPCReference |
子网所在的 VPC。 |
zone始终包括 ZoneReference |
该子网所属的区域。 |
public_gatewayPublicGatewayReference |
此子网用于互联网方向流量的公共网关。 |
| 状态代码 | 含义 |
|---|---|
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 中检索子网:
- 设置 API 环境。
- 存储要在 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 |
- 当启动所有变量时,运行命令。
请参阅以下示例:
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,failed、pending |
total_ipv4_address_count始终包括 int64 |
|
vpc始终包括 VPCReference |
子网所在的 VPC。 |
zone始终包括 ZoneReference |
该子网所属的区域。 |
public_gatewayPublicGatewayReference |
此子网用于互联网方向流量的公共网关。 |
| 状态代码 | 含义 |
|---|---|
200 |
已成功检索到子网。 |
404 |
找不到具有指定标识符的子网。 |
有关更多信息(包括 Java、Python 和Go示例),请 参 阅VPC API Node 参考文档中的“检索子网”部分。