
# 创建DNAT规则
#### 功能介绍
创建DNAT规则
![](https://support.huaweicloud.com/api-natgateway/public_sys-resources/note_3.0-zh-cn.png)
创建规则时，要求网关状态status = "ACTIVE"，要求网关管理员状态admin_state_up = True。port_id和private_ip不能同时生效。对于all port类型的规则，要求internal_service_port = 0，external_service_port = 0，protocol = any.
#### URI
POST /v2.0/dnat_rules
#### 请求消息
请求参数如[表1]所示。
 表1请求参数 
| 参数        | 是否必选 | 参数类型   | 描述                                                    |
|:---|:---|:---|:---|
| dnat_rule | 是    | Object | dnat_rule对象。详见[表2]。 |
   
 表2dnat_rule字段说明 
| 参数                          | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| nat_gateway_id              | 是    | String  | 所属公网NAT网关的id。                                                                                                                                                                                                                                                                                                                                                                           |
| port_id                     | 否    | String  | 虚拟机或者裸机的Port ID，与private_ip参数二选一。 获取虚拟机Port ID的方法请参考[查询云服务器网卡信息](https://support.huaweicloud.com/api-ecs/ecs_02_0505.html)，获取裸机Port ID的方法请参考[查询裸金属服务器IP地址](https://support.huaweicloud.com/api-bms/bms_api_0723.html)。                                                                                                                                     |
| private_ip                  | 否    | String  | 用户私有IP地址，例如专线连接的私有云地址，与port_id参数二选一。                                                                                                                                                                                                                                                                                                                                                    |
| internal_service_port       | 是    | Integer | 虚拟机或者裸机对外提供服务的协议端口号。 取值范围：0\~65535。                                                                                                                                                                                                                                                                                                                      |
| floating_ip_id              | 是    | String  | 弹性公网IP的id。获取弹性公网IP的id的方法请参考[查询弹性公网IP列表](https://support.huaweicloud.com/api-eip/eip_api_0003.html)。                                                                                                                                                                                                                                                                                     |
| external_service_port       | 是    | Integer | Floatingip对外提供服务的端口号。 取值范围：0\~65535。                                                                                                                                                                                                                                                                                                                     |
| protocol                    | 是    | String  | 协议类型，目前支持TCP/UDP/ANY 对应协议号6/17/0                                                                                                                                                                                                                                                                                                                         |
| internal_service_port_range | 否    | String  | 虚拟机或者裸机对外提供服务的协议端口号范围。 - 功能说明：该端口范围与external _service_port_range按顺序实现1:1映射。  - 取值范围：1\~65535。  - 约束：只能以'-'字符连接端口范围。             |
| external_service_port_range | 否    | String  | Floatingip对外提供服务的端口号范围。 - 功能说明：该端口范围与internal _service_port_range按顺序实现1:1映射。  - 取值范围：1\~65535。  - 约束：只能以'-'字符连接端口范围。   |
   
#### 响应消息
响应参数如[表3]所示。
 表3响应参数 
| 参数        | 参数类型   | 描述                                                     |
|:---|:---|:---|
| dnat_rule | Object | dnat_rule对象。详见[表4]。 |
   
 表4dnat_rule字段说明 
| 参数                          | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|
| id                          | String  | DNAT规则的id。                                                                                                                                                                                                                                                                                                                                                                           |
| tenant_id                   | String  | 项目的ID。                                                                                                                                                                                                                                                                                                                                                                               |
| nat_gateway_id              | String  | 所属公网NAT网关的id。                                                                                                                                                                                                                                                                                                                                                                        |
| port_id                     | String  | 虚拟机或者裸机的Port ID，在VPC场景时使用此参数，与private_ip参数二选一。                                                                                                                                                                                                                                                                                                                                       |
| private_ip                  | String  | 用户私有IP地址，例如专线连接的私有云地址， 在专线场景时使用此参数，与port_id参数二选一。                                                                                                                                                                                                                                                                                                     |
| internal_service_port       | Integer | 虚拟机或者裸机对外提供服务的协议端口号。                                                                                                                                                                                                                                                                                                                                                                 |
| floating_ip_id              | String  | 弹性公网IP的id。                                                                                                                                                                                                                                                                                                                                                                           |
| floating_ip_address         | String  | 弹性公网IP的IP地址。                                                                                                                                                                                                                                                                                                                                                                         |
| external_service_port       | Integer | Floatingip对外提供服务的端口号。                                                                                                                                                                                                                                                                                                                                                                |
| protocol                    | String  | 协议类型，目前支持TCP/UDP/ANY 对应协议号6/17/0                                                                                                                                                                                                                                                                                                                        |
| status                      | String  | - 功能说明：DNAT规则的状态。  - 取值范围：[资源状态说明](https://support.huaweicloud.com/api-natgateway/nat_api_0042.html#nat_api_0042__table1390614366107)。                                                                                     |
| admin_state_up              | Boolean | - 解冻/冻结状态。  - 取值范围： - "true"：解冻  - "false"：冻结     |
| created_at                  | String  | DNAT规则的创建时间戳，遵循UTC时间，保留小数点后6位，格式是yyyy-mm-dd hh:mm:ss                                                                                                                                                                                                                                                                                                                                 |
| internal_service_port_range | String  | 虚拟机或者裸机对外提供服务的协议端口号范围。 - 功能说明：该端口范围与external _service_port_range按顺序实现1:1映射。  - 取值范围：1\~65535。  - 约束：只能以'-'字符连接端口范围。     |
| external_service_port_range | String  | Floatingip对外提供服务的端口号范围。 - 功能说明：该端口范围与internal _service_port_range按顺序实现1:1映射。  - 取值范围：1\~65535。  - 约束：只能以'-'字符连接端口范围。       |
   
#### 示例
- 请求样例
  1. 创建指定端口的规则
     ```
     POST https://{Endpoint}/v2.0/dnat_rules
     {
         "dnat_rule": {
             "floating_ip_id": "bf99c679-9f41-4dac-8513-9c9228e713e1",
             "nat_gateway_id": "cda3a125-2406-456c-a11f-598e10578541",
             "port_id": "9a469561-daac-4c94-88f5-39366e5ea193",
             "internal_service_port": 993,
             "protocol": "tcp",
             "external_service_port": 242
         }
     }
     ```
     
  
  
  
  2. 创建all port类型的规则。
     ```
     POST https://{Endpoint}/v2.0/dnat_rules
     {
         "dnat_rule": {
             "floating_ip_id": "Cf99c679-9f41-4dac-8513-9c9228e713e1",
             "nat_gateway_id": "Dda3a125-2406-456c-a11f-598e10578541",
             "private_ip": "192.168.1.100",
             "internal_service_port": 0,
             "protocol": "any",
             "external_service_port": 0
         }
     }
     ```
     
  
  3. 指定端口范围创建规则
     ```
     POST https://{Endpoint}/v2.0/dnat_rules 
      { 
          "dnat_rule": { 
             "floating_ip_id": "0cc38f0c-f26b-4556-b956-f5831061bb86", 
             "nat_gateway_id": "dcb80bee-3e67-4282-8cc3-981431a63583", 
             "private_ip": "172.16.1.197", 
             "internal_service_port": 0,
             "internal_service_port_range": "55-66",
             "protocol": "udp", 
             "external_service_port": 0,
             "external_service_port_range": "55-66",  
             "description": "my dnat rule 01"
          } 
      }
     ```
     
   
 
- 响应样例
  1. 创建指定端口的规则的响应
     ```
     {
         "dnat_rule": {
             "floating_ip_id": "bf99c679-9f41-4dac-8513-9c9228e713e1",
             "status": "ACTIVE",
             "nat_gateway_id": "cda3a125-2406-456c-a11f-598e10578541",
             "admin_state_up": true,
             "port_id": "9a469561-daac-4c94-88f5-39366e5ea193",
             "internal_service_port": 993,
             "protocol": "tcp",
             "tenant_id": "abc",
             "created_at": "2017-11-15 15:44:42.595173",
             "id": "79195d50-0271-41f1-bded-4c089b2502ff",
             "floating_ip_address": "5.21.11.226",
             "external_service_port": 242,
             "private_ip": ""
         }
     }
     ```
     
  
  2. 创建all port类型的规则的响应
     ```
     {
         "dnat_rule": {
             "floating_ip_id": "cf99c679-9f41-4dac-8513-9c9228e713e1",
             "status": "ACTIVE",
             "nat_gateway_id": "dda3a125-2406-456c-a11f-598e10578541",
             "admin_state_up": true,
             "private_ip": "192.168.1.100",
             "internal_service_port": 0,
             "protocol": "any",
             "tenant_id": "abc",
             "created_at": "2017-11-15 15:44:42.595173",
             "id": "79195d50-0271-41f1-bded-4c089b2502ff",
             "floating_ip_address": "5.21.11.227",
             "external_service_port": 0
         }
     }
     ```
     
  
  3. 指定端口范围创建规则的响应
     ```
     {  
           "dnat_rule": {  
               "floating_ip_id": "0cc38f0c-f26b-4556-b956-f5831061bb86",  
               "status": "ACTIVE",  
               "nat_gateway_id": "dcb80bee-3e67-4282-8cc3-981431a63583",  
               "admin_state_up": true,  
               "private_ip": "172.16.1.197",  
               "internal_service_port": 0,  
               "protocol": "udp",  
               "tenant_id": "057ef081ad80d2732fcec011fdbc01c0",  
               "created_at": "2020-09-21 11:46:11.474729",  
               "id": "0de17f1a-686a-4484-9d8b-973889f8654c",  
               "external_service_port": 0,  
               "floating_ip_address": "10.185.74.219", 
               "port_id": "", 
               "internal_service_port_range":"55-66", 
               "external_service_port_range":"55-66" 
           }  
       }
     ```
     
   
#### 状态码
请参考[状态码](https://support.huaweicloud.com/api-natgateway/nat_api_0038.html)。
