我如何解决 NAT 网关上的 ErrorPortAllocation 错误?
上次更新时间:2019 年 7 月 23 日
我的 NAT 网关上总是出现 ErrorPortAllocation 错误,到我的目标端口的几个并发连接也持续失败。我如何解决此端口分配错误?
简短描述
NAT 网关最高支持每分钟 55,000 个到各目标的同时连接。如果超出此阈值,到该目标的新连接将失败,Amazon CloudWatch 中 NAT 网关的 ErrorPortAllocation 指标将增加。使用以下指导来查找导致这些错误的源客户端和目的地。然后,按照以下步骤来解决问题。
解决方法
查找源客户端及其连接目标
1.打开 CloudWatch 控制台。
2.在导航窗格中,选择详情。
3.从下拉菜单中,选择您的日志组。
4.要查找流量流向的目标,请使用以下筛选器。注意:确保将 xxx.xxx 替换为您 VPC CIDR 的前两个八位字节。此外,将 NAT 网关私有 IP 替换为 NAT 网关的私有 IP 地址。
filter (srcAddr like 'NAT gateway Private IP' and dstAddr not like 'xxx.xxx.')
| stats count(*) as numaccept by dstAddr
| sort numaccept desc
| limit 10
结果会显示收到端口分配错误的时间段内,具有最大数量的接受响应的目标 IP。
5.要查找哪个源客户端将流量发送到该目标,请使用以下筛选器。注意:确保将 xxx.xxx 替换为您 VPC CIDR 的前两个八位字节。还要将上述筛选器的公有 IP 替换为您从前一查询获知的目标 IP。
filter (dstAddr like 'Public IP from above filter' and srcAddr like 'xxx.xxx.')
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10
采取措施解决端口分配错误
- 在每个可用区中创建一个 NAT 网关,然后跨可用区分发您的客户端。将同一可用区作为您的客户端,使用 NAT 网关路由流向 Internet 的流量,以减少跨可用区的数据费用。
- 如果您注意到 CloudWatch中 IdleTimeoutCount 指标增加,则配置您的应用程序或私有实例以关闭空闲连接,以便 NAT 网关可以分配源端口到新连接。
- 限制客户端到单个目标的可连接数量。
- 如果流量流向同一区域的 Amazon Simple Storage Service (Amazon S3) 或 Amazon DynamoDB 公共 IP,请使用网关 VPC 终端节点,不要使用 NAT 网关。使用网关 VPC 终端节点不产生数据处理或小时收费。
- 如果流量流向支持接口 VPC 终端节点的 AWS 服务的公共 IP,请使用接口 VPC 终端节点,不要使用 NAT 网关。
相关信息
查询示例(适用于 CloudWatch Logs Insights)