我如何解决 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)

使用 Amazon CloudWatch 监控 NAT 网关

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?