NAT
获取Endpoint
在确认您使用SDK配置Endpoint时,可先阅读开发人员指南中关于 VPC服务域名的部分,理解Endpoint相关的概念。 百度智能云目前开放了多区域支持,请参考区域选择说明中网络产品VPC的部分,NAT服务是VPC服务的一部分,使用VPC服务域名。
获取密钥
要使用百度云产品,您需要拥有一个百度云账号和一个有效的 AK(Access Key ID)、SK(Secret Access Key)用来进行签名认证。可以通过如下步骤获得并了解您的AK/SK信息: 1. 注册百度云账号 2. 创建AK/SK
NatClient
NatClient是NAT服务的java客户端,NatClient将NAT服务的API进行封装,简化了开发者与NAT服务的交互,用户可调用NatClient中的方法对NAT网关进行配置。
新建NatClient
新建NatClient时,需要先使用Endpoint、AK、SK对NatClientConfiguration类型config实例进行配置,再使用config实例对NatClient进行配置,配置示例如下:
static final String HOST = "";
static final String AK = "";
static final String SK = "";
NatClientConfiguration config = new NatClientConfiguration();
config.setCredentials(new DefaultBceCredentials(AK, SK));
config.setEndpoint(HOST);
NatClient natClient = new NatClient(config);
创建NAT网关
可以使用createNat函数在指定VPC内创建NAT网关,函数定义如下:
public CreateNatResponse createNat(CreateNatRequest request)
CreateNatRequest、CreateNatResponse定义见代码目录:nat/model/ 其中参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
name | String | 是 | NAT网关的名称,由大小写字母、数字以及-_ /.特殊字符组成,必须以字母开头,长度1-65 |
vpcId | String | 是 | NAT网关所属VPC的ID |
eips | List<String> | 否 | NAT网关绑定的EIP |
spec | String | 是 | NAT网关的大小,有small(最多支持绑定5个公网IP)、medium(最多支持绑定10个公网IP)、large(最多支持绑定15个公网IP)三种 |
billing | 自定义Billing类型 | 是 | 计费方式,支持后付费以及按月预付费购买,详见计费说明 |
其中自定义Billing类型定义见Billing.java
查询NAT网关列表
可以使用listNat函数查询NAT网关列表,若指定查询条件,则按查询条件进行筛选,若不提供查询条件,则默认查询所有NAT网关,函数定义如下:
public ListNatResponse listNat(ListNatRequest request)
ListNatRequest、ListNatResponse定义见代码目录:nat/model/
参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
vpcId | String | 是 | NAT网关所属VPC的ID |
natId | String | 否 | NAT网关的ID |
name | String | 否 | NAT网关的名称 |
ip | String | 否 | 网关绑定的IP地址 |
marker | String | 否 | 批量获取列表的查询的起始位置 |
maxKeys | int | 否 | 每页包含的最大数量,最大数量不超过1000。缺省值为1000 |
查询NAT网关详情
可以使用getNat函数查询NAT详情,函数定义如下:
public GetNatResponse getNat(String natId)
GetNatResponse定义见代码目录:nat/model/ 参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
更新NAT网关名称
可以使用modifyNat函数更新NAT网关名称,函数定义如下:
public void modifyNat(ModifyNatRequest request)
ModifyNatRequest定义见代码目录:nat/model/ 参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
name | String | 是 | NAT网关的新名称 |
绑定EIP
可以使用bindEip函数为NAT网关绑定EIP,函数定义如下:
public void bindEip(BindEipRequest request)
BindEipRequest定义见代码目录:nat/model/
参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
eips | List<String> | 是 | NAT网关需要绑定的EIP |
解绑EIP
可以使用unbindEip函数为NAT网关解绑EIP,函数定义如下:
public void unbindEip(BindEipRequest request)
BindEipRequest定义见代码目录:nat/model/ 参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
eips | List<String> | 是 | NAT网关需要解绑的EIP |
释放NAT网关
可以使用releaseNat函数释放NAT网关,函数定义如下:
public void releaseNat(ReleaseNatRequest request)
ReleaseNatRequest定义见代码目录:nat/model/ 参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
NAT网关续费
可以使用purchaseReservedNat函数对NAT网关进行续费操作,仅预付费类型支持续费操作,函数定义如下:
public void purchaseReservedNat(PurchaseReservedNatRequest request)
PurchaseReservedNatRequest定义见代码目录:nat/model/ 参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
billing | 自定义Billing类型 | 是 | 计费方式,详见计费说明 |
其中自定义Billing类型定义见Billing.java
绑定DNAT EIP
可以使用bindDnatEip函数为NAT网关绑定DNAT EIP,函数定义如下:
public void bindDnatEip(BindDnatEipRequest request)
BindDnatEipRequest定义见代码目录:nat/model/
参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | 绑定EIP的NAT网关ID |
dnatEips | List<String> | 是 | 绑定NAT网关的DNAT EIP列表。如果是EIP,只能绑定一个EIP,如果是共享带宽,可以绑定共享带宽中的多个IP |
解绑DNAT EIP
可以使用unbindDnatEip函数为NAT网关解绑DNAT EIP,函数定义如下:
public void unbindDnatEip(BindDnatEipRequest request)
BindDnatEipRequest定义见代码目录:nat/model/ 参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | 解绑EIP的NAT网关ID |
dnatEips | List<String> | 是 | 解绑DNAT绑定 EIP 列表 |
创建SNAT规则
可以使用createSnatRule函数在指定NAT网关内创建SNAT规则,函数定义如下:
public CreateNatRuleResponse createSnatRule(CreateSnatRuleRequest request)
CreateSnatRuleRequest、CreateNatRuleResponse定义见代码目录:nat/model/ 其中参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
ruleName | String | 是 | 规则名称,由大小写字母、数字以及-_ /.特殊字符组成,必须以字母开头,长度1-65 |
publicIpsAddress | List<String> | 是 | 公网IPs,关联在NAT网关SNAT上的EIP或共享带宽中的IPs |
sourceCIDR | String | 是 | 内网IP/网段 |
删除SNAT规则
可以使用deleteSnatRule函数在指定NAT网关内删除指定SNAT规则,函数定义如下:
public void deleteSnatRule(DeleteNatRuleRequest request)
DeleteNatRuleRequest定义见代码目录:nat/model/ 其中参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
ruleId | String | 是 | SNAT规则ID |
更新SNAT规则
可以使用updateSnatRule函数在指定NAT网关内更新指定SNAT规则,函数定义如下:
public void updateSnatRule(UpdateSnatRuleRequest request)
UpdateSnatRuleRequest定义见代码目录:nat/model/ 其中参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
ruleId | String | 是 | SNAT规则ID |
ruleName | String | 否 | SNAT规则名字 |
sourceCIDR | String | 否 | 内网IP/网段 |
publicIpsAddress | List<String> | 否 | 公网IPs |
查询SNAT规则
可以使用listSnatRule函数在指定NAT网关内查询SNAT规则,函数定义如下:
public ListSnatRuleResponse listSnatRule(String natId)
public ListSnatRuleResponse listSnatRule (ListNatRuleRequest request)
ListNatRuleRequest、ListSnatRuleResponse定义见代码目录:nat/model/ 其中参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
创建DNAT规则
可以使用createDnatRule函数在指定NAT网关内创建DNAT规则,函数定义如下:
public CreateNatRuleResponse createDnatRule(CreateDnatRuleRequest request)
CreateDnatRuleRequest、CreateNatRuleResponse定义见代码目录:nat/model/ 其中参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
ruleName | String | 否 | 规则名称,由大小写字母、数字以及-_ /.特殊字符组成,必须以字母开头,长度1-65 |
publicIpsAddress | List<String> | 是 | 公网IP,关联在NAT网关DNAT上的EIP或共享带宽中的IP |
privateIpAddress | String | 是 | 内网IP |
protocol | String | 是 | 协议,支持TCP、UDP、all |
publicPort | String | 否 | 公网端口(1-65535),协议为TCP、UDP必须传 |
privatePort | String | 否 | 内网端口(1-65535),协议为TCP、UDP必须传 |
删除DNAT规则
可以使用deleteDnatRule函数在指定NAT网关内删除指定DNAT规则,函数定义如下:
public void deleteDnatRule(DeleteNatRuleRequest request)
DeleteNatRuleRequest定义见代码目录:nat/model/ 其中参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
ruleId | String | 是 | DNAT规则ID |
更新DNAT规则
可以使用updateDnatRule函数在指定NAT网关内更新指定DNAT规则,函数定义如下:
public void updateDnatRule(UpdateDnatRuleRequest request)
UpdateDnatRuleRequest定义见代码目录:nat/model/ 其中参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |
ruleId | String | 是 | DNAT规则ID |
ruleName | String | 否 | DNAT规则名字 |
protocol | String | 否 | 协议,支持TCP、UDP、all |
publicPort | Integer | 否 | 公网端口 |
privatePort | Integer | 否 | 内网端口 |
privateIpAddress | String | 否 | 内网IP |
publicIpAddress | String | 否 | 公网IP |
查询DNAT规则
可以使用listDnatRule函数在指定NAT网关内查询DNAT规则,函数定义如下:
public ListDnatRuleResponse listDnatRule(String natId)
public ListDnatRuleResponse listDnatRule (ListNatRuleRequest request)
ListNatRuleRequest、ListDnatRuleResponse定义见代码目录:nat/model/ 其中参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
natId | String | 是 | NAT网关的ID |