示例2:创建公网NAT网关并配置DNAT规则
操作场景
本章节指导用户通过调用API来创建DNAT规则。API的调用方法请参见如何调用API。
前提条件
- 已创建VPC和子网,具体参见创建云服务器所需要的VPC和子网。
- 确认VPC下没有默认路由(“华北-北京四”区域无此限制)。
- 创建规则时,要求网关状态status = "ACTIVE",要求网关管理员状态admin_state_up = True。
- 当您使用Token认证方式完成认证鉴权时,需要获取用户Token并在调用接口时增加“X-Auth-Token”到业务接口请求消息头中。Token认证,具体操作请参考认证鉴权。
通过IAM服务获取到的Token有效期为24小时,需要使用同一个Token鉴权时,可以先将Token缓存,避免频繁调用。
操作步骤
- 预置NAT网关。
- 确定所用的VPC。
- 查询VPC列表
URI格式:GET /v1/{project_id}/vpcs
详情请参见查询VPC列表。
- 根据实际需要选择VPC并确认VPC下没有默认路由,然后记录VPC的id。
- 查询VPC列表
- 确定所用VPC下的子网。
- 查询所用的VPC下的子网列表
URI格式:GET /v1/{project_id}/subnets?vpc_id={vpc_id}
详情请参见查询子网列表。
- 根据实际需要选择子网,并记录子网的id。
- 查询所用的VPC下的子网列表
- 创建公网NAT网关。
- 接口相关信息
URI格式:POST /v2/{project_id}/nat_gateways
详情请参见创建公网NAT网关。
- 请求示例
POST https://{Endpoint}/v2/27e25061336f4af590faeabeb7fcd9a3/nat_gateways
{endpoint}信息请从地区和终端节点获取。
- 响应示例
{ "nat_gateway": { "name": "nat_001", "description": "my nat gateway 01", "router_id": "d84f345c-80a1-4fa2-a39c-d0d397c3f09a", "internal_network_id": "89d66639-aacb-4929-969d-07080b0f9fd9", "spec": "1", "enterprise_project_id": "0aad99bc-f5f6-4f78-8404-c598d76b0ed2" } }
- 接口相关信息
- 确定公网NAT网关创建成功,并且网关状态为active。
URI格式:GET /v2/{project_id}/nat_gateways/{nat_gateway_id}
详情请参见查询指定的公网NAT网关详情。
- 记录新创建的公网NAT网关的id和对应的internal_network_id。
- 确定所用的VPC。
- 确定待使用的弹性云服务器。
- 查询云服务器详情列表。
URI格式:GET https://{endpoint}/v1/{project_id}/cloudservers/detail
详情请参见查询云服务器详情列表。
- 根据实际需要选择弹性云服务器,并记录弹性云服务器的对应的网卡端口id。
- 查询云服务器详情列表。
- 确定待使用的弹性公网IP。
- 查询弹性公网IP资源。
URI格式:GET /v1/{project_id}/publicips
详情请参见查询弹性公网IP列表。
- 根据实际需要选择弹性EIP,并记录弹性EIP的id。
- 查询弹性公网IP资源。
- 创建DNAT规则。
- 接口相关信息
URI格式: POST /v2/{project_id}/dnat_rules
接口约束及请求参数说明详情,请参见创建DNAT规则。
- 请求示例
POST https://{Endpoint}/v2/27e25061336f4af590faeabeb7fcd9a3/dnat_rules
{endpoint}信息请从地区和终端节点获取。
Body:
{ "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, "description": "my dnat rule 01" } }
- 响应示例
{ "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", "external_service_port": 242, "floating_ip_address": "5.21.11.226", "description": "my dnat rule 01" } }
- 接口相关信息
- 确认DNAT规则创建成功。
- 接口相关信息
URI格式: GET /v2/{project_id}/dnat_rules/{dnat_rule_id}
详情请参见查询指定的DNAT规则详情。
- 请求示例
GET https://{Endpoint}/v2/27e25061336f4af590faeabeb7fcd9a3/dnat_rules/5b95c675-69c2-4656-ba06-58ff72e1d338
{endpoint}信息请从地区和终端节点获取。
- 响应示例
{ "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", "external_service_port": 242, "floating_ip_address": "5.21.11.226", "description": "my dnat rule 01" } }
- 接口相关信息