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")