Updating a DNAT Rule
Function
This API is used to update a DNAT rule.
You can update the rule only when status of the DNAT rule is set to ACTIVE and admin_state_up of the NAT gateway administrator to True. Either port_id or private_ip is used each time. If you create a rule that applies to all port types, set internal_service_port to 0, external_service_port to 0, and protocol to ANY.
The fields, including port_id, private_ip, internal_service_port, external_service_port, floating_ip_id, protocol, internal_service_port_range, and external_service_port_range must be updated together.
URI
PUT /v2/{project_id}/dnat_rules/{dnat_rule_id}
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| project_id | Yes | String | Specifies the project ID. |
| dnat_rule_id | Yes | String | Specifies the DNAT rule ID. |
Request
Table 3 describes the request parameters.
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| dnat_rule | Yes | Object | Specifies the DNAT rule object. For details, see Table 3. |
| Parameter | Mandatory | Type | Description |
|---|---|---|---|
| nat_gateway_id | Yes | String | Specifies the NAT gateway ID. |
| port_id | No | String | Specifies the port ID of an ECS or a BMS. This parameter and private_ip are alternative. For details about how to obtain the port ID of an ECS, see Binding a Virtual IP Address to an ECS NIC. For details about how to obtain the port ID of a BMS, see Querying IP Addresses of BMSs (Native OpenStack API). |
| private_ip | No | String | Specifies the private IP address of a user, for example, the IP address of a VPC for Direct Connect connection. This parameter and port_id are alternative. |
| internal_service_port | No | Integer | Specifies the port used by ECSs or BMSs to provide services for external systems. |
| floating_ip_id | No | String | Specifies the EIP ID. For details about how to obtain the EIP ID, see Querying EIPs. |
| external_service_port | No | Integer | Specifies the port for providing external services. |
| protocol | No | String | Specifies the protocol type. Currently, TCP, UDP, and ANY are supported. The protocol number of TCP, UDP, and ANY are 6, 17, and 0, respectively. |
| description | No | String(255) | Provides supplementary information about the DNAT rule. |
| internal_service_port_range | No | String | Specifies the port range used by ECSs or BMSs to provide services for external systems.
|
| external_service_port_range | No | String | Specifies the port range used by the floating IP address for providing external services.
|
Response
Table 4 lists response parameters.
| Parameter | Type | Description |
|---|---|---|
| dnat_rule | Object | Specifies the DNAT rule object. |
| Parameter | Type | Description |
|---|---|---|
| id | String | Specifies the DNAT rule ID. |
| tenant_id | String | Specifies the project ID. |
| nat_gateway_id | String | Specifies the NAT gateway ID. |
| port_id | String | Specifies the port ID of an ECS or a BMS. |
| private_ip | String | Specifies the private IP address of a user, for example, the IP address of a VPC for Direct Connect connection. |
| internal_service_port | Integer | Specifies the port used by ECSs or BMSs to provide services for external systems. |
| floating_ip_id | String | Specifies the EIP ID. |
| floating_ip_address | String | Specifies the EIP. |
| external_service_port | Integer | Specifies the port for providing external services. |
| protocol | String | Specifies the protocol type. Currently, TCP, UDP, and ANY are supported. The protocol number of TCP, UDP, and ANY are 6, 17, and 0, respectively. |
| description | String(255) | Provides supplementary information about the DNAT rule. |
| status | String |
|
| admin_state_up | Boolean |
|
| created_at | String |
|
| internal_service_port_range | String | Specifies the port range used by ECSs or BMSs to provide services for external systems.
|
| external_service_port_range | String | Specifies the port range used by the floating IP address for providing external services.
|
Example
- Example request
- Update a rule to apply to a specific port.
PUT https://{Endpoint}/v2/d199ba7e0ba64899b2e81518104b1526/dnat_rules/79195d50-0271-41f1-bded-4c089b2502ff { "dnat_rule": { "nat_gateway_id": "a78fb3eb-1654-4710-8742-3fc49d5f04f8", "floating_ip_id": "cf99c679-9f41-4dac-8513-9c9228e713e1", "port_id": "9a469561-daac-4c94-88f5-39366e5ea193", "internal_service_port": 993, "protocol": "tcp", "external_service_port": 242, "description": "my dnat rule 01" } } - Update a rule to apply to all ports.
PUT https://{Endpoint}/v2/d199ba7e0ba64899b2e81518104b1526/dnat_rules/79195d50-0271-41f1-bded-4c089b2502ff { "dnat_rule": { "nat_gateway_id": "a78fb3eb-1654-4710-8742-3fc49d5f04f8", "floating_ip_id": "bf99c679-9f41-4dac-8513-9c9228e713e1", "private_ip": "192.168.1.100", "internal_service_port": 0, "protocol": "any", "external_service_port": 0, "description": "my dnat rule 01" } } - Update the port range of a rule.
PUT https://{Endpoint}/v2/d199ba7e0ba64899b2e81518104b1526/dnat_rules/79195d50-0271-41f1-bded-4c089b2502ff { "dnat_rule": { "nat_gateway_id": "a78fb3eb-1654-4710-8742-3fc49d5f04f8", "floating_ip_id": "bf99c679-9f41-4dac-8513-9c9228e713e1", "private_ip": "192.168.1.100", "internal_service_port": 0, "protocol": "tcp", "external_service_port": 0, "description": "my dnat rule 01" , "external_service_port_range":"100-200", "internal_service_port_range":"100-200" } } - Update the description of a rule.
PUT https://{Endpoint}/v2/d199ba7e0ba64899b2e81518104b1526/dnat_rules/79195d50-0271-41f1-bded-4c089b2502ff { "dnat_rule": { "nat_gateway_id": "a78fb3eb-1654-4710-8742-3fc49d5f04f8", "description": "my dnat rule 01" } }
- Update a rule to apply to a specific port.
- Example response
- Response to update a rule that applies to a specific port
{ "dnat_rule": { "status": "ACTIVE", "nat_gateway_id": "a78fb3eb-1654-4710-8742-3fc49d5f04f8", "admin_state_up": true, "port_id": "9a469561-daac-4c94-88f5-39366e5ea193", "internal_service_port": 993, "protocol": "tcp", "tenant_id": "abc", "floating_ip_id": "cf99c679-9f41-4dac-8513-9c9228e713e1", "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, "description": "my dnat rule 01" } } - Response to update a rule that applies to all ports
{ "dnat_rule": { "status": "ACTIVE", "nat_gateway_id": "a78fb3eb-1654-4710-8742-3fc49d5f04f8", "admin_state_up": true, "private_ip": "192.168.1.100", "internal_service_port": 0, "protocol": "any", "tenant_id": "abc", "floating_ip_id": "bf99c679-9f41-4dac-8513-9c9228e713e1", "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, "description": "my dnat rule 01" } } - Response to update the port range of a rule
{ "dnat_rule": { "status": "ACTIVE", "nat_gateway_id": "a78fb3eb-1654-4710-8742-3fc49d5f04f8", "admin_state_up": true, "private_ip": "192.168.1.100", "internal_service_port": 0, "protocol": "tcp", "tenant_id": "abc", "floating_ip_id": "bf99c679-9f41-4dac-8513-9c9228e713e1", "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, "description": "my dnat rule 01", "internal_service_port_range": "100-200", "external_service_port_range": "100-200" } } - Response to update the description of a rule
{ "dnat_rule": { "status": "ACTIVE", "nat_gateway_id": "a78fb3eb-1654-4710-8742-3fc49d5f04f8", "admin_state_up": true, "port_id": "9a469561-daac-4c94-88f5-39366e5ea193", "private_ip": "", "internal_service_port": 993, "protocol": "tcp", "tenant_id": "abc", "floating_ip_id": "cf99c679-9f41-4dac-8513-9c9228e713e1", "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, "description": "my dnat rule 01" } }
- Response to update a rule that applies to a specific port
Status Code
See Status Codes.
Last Article: Querying Details About a Specified DNAT Rule
Next Article: Deleting a DNAT Rule
Did this article solve your problem?
Thank you for your score!Your feedback would help us improve the website.