添加端口转发规则
描述
在指定的端口转发表中添加端口转发规则。
每一条端口转发规则,由一个五元组组成:[ExternalIp,ExternalPort,Protocal,InternalIp,InternalPort];
端口转发规则的效果是:将ExternalIp:ExternalPort上收到的指定协议的消息,站发给InternalIp:InternalPort,并将回复消息原路返回;
每一条端口转发规则有一个唯一ID,用于进行规则修改或者规则删除;
ExternalIp相关的约束:
必须是该NatGateway上的某个带宽包中的公网IP。
端口转发规则可以指定协议,目前暂时只支持TCP和UDP两种协议,也可以指定为Any
InternalIp相关的约束
InternalIp必需属于本VPC CIDR范围。
该IP地址可以是一个存在的ECS私网IP地址,也可以是一个不存在的IP地址(可以先创建规则再创建ECS实例),或被其他非ECS资源占用的地址;
只有当InternalIp被一个ECS实例使用、且该实例没有绑定EIP时,端口转发才能生效;若该IP地址被HaVip/SLB/RDS等非ECS资源使用,则转发功能无效,外来流量无法转发到该IP上;
ExternalPort、InternalPort和IpProtocol,必须同时为Any或者同时不为Any;
最多支持40条端口转发规则
规则的唯一性要求:
所有端口转发规则的[源IP, 源端口,协议]三个字段组成的组合必须是互不重复的。即,不允许将同一个源IP、同一个端口、同一个协议的消息转发到多个目标。
所有端口转发规则的[目标IP,目标端口,协议]三个字段组成的组合也必须是互不重复的。
一个ExternalIp不能同时存在指定端口规则和All端口规则
每条端口转发规则都有状态,取值为Available |Pending |Modifying;当端口装发表中任意一条规则的状态处于Pending 或 Modifying时,不允许对端口转发表进行规则>添加
请求参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
Action | String | 是 | 系统规定参数,取值:CreateForwardEntry |
RegionId | String | 是 | Region ID |
ForwardTableId | String | 是 | ForwardTableId |
ExternalIp | String | 是 | 端口转发规则中的源IP;该IP必须是该端口转发表所属NatGateway上的共享带宽包中的IP。 |
ExternalPort | String | 是 | 源端口;取值范围:1~65535|Any |
IpProtocol | String | 是 | IpProtocol类型,可选TCP|UDP|Any |
InternalIp | String | 是 | 端口转发规则中的目标IP,是一个私网IP地址。 |
InternalPort | String | 是 | 目标端口;取值范围为1~65535|Any。 |
返回参数
名称 | 类型 | 描述 |
---|---|---|
ForwardEntryId | String | 系统分配转发表条目ID |
错误码
错误代码 | 描述 | Http 状态码 | 语义 |
---|---|---|---|
InvalidRegionId.NotFound | The specified RegionId is not found in our record. | 404 | 指定的Region ID不存在 |
InvalidForwardTableId.NotFound | Specified forward table does not exist. | 404 | 指定的转发表不存在 |
InvalidExternalIp.NotFound | Specified Source Ip address does not found on the VRouter | 404 | 指定的源IP地址在NatGatway上没有找到 |
QuotaExceeded.ForwardEntry | Forward entry quota exceeded in this route table. | 400 | 同一个转发表条目不能超过 40条 |
IncorretForwardEntryStatus | Some Forward entry status blocked this operation. | 400 | 同一个 VPC 下面的转发表中的任一个转发条目处在中间状态(添加中,修改中,删除中),不能创建转发条目 |
InvalidProtocal.ValueNotSupportedc | The specified IpProtocol does not exist or IpProtocol and ExternalPort or InternalPort do not match. | 400 | 指定协议不支持 |
InvalidInternalIp.Malformed | The specified InternalIp is not a valid IP address. | 400 | 指定的目的IP地址不合法 |
InvalidExternalIp.Malformed | The specified ExternalIp is not a valid IP address. | 400 | 指定的源IP地址不合法 |
InvalidExternalPort.Malformed | The specified ExternalPort is not a valid port. | 400 | 指定的源端口号不合法 |
InvalidInternalPort.Malformed | The specified InternalPort is not a valid port. | 400 | 指定的目的端口号不合法 |
Forbidden.PortsAndIpProtocol | ExternalPort/InternalPort/IpProtocol must be all Any or all not Any. | 400 | ExternalPort/InternalPort/IpProtocol必须同时为Any或者同时不为Any |
ForwardEntry.Duplicated.Source | The specified is duplicated | 400 | 与某条已存在的条目存在<源IP, 源端口号,协议>的冲突 |
ForwardEntry.Duplicated.Destination | The specified is duplicated | 400 | 与某条已存在的条目存在<目标IP, 目标端口号,协议>的冲突 |
Forbidden.DestnationIpOutOfVpcCIDR | The specified Destination Ip is Out of VPC CIDR | 400 | 指它目的IP地址不在本VPC CIDR |
示例
请求示例
https://ecs.aliyuncs.com/?ExternalIp=139.224.22.107&SignatureVersion=1.0&Format=json&TimeStamp=2016-05-23T03%3A53%3A18Z&RegionId=cn-shanghai&ExternalPort=Any&InternalIp=192.168.1.1&Signature=iR4GSzhJQtowMJOj%2FRth3ABP4FA%3D&AccessKeyId=jZgi0oyrQ6ihgKp9&ForwardTableId=ftb-11tc6xgmv&SignatureMethod=HMAC-SHA1&Version=2014-05-26&IpProtocol=Any&action=CreateForwardEntry&SignatureNonce=e2ceae11-2099-11e6-b548-2cf0ee28adf2&InternalPort=Any
返回示例
XML格式
暂略;
JSON格式
{ "ForwardEntryId": "fwd-119smw5tk", "RequestId": "A4AEE536-A97A-40EB-9EBE-53A6948A6928"}