> For the complete documentation index, see [llms.txt](https://docs.console.zenlayer.com/api-reference/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.console.zenlayer.com/api-reference/cn/compute/zec/vpc-network/modifysubnetstacktype.md).

# ModifySubnetStackType

## 1. 接口描述

本接口(ModifySubnetStackType)用于修改指定子网的 IP 地址堆栈类型（IPv4 / IPv4\_IPv6 / IPv6）。变更为双栈或纯 IPv6 时须配置 IPv6 类型及对应的 CIDR 地址块。

{% hint style="info" %}
**注意事项**

* 支持`IPv4`切换为`IPv4_IPv6`（开启IPv6）：必须指定`ipv6Type`（公网`Public`/内网`Private`）；切换后，将得到一个IPv6地址段。
* 支持`IPv4_IPv6`切换为`IPv4`（关闭IPv6）：公网和内网IPv6类型的子网均支持；关闭前须确保子网内所有网卡已通过`UnassignNetworkInterfaceIpv6`删除其IPv6地址。
  {% endhint %}

## 2. 请求参数

以下请求参数列表仅列出了接口中需要的请求参数

| 参数名称            | 必选 | 类型                                                                                | 描述                                                                                                                                                                                                              |
| --------------- | -- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| subnetId        | 是  | String                                                                            | 要操作的子网的ID。                                                                                                                                                                                                      |
| stackType       | 是  | [SubnetStackType](/api-reference/cn/compute/zec/datastructure.md#subnetstacktype) | <p>子网堆栈类型。</p><p><code>IPv4\_IPv6</code>：开启 IPv6，公网或内网由<code>ipv6Type</code>指定。</p><p><code>IPv4</code>：关闭 IPv6，公网和内网 IPv6 类型的子网均支持；关闭前须确保子网内所有网卡已通过 <code>UnassignNetworkInterfaceIpv6</code> 删除其 IPv6 地址。</p> |
| ipv6Type        | 否  | [IPv6Type](/api-reference/cn/compute/zec/datastructure.md#ipv6type)               | <p>IPv6 的类型，当<code>stackType</code>为<code>IPv4\_IPv6</code>时必填。</p><p><code>Public</code>：公网 IPv6；<code>Private</code>：内网 IPv6。</p>                                                                             |
| ipv6CidrBlockId | 否  | String                                                                            | <p>公网IPv6 CIDR ID。</p><p>该字段仅当<code>ipv6Type</code>是公网(<code>Public</code>)时允许指定。</p><p>如果不指定，将从系统默认IP池里分配。</p>                                                                                                 |
| ipv6MaskLength  | 否  | Integer                                                                           | <p>分配给虚拟机（VM）的IPv6 CIDR前缀的大小。</p><p>该参数必须与<code>ipv6CidrBlockId</code>参数配合使用。</p><p>当未显式传递时，默认值为96。</p><p>最小必须大于或等于指定<code>ipv6CidrBlockId</code>的前缀，最大不能超过96。</p><p>可选值范围：\[-, 96]</p>                         |

## 3. 响应结果

| 参数名称          | 类型     | 描述                                                       |
| ------------- | ------ | -------------------------------------------------------- |
| requestId     | String | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 requestId。</p> |
| ipv6CidrBlock | String | 分配的IPv6地址段。                                              |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
**1. 修改子网的堆栈类型：IPv4 → IPv4\_IPv6，指定内网 IPv6。**

```json
POST /api/v2/zec HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: ModifySubnetStackType
<Common Request Params>

Request：
{
  "subnetId": "<subnetId>",
  "stackType": "IPv4_IPv6",
  "ipv6Type": "Private"
}

Response：
{
  "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
  "response": {
    "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
    "ipv6CidrBlock": "f0xxxx:xx:xxx::/64"
  }
}
```

**2. 关闭子网 IPv6：IPv4\_IPv6 → IPv4。**

```json
POST /api/v2/zec HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: ModifySubnetStackType
<Common Request Params>

Request：
{
  "subnetId": "<subnetId>",
  "stackType": "IPv4"
}

Response：
{
  "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
  "response": {
    "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3"
  }
}
```

{% endtab %}
{% endtabs %}

## 5. 开发者工具

Zenlayer Cloud API 2.0 提供了配套的[开发工具集（SDK）](/api-reference/cn/api-introduction/toolkit.md)，未来会陆续支持更多开发语言，方便快速接入和使用Zenlayer的产品和服务。

## 6. 错误码

下面包含业务逻辑中遇到的错误码，其他错误码见[公共错误码](/api-reference/cn/api-introduction/instruction/commonerrorcode.md)

| HTTP状态码 | 错误码                                                | 说明                                                     |
| ------- | -------------------------------------------------- | ------------------------------------------------------ |
| 400     | INVALID\_CIDR\_BLOCK\_STATUS                       | CIDR地址段状态不合法。                                          |
| 404     | INVALID\_CIDR\_IPV6\_NOT\_FOUND                    | IPv6 CIDR地址块不存在                                        |
| 400     | INVALID\_CIDR\_REGION\_MISMATCH                    | 子网区域与客户ipv6网段区域不一致。                                    |
| 400     | INVALID\_MASK\_LENGTH                              | IPv6地址掩码值需大于等于子网ipv6网段。                                |
| 400     | INVALID\_SUBNET\_HAS\_IPV6\_ALLOCATED              | 子网内仍有网卡持有IPv6地址，需先对所有网卡执行UnassignNetworkInterfaceIpv6。 |
| 404     | INVALID\_SUBNET\_NOT\_FOUND                        | 子网不存在。                                                 |
| 404     | INVALID\_VPC\_NOT\_FOUND                           | VPC不存在。                                                |
| 404     | INVALID\_ZONE\_NOT\_FOUND                          | 可用区不存在。                                                |
| 400     | OPERATION\_DENIED\_NO\_AVAILABLE\_CIDR             | 无空余的CIDR地址段。                                           |
| 400     | OPERATION\_DENIED\_REGION\_NOT\_SUPPORT\_PUB\_IPV6 | 指定的区域不支持公网IPV6。                                        |
| 400     | OPERATION\_DENIED\_SUBNET\_TYPE\_NOT\_SUPPORT      | 子网堆栈类型不支持。                                             |
| 400     | OPERATION\_DENIED\_VPC\_NOT\_SUPPORT\_PRI\_IPV6    | 指定的VPC不支持内网IPV6。                                       |
