1. 接口描述
接口请求域名: cfw.tencentcloudapi.com 。
新增一条或多条 NAT边界访问控制规则。
默认接口请求频率限制:20次/秒。
2. 输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数。
| 参数名称 | 必选 | 类型 | 描述 |
|---|---|---|---|
| Action | 是 | String | 公共参数,本接口取值:AddNatAcRule。 |
| Version | 是 | String | 公共参数,本接口取值:2019-09-04。 |
| Region | 否 | String | 公共参数,本接口不需要传递此参数。 |
| Rules.N | 是 | Array of CreateNatRuleItem | 要添加的 NAT 访问控制规则列表,至少一项。Direction、地址类型与内容、Protocol、RuleAction 和 Scope 会逐项校验;Description、Enable、OrderIndex 和 Scope 的缺省或归一化行为见对应字段说明。Scope 调用无业务参数的 DescribeNatRuleScopes,使用 ScopeItems[].Scope,不要使用 ScopeDesc。地址模板调用 DescribeAddressTemplateList,请求用 TemplateType=1 或 5 过滤,并确认返回项 Data[].Type 为 1 或 5;将 Data[].Uuid(mb_ 前缀)写入对应 Content,不要使用 Data[].TemplateId(ip-/dm- 前缀)。协议端口模板请求用 TemplateType=6 过滤,并将 Data[].TemplateId(pp- 前缀)写入 ParamTemplateId。资产实例调用 DescribeCfwAssets,解析返回结果后使用 assets[].instance_id;资产分组调用 DescribeResourceGroupNew,传 QueryType=resource、GroupId="0"、ShowType=all,解析返回结果后使用 GroupId;资源标签传 QueryType=tag,跳过“全部资产”根节点,以一级节点 GroupName 为 Key、所选二级子节点 GroupName 为 Value 构造 JSON 字符串 {"Key":"标签键","Value":"标签值"},不要写入 GroupId;地域调用 DescribeAclRegInfo,传 FwType=["NAT"] 并使用 Data[].RegionCode。不得使用展示名称或自行拼接。 |
| CfwAiAgentOperationSource | 否 | String | AI操作来源 枚举值:
示例值:console |
| From | 否 | String | 添加方式。省略或为空表示普通新增;insert_rule 表示指定位置新增;batch_import 表示非覆盖批量导入;batch_import_cover 表示覆盖导入,会删除当前账号中与首条规则同方向的全部可操作 NAT边界规则后再添加 Rules,添加失败时已删除的规则不会恢复,风险极高。仅支持上述取值。 示例值:insert_rule |
3. 输出参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| RuleUuid | Array of Integer | 新增规则的 ID 列表,顺序与 Rules 一致。 示例值:[8888, 8889] |
| RequestId | String | 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 |
4. 示例
示例1 普通新增 NAT 出站观察规则
新增一条出站观察规则。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddNatAcRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "192.0.2.0/24",
"SourceType": "net",
"TargetContent": "example.com",
"TargetType": "domain",
"Protocol": "HTTP",
"RuleAction": "log",
"Port": "80",
"Direction": 0,
"OrderIndex": 1,
"Enable": "true",
"Description": "观察文档站点 HTTP",
"Scope": "cfwnat-example0001"
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100001
],
"RequestId": "00000000-0000-4000-8000-000000000001"
}
}
示例2 普通新增 NAT 入站规则
新增一条作用于全部 NAT 实例的入站 TCP 放行规则,使用 RFC 5737 文档地址展示 net 类型。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddNatAcRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "192.0.2.0/24",
"SourceType": "net",
"TargetContent": "198.51.100.10",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "accept",
"Port": "443",
"Direction": 1,
"OrderIndex": -1,
"Enable": "true",
"Description": "允许入站 HTTPS 示例",
"Scope": "ALL"
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100002
],
"RequestId": "00000000-0000-4000-8000-000000000002"
}
}
示例3 插入一条 NAT 访问控制规则
使用 insert_rule 在指定位置插入一条禁用的出站规则;调用前使用 DescribeCfwRules,传 RuleType=nat、Direction=0、ExpandNames=false,将目标位置对应的 rules[].sequence 写入 OrderIndex。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddNatAcRule
<公共请求参数>
{
"From": "insert_rule",
"Rules": [
{
"SourceContent": "192.0.2.0/24",
"SourceType": "net",
"TargetContent": "198.51.100.20",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "8443",
"Direction": 0,
"OrderIndex": 1066,
"Enable": "false",
"Description": "插入 NAT 观察规则",
"Scope": "ALL"
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100003
],
"RequestId": "00000000-0000-4000-8000-000000000003"
}
}
示例4 批量导入两条 NAT 规则
使用非覆盖的 batch_import 新增两条禁用的出站规则;该方式不会删除已有规则。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddNatAcRule
<公共请求参数>
{
"From": "batch_import",
"Rules": [
{
"SourceContent": "192.0.2.41",
"SourceType": "net",
"TargetContent": "198.51.100.41",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "批量 NAT 规则一",
"Scope": "ALL"
},
{
"SourceContent": "192.0.2.42",
"SourceType": "net",
"TargetContent": "198.51.100.42",
"TargetType": "net",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "8443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "批量 NAT 规则二",
"Scope": "ALL"
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100004,
100005
],
"RequestId": "00000000-0000-4000-8000-000000000004"
}
}
示例5 使用协议端口模板新增 NAT 规则
使用协议端口模板新增一条 NAT 规则。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddNatAcRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "192.0.2.70",
"SourceType": "net",
"TargetContent": "198.51.100.70",
"TargetType": "net",
"Protocol": "ANY",
"RuleAction": "log",
"Port": "-1/-1",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "协议端口模板观察规则",
"ParamTemplateId": "pp-maatbnad",
"Scope": "ALL"
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100006
],
"RequestId": "00000000-0000-4000-8000-000000000005"
}
}
示例6 观察广东来源访问指定实例
用户要求观察广东来源访问指定实例时,调用 DescribeAclRegInfo,传 FwType=["NAT"],从 Data 中匹配 RegionName=广东省并使用 RegionCode=gd44;调用 DescribeCfwAssets 获取目标 assets[].instance_id。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddNatAcRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "gd44",
"SourceType": "location",
"TargetContent": "ins-xxxxxxxx",
"TargetType": "instance",
"Protocol": "ANY",
"RuleAction": "log",
"Port": "-1/-1",
"Direction": 1,
"OrderIndex": -1,
"Enable": "false",
"Description": "观察广东来源访问指定实例",
"Scope": "ALL"
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100007
],
"RequestId": "00000000-0000-4000-8000-000000000006"
}
}
示例7 添加实例出站 DNS 宽松和严格匹配规则
用户要求实例按域名解析结果访问外部服务时,调用 DescribeCfwAssets 获取来源 assets[].instance_id。dnsparse 在 Host/SNI 匹配或目的 IP 属于当前 DNS 解析结果时命中,domainiptwoverify 要求两个条件同时满足。
输入示例
POST / HTTP/1.1
Host: cfw.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddNatAcRule
<公共请求参数>
{
"Rules": [
{
"SourceContent": "ins-xxxxxxxx",
"SourceType": "instance",
"TargetContent": "example.com",
"TargetType": "dnsparse",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "观察实例 DNS 宽松匹配流量",
"Scope": "ALL"
},
{
"SourceContent": "ins-xxxxxxxx",
"SourceType": "instance",
"TargetContent": "example.org",
"TargetType": "domainiptwoverify",
"Protocol": "TCP",
"RuleAction": "log",
"Port": "443",
"Direction": 0,
"OrderIndex": -1,
"Enable": "false",
"Description": "观察实例 DNS 严格匹配流量",
"Scope": "ALL"
}
]
}
输出示例
{
"Response": {
"RuleUuid": [
100008,
100009
],
"RequestId": "00000000-0000-4000-8000-000000000007"
}
}
5. 开发者资源
腾讯云 API 平台
腾讯云 API 平台 是综合 API 文档、错误码、API Explorer 及 SDK 等资源的统一查询平台,方便您从同一入口查询及使用腾讯云提供的所有 API 服务。
API Inspector
用户可通过 API Inspector 查看控制台每一步操作关联的 API 调用情况,并自动生成各语言版本的 API 代码,也可前往 API Explorer 进行在线调试。
SDK
云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言,能更方便的调用 API。
- Tencent Cloud SDK 3.0 for Python: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Java: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for PHP: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Go: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Node.js: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for .NET: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for C++: CNB, GitHub, Gitee
- Tencent Cloud SDK 3.0 for Ruby: CNB, GitHub, Gitee
命令行工具
6. 错误码
以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码。
| 错误码 | 描述 |
|---|---|
| AuthFailure | CAM签名/鉴权错误。 |
| DryRunOperation | DryRun 操作,代表请求将会是成功的,只是多传了 DryRun 参数。 |
| FailedOperation | 操作失败。 |
| InternalError | 内部错误。 |
| InvalidParameter | 参数错误。 |
| InvalidParameterValue | 参数取值错误。 |
| LimitExceeded | 超过配额限制。 |
| MissingParameter | 缺少参数错误。 |
| OperationDenied | 操作被拒绝。 |
| RequestLimitExceeded | 请求的次数超过了频率限制。 |
| ResourceInUse | 资源被占用。 |
| ResourceInsufficient | 资源不足。 |
| ResourceNotFound | 资源不存在。 |
| ResourceUnavailable | 资源不可用。 |
| ResourcesSoldOut | 资源售罄。 |
| UnauthorizedOperation | 未授权操作。 |
| UnknownParameter | 未知参数错误。 |
| UnsupportedOperation | 操作不支持。 |