如何解决在使用 NAT 实例时出现的间歇性连接问题?

2 分钟阅读
0

我正在使用 NAT 实例将实例连接到 Amazon Virtual Private Cloud(Amazon VPC)子网中的互联网。但是,这些实例存在间歇性连接问题。

简短描述

间歇性连接问题可能与以下内容有关:

  • 源端的端口耗尽
  • 网络访问控制列表(网络 ACL)规则
  • 网络问题

解决方法

减少源端的端口耗尽

验证私有子网中的实例是否已达到其操作系统级别连接限制。如需获取活动连接的数量,请运行 netstat 命令。

Linux:

netstat -ano | grep ESTABLISHED | wc --l
netstat -ano | grep TIME_WAIT | wc --l

Windows:

netstat -ano | find /i "estab" /c
netstat -ano | find /i "TIME_WAIT" /c

**注意:**如果您将 TCP 参数配置为在 TIME_WAIT 状态下重用端口,请从前面的命令中删除 TIME_WAIT

如果该命令返回的值接近允许的本地端口范围(客户端连接的源端口),则可能会出现端口耗尽的情况。如需减少端口耗尽,请尝试下列其中一个解决方案。

运行下列命令来增加操作系统的临时端口范围:

对于 Windows,以管理员身份运行:

netsh int ipv4 set dynamicport tcp start=1025 num=61000

对于 Linux,以 root 用户身份运行:

$echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range

**注意:**根据分配的类型,请在重启期间永久设置前面的参数。

-或者-

解决耗尽可用连接的任何应用程序级别问题。

验证网络 ACL 规则是否允许临时端口范围的流量

公有子网和私有子网的网络 ACL 必须允许临时端口范围(1024-65535)的流量。

例如,如需允许您的 Amazon Elastic Compute Cloud(Amazon EC2)实例访问 HTTPS 网站,与私有子网关联的网络 ACL 必须具有下列规则:

入站规则:

协议端口范围允许/拒绝
PUBLIC_IPTCP1024-65535允许

出站规则:

目标协议端口范围允许/拒绝
PUBLIC_IPTCP443允许

与 NAT 实例子网关联的网络 ACL 必须具有下列规则:

入站规则:

协议端口范围允许/拒绝
VPC CIDRTCP443允许
PUBLIC_IPTCP1024-65535允许

出站规则:

目标协议端口范围允许/拒绝
PUBLIC_IPTCP443允许
VPC CIDRTCP1024-65535允许

如果出现以下情况,则流量会中断:

  • 网络 ACL 仅允许临时端口范围的子集。
  • 私有子网或 NAT 实例中的实例使用临时端口范围之外的源端口。

检查是否存在网络问题

如果源、NAT、网络介质或目标的网络性能下降,则可能会遇到连接问题。要解决此问题,请参阅如何通过互联网网关解决 VPC 中的 Amazon EC2 Linux 实例与本地主机之间的网络性能问题?

当网络超过实例级别的最大值时,您也可能会遇到网络问题。对于支持的实例类型,您可以使用 Elastic Network Adaptor(ENA)中的网络性能指标来监控流量何时超过最大值。要了解详细信息,请参阅监控 EC2 实例的网络性能

相关信息

临时端口


AWS 官方
AWS 官方已更新 2 年前