# CreateDnatEntry

## 1. 接口描述

本接口(CreateDnatEntry)用于创建DNAT规则。

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

* 默认一个NAT网关可以创建100条DNAT规则. 如果想扩大可以联系Console Support。
  {% endhint %}

## 2. 请求参数

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

| 参数名称         | 必选 | 类型                                                                                                              | 描述                                                                                                                                  |
| ------------ | -- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| natGatewayId | 是  | String                                                                                                          | NAT网关 ID。                                                                                                                           |
| eipId        | 是  | String                                                                                                          | DNAT规则添加的弹性公网ID。                                                                                                                    |
| privateIp    | 是  | String                                                                                                          | DNAT规则的内网IP地址。                                                                                                                      |
| protocol     | 是  | [DnatEntryProtocol](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#dnatentryprotocol) | <p>DNAT规则的协议类型。</p><p>如果要转发所有流量，端口不变，请指定协议类型为<code>Any</code>且内部端口和公网外部端口不要设置。</p>                                                  |
| listenerPort | 否  | String                                                                                                          | <p>DNAT规则端口转发的外部公网端口或端口段。</p><p>可使用连字符（-）指定端口范围，例如：80-100，公网和内网端口数量需保持一致。</p><p>取值范围1-65535。</p><p>仅在协议类型不为<code>Any</code>时生效。</p> |
| internalPort | 否  | String                                                                                                          | <p>DNAT规则端口转发的内部端口或端口段。</p><p>可使用连字符（-）指定端口范围，例如：80-100，公网和内网端口数量需保持一致。</p><p>取值范围1-65535。</p><p>仅在协议类型不为<code>Any</code>时生效。</p>   |

## 3. 响应结果

| 参数名称        | 类型     | 描述                                                       |
| ----------- | ------ | -------------------------------------------------------- |
| requestId   | String | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 requestId。</p> |
| dnatEntryId | String | DNAT规则唯一ID。                                              |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
**1. 创建一个DNAT规则。**

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

Request：
{
    "natGatewayId": "<natGatewayId>",
    "eipId": "<eipId>",
    "privateIp": "10.0.0.2",
    "protocol": "TCP",
    "listenerPort": "1-30",
    "internalPort": "1-30"
}

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

{% endtab %}
{% endtabs %}

## 5. 开发者工具

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

## 6. 错误码

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

| HTTP状态码 | 错误码                                          | 说明                |
| ------- | -------------------------------------------- | ----------------- |
| 404     | INVALID\_NAT\_NOT\_FOUND                     | NAT网关不存在。         |
| 400     | OPERATION\_DENIED\_NAT\_STATUS               | NAT网关状态不是RUNNING。 |
| 404     | INVALID\_EIP\_NOT\_FOUND                     | EIP不存在。           |
| 400     | OPERATION\_DENIED\_EIP\_NOT\_ASSIGNED        | EIP状态未绑定。         |
| 400     | OPERATION\_DENIED\_EIP\_NOT\_ASSIGN\_NAT     | EIP没有与NAT网关绑定。    |
| 400     | OPERATION\_DENIED\_DNAT\_ENTRY\_COUNT\_LIMIT | DNAT规则数量限制。       |
