NAT网关的基本操作
引导式阅读
Java
NAT网关的基本操作
作者
C***
上架时间
2021-06-28 11:03:40

版本说明

本示例基于华为云SDK V2.0版本开发,高版本示例正在开发中。

功能介绍

NAT网关分为公网NAT网关和私网NAT网关,它能够为虚拟私有云内的云主机或者通过云专线接入虚拟私有云的本地数据中心的服务器提供地址转换服务,从而使其达到访问Internet、为互联网提供服务、为私网提供服务的目的。本示例展示的是创建NAT网关、查询NAT网关列表、查询指定的NAT网关详情、更新NAT网关、删除NAT网关等操作。

准备工作

1.获取华为云开发工具包(SDK),您也可以查看安装JAVA SDK

2.华为云 Java SDK 支持两种认证方式,具体请查看token认证和AK/SK认证

3.华为云 Java SDK 支持 Java JDK 1.8 及其以上版本。

NAT网关管理

1.初始化客户端

参数获取可参照准备工作中token认证方式。

 // 设置认证参数
 String user = "******"; // IAM用户名
 String password = "******"; // IAM用户密码
 String projectId = "******"; // 项目ID
 String userDomainId = "******"; // 账号ID
 String authUrl = "******"; // 认证服务(IAM)的Endpoint
 
 // 初始化client
 OSClientV3 osclient = OSFactory.builderV3().endpoint(authUrl)
            .credentials(user, password, Identifier.byId(userDomainId)).scopeToProject(Identifier.byId(projectId))
            .authenticate();

2.创建NAT网关实例

字段参考说明

参数 参数类型 描述
tenant_id string 项目的ID
name string NAT网关的名字,NAT网关的名字仅支持数字、字母、_(下划线)、-(中划线)、中文
description string NAT网关的描述。
spec string 取值为:“1”:小型,SNAT最大连接数10000,“2”:中型,SNAT最大连接数50000,“3”:大型,SNAT最大连接数200000,“4”:超大型,SNAT最大连接数1000000
router_id string VPC的id。获取 router_id 的方法请参考查询VPC路由列表下的vpc_id
internal_network_id String NAT网关下行口(DVR的下一跳)所属的network id。获取 network id 的方法请参考查询子网列表下的neutron_network_id
 // 创建NAT网关参数
 String natGateWayName = "nat_gateway_create_test";
 String routerID = "22be6617-e727-436c-a905-d050ea4aead8";
 String networkID = "96afbb64-94a8-4b76-83bb-11c6edb02424";
 String natGateWayDescription = "nat_gateway_create_description";
 String spec = "3";

 // 创建NAT网关
 NatGateWayCreate natGateWayCreate = NatGateWayCreate.builder().name(natGateWayName).
            description(natGateWayDescription).routerId(routerID).internalNetworkId(networkID).spec(spec).build();
 osclient.nat().natGateWays().create(natGateWayCreate);

说明:

更多参数详情具体请参考API Explorer

3.查询NAT网关列表

字段参考说明

参数 参数类型 描述
id string NAT网关的id
limit Integer 每页返回的个数。
tenant_id String 项目的ID
name string NAT网关的名字仅支持数字、字母、_(下划线)、-(中划线)、中文
description String NNAT网关的描述。
spec String NAT网关的规格:“1”:小型,SNAT最大连接数10000,“2”:中型,SNAT最大连接数50000,“3”:大型,SNAT最大连接数200000,“4”:超大型,SNAT最大连接数1000000
router_id string 路由器的UUID
internal_network_id string NAT网关下行口(DVR的下一跳)所属的network id
status String 功能说明:NAT网关的状态,取值范围:资源状态说明
admin_state_up Boolean 解冻/冻结状态
created_at String NAT网关的创建时间戳,遵循UTC时间,保留小数点后6位,格式是yyyy-mm-dd hh:mm:ss
  osclient.nat().natGateWays().list();

说明:

  • 如无特殊说明,匹配规则为精确匹配,支持参数说明中所有非必选参数过滤

  • 更多参数详情具体请参考API Explorer

4.查询指定的NAT网关详情

字段参考说明

参数 参数类型 描述
nat_gateway_id string 所属NAT网关的id。
 String natGateWayID = "8d45f435-61f7-4a30-b955-ae40f3e3989b";
 osclient.nat().natGateWays().get(natGateWayID);

说明:

更多参数详情具体请参考API Explorer

5.更新NAT网关

字段参考说明

参数 参数类型 描述
name String NAT网关的名字仅支持数字、字母、_(下划线)、-(中划线)、中文。
description String NAT网关的描述。
spec String NAT网关的规格:“1”:小型,SNAT最大连接数10000,“2”:中型,SNAT最大连接数50000,“3”:大型,SNAT最大连接数200000,“4”:超大型,SNAT最大连接数1000000
 // 更新NAT网关的参数
 String natGateWayUpdateName = "nat_gateway_update_test";
 String natGateWayUpdateDescription = "nat_gateway_update_description";
 String updateSpec = "1";

 // 更新NAT网关操作
 NatGateWayUpdate natGateWayUpdate = NatGateWayUpdate.builder().name(natGateWayUpdateName).
            description(natGateWayUpdateDescription).spec(updateSpec).build();
    osclient.nat().natGateWays().update(natGateWayUpdate, natGateWayID);

说明:

  • admin_state_up = True & status = "ACTIVE"允许更新,支持更新名称、描述、规格

  • 更多参数详情具体请参考API Explorer

6.删除NAT网关

字段参考说明

参数 参数类型 描述
nat_gateway_id string 所属NAT网关的id。
 osclient.nat().natGateWays().delete(natGateWayID);

说明:

更多参数详情具体请参考API Explorer

参考

更多信息请参考NAT网关