Network Address Translation (NAT)

NAT Gateway

The NAT Gateway service provides the network address translation (NAT) function for servers, such as Elastic Cloud Servers (ECSs), Bare Metal Servers (BMSs), and Workspace desktops, in a Virtual Private Cloud (VPC) or servers that connect to a VPC through Direct Connect or Virtual Private Network (VPN) in local data centers, allowing these servers to share elastic IP addresses (EIPs) to access the Internet or to provide services accessible from the Internet.

List Private NAT Gateways

This interface is used to query Private NAT gateway list and to filter the output with query parameters. Gateway.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

for gateway in conn.natv3.private_nat_gateways():
    print(gateway)

Get Private NAT Gateway

This interface is used to get a Private NAT gateway by ID Gateway.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

gateway = "gateway_id"
gateway = conn.natv3.get_private_nat_gateway(gateway)
print(gateway)

Create Private NAT Gateway

This interface is used to create a Private NAT gateway Gateway.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

downlink_vpc = {
    "vpc_id": "3cb66d44-9f75-4237-bfff-e37b14d23ad2",
    "virsubnet_id": "373979ee-f4f0-46c5-80e3-0fbf72646b70",
    "ngport_ip_address": "10.0.0.17",
}
gateway_attrs = {
    "name": "nat_001",
    "description": "my private nat gateway 01",
    "downlink_vpcs": [downlink_vpc],
    "spec": "1",
}

gateway = conn.natv3.create_private_nat_gateway(**gateway_attrs)
print(gateway)

Delete Private NAT Gateway

This interface is used to delete the Private NAT gateway Gateway.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

gateway = "gateway_id"
gateway = conn.natv3.get_private_nat_gateway(gateway)
conn.natv3.delete_private_nat_gateway(gateway)

Update Private NAT Gateway

This interface is used to update a Private NAT gateway Gateway.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

attrs = {"name": "updated_name", "description": "updated description", "spec": "Small"}

gateway = "gateway_id"
gateway = conn.natv3.get_private_nat_gateway(gateway)
response = conn.natv3.update_private_nat_gateway(gateway, **attrs)
print(response)

DNAT

The DNAT function enables servers that share the same EIPs in a VPC to provide services accessible from the Internet through the IP address mapping and port mapping.

List Private DNAT Rules

This interface is used to query a DNAT rule list and to filter the output with query parameters. PrivateDnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

for dnat_rule in conn.natv3.private_dnat_rules():
    print(dnat_rule)

Create Private DNAT Rules

This interface is used to create a DNAT rule. PrivateDnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

dnat_rule_attrs = {
    "gateway_id": "0adefb29-a6c2-48a5-8637-2be67fa03fec",
    "transit_ip_id": "3faa719d-6d18-4ccb-a5c7-33e65a09663e",
    "network_interface_id": "dae9393a-b536-491c-a5a2-72edc1104707",
    "protocol": "tcp",
    "internal_service_port": 22,
    "transit_service_port": 22,
}

dnat_rule = conn.natv3.create_private_dnat_rule(**dnat_rule_attrs)
print(dnat_rule)

Get Private DNAT Rule

This interface is used to query details about a specified DNAT rule. PrivateDnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

dnat_rule = conn.natv3.get_private_dnat_rule("24dd6bf5-48f2-4915-ad0b-5bb111d39c83")

Update Private DNAT Rule

This interface is used to update a specified DNAT rule. PrivateDnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

dnat_rule = conn.natv3.update_private_dnat_rule(

Delete Private DNAT Rule

This interface is used to delete a specified DNAT rule. PrivateDnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

conn.natv3.delete_private_dnat_rule("24dd6bf5-48f2-4915-ad0b-5bb111d39c83")

SNAT

The SNAT function enables servers in a VPC or connected networks to use transit IP addresses for outbound private address translation.

List Private SNAT Rules

This interface is used to query an SNAT rule list and to filter the output with query parameters. PrivateSnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

for snat_rule in conn.natv3.private_snat_rules():
    print(snat_rule)

Get Private SNAT Rule

This interface is used to query details about a specified SNAT rule. PrivateSnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

snat_rule = conn.natv3.get_private_snat_rule("snat_rule_id")

Create Private SNAT Rule

This interface is used to create an SNAT rule. PrivateSnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

snat_rule_attrs = {
    "gateway_id": "80da6f26-94eb-4537-97f0-5a56f4d04cfb",
    "virsubnet_id": "5b9ea497-727d-4ad0-a99e-3984b3f5aaed",
    "transit_ip_ids": ["36a3049a-1682-48b3-b1cf-cb986a3350ef"],
    "description": "my_snat_rule01",
}

Update Private SNAT Rule

This interface is used to update a specified SNAT rule. PrivateSnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

snat_rule = conn.natv3.update_private_snat_rule(
    "af4dbb83-7ca0-4ed1-b28b-668c1f9c6b81",
    description="my_snat_rule_update",

Delete Private SNAT Rule

This interface is used to delete a specified SNAT rule. PrivateSnat.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

conn.natv3.delete_private_snat_rule("af4dbb83-7ca0-4ed1-b28b-668c1f9c6b81")

Transit IP Addresses

Transit IP addresses are used by private NAT gateways for private network address translation.

List Private Transit IP Addresses

This interface is used to query transit IP addresses and to filter the output with query parameters. PrivateTransitIp.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

for transit_ip in conn.natv3.private_transit_ips():
    print(transit_ip)

Get Private Transit IP Address

This interface is used to query details about a specified transit IP address. PrivateTransitIp.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

transit_ip = conn.natv3.get_private_transit_ip("a2845109-3b2f-4627-b08f-09a726c0a6e7")
print(transit_ip)

Create Private Transit IP Address

This interface is used to assign a transit IP address. PrivateTransitIp.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

transit_ip = conn.natv3.create_private_transit_ip(
    virsubnet_id="2759da7b-8015-404c-ae0a-a389007b0e2a",
    ip_address="192.168.1.68",
    enterprise_project_id="2759da7b-8015-404c-ae0a-a389007b0e2a",
    tags=[{"key": "key1", "value": "value1"}],
)
print(transit_ip)

Delete Private Transit IP Address

This interface is used to delete a transit IP address. PrivateTransitIp.


import openstack

openstack.enable_logging(True)
conn = openstack.connect(cloud="otc")

conn.natv3.delete_private_transit_ip("a2845109-3b2f-4627-b08f-09a726c0a6e7")