NAT网关中SNAT规则的相关操作示例
引导式阅读
Java
NAT网关中SNAT规则的相关操作示例
作者
C***
上架时间
2021-06-28 11:03:47

版本说明

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

功能介绍

网关的SNAT功能使VPC内跨可用区的多个云主机共享公网或者外部子网IP,从而达到访问互联网或者外部子网的功能,本示例展示的是创建SNAT规则、查询SNAT规则列表、查询指定的SNAT规则详情、删除SNAT规则等操作。

准备工作

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

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

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

SNAT功能的规则管理

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();

 // SNAT规则的参数
 String eipIDForSnatRule = "91dbd312-732d-4eb0-949e-a7a09803b47b";
 String natGateWayID = "8d45f435-61f7-4a30-b955-ae40f3e3989b";
 String networkID = "247e2ef9-4625-4cfd-870a-f128f6f38acf";

2.创建SNAT规则

字段参考说明

参数 参数类型 描述
nat_gateway_id string 所属NAT网关的id
network_id string 规则使用的网络id。与cidr参数二选一。
cidr string cidr,可以是网段或者主机格式,与network_id参数二选一,Source_type=0时,cidr必须是vpc 子网网段的子集(不能相等),Source_type=1时,cidr必须指定专线侧网段
source_type Integer 0:VPC侧,可以指定network_id 或者cidr,1:专线侧,只能指定cidr,不输入默认为0(VPC)
floating_ip_id string 功能说明:弹性公网IP的id,多个弹性公网IP使用逗号分隔,取值范围:最大长度4096字节,约束:弹性公网IP的id个数不能超过20个,获取弹性公网IP的id的方法请参考查询弹性公网IP列表
 // 创建SNAT规则
 SnatRuleCreate snatRuleCreate = SnatRuleCreate.builder().natGatewayId(natGateWayID).networkId(networkID).
            floatingIpId(eipIDForSnatRule).build();
    osclient.nat().snatRules().create(snatRuleCreate);

说明:

  • 创建规则时,要求网关状态status = "ACTIVE",要求网关管理员状态admin_state_up = True

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

3.获取SNAT规则列表

字段参考说明

参数 参数类型 描述
id string SNAT规则的id
limit Integer 每页返回的个数。
tenant_id String 项目的ID
nat_gateway_id string 所属NAT网关的id。
network_id String 规则使用的网络id。
cidr String cidr,vpc 子网网段的子集或专线侧网段
source_type Integer 0:VPC侧,可以指定network_id 或者cidr,1:专线侧,只能指定cidr,不输入默认为0(VPC)
floating_ip_id String 功能说明:弹性公网IP的id
floating_ip_address String 功能说明:弹性公网IP
status String 功能说明:SNAT规则的状态,取值范围:资源状态说明
admin_state_up Boolean 解冻/冻结状态
created_at String SNAT规则的创建时间戳,遵循UTC时间,保留小数点后6位,格式是yyyy-mm-dd hh:mm:ss
 osclient.nat().snatRules().list();

说明:

  • 支持参数说明中所有非必选参数过滤。

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

4.获取SNAT规则详情

字段参考说明

参数 参数类型 描述
snat_rule_id string 所属SNAT规则的id
 String snatRuleID = "5b95c675-69c2-4656-ba06-58ff72e1d338";
    osclient.nat().snatRules().get(snatRuleID);

说明:

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

5.删除SNAT规则

字段参考说明

参数 参数类型 描述
snat_rule_id string 所属SNAT规则的id
 osclient.nat().snatRules().delete(snatRuleID);

说明:

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

参考

更多信息请参考NAT网关