我正在使用 NAT 实例将实例连接到 Amazon Virtual Private Cloud (VPC) 子网中的互联网。但是,这些实例存在间歇性连接问题。
简短描述
间歇性连接问题可能是由以下原因引起的:
- 源端的端口耗尽。
- 网络访问控制列表(网络 ACL)规则。
- 网络连接问题。
解决方法
减少源端的端口耗尽
首先验证私有子网中的实例是否已达到其操作系统级别连接限制。如需获取活动连接的数量,请运行 netstat 命令。
Linux:
netstat -ano | grep ESTABLISHED | wc --lnetstat -ano | grep TIME_WAIT | wc --l
Windows:
netstat -ano | find /i "estab" /cnetstat -ano | find /i "TIME_WAIT" /c
注意: 如果您将 TCP 参数配置为在 TIME_WAIT 状态下重用端口,请从前面的命令中删除 TIME_WAIT。
如果该命令返回的值接近允许的总端口范围,则可能会出现端口耗尽的情况。
接下来,通过增加操作系统的临时端口范围来减少端口耗尽。
在 Windows 中,以管理员身份运行以下命令:
netsh int ipv4 set dynamicport tcp start=1025 num=61000
对于 Linux,以根用户身份运行以下命令:
echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
**注意:**根据您的 Linux 发行版,在重启期间永久设置先前的参数。或者解决所有使用可用连接的应用程序级别问题。
验证网络 ACL 规则是否允许临时端口范围的流量
公共子网和私有子网的网络 ACL 必须允许临时端口范围的流量。有关设置网络 ACL 规则的详细信息,请参阅使用网络 ACL。有关 NAT 网关所需端口范围的信息,请参阅临时端口。
检查网络连接
如果源、NAT、网络介质或目标的网络性能下降,则可能会遇到连接问题。要解决此问题,请参阅如何解决 VPC 中的 EC2 Linux 或 Windows 实例与本地主机之间通过互联网网关通信时的网络性能问题?
如果网络在实例级别超过其网络最大值,您也会遇到网络问题。有关详细信息,请参阅监控 EC2 实例上的 ENA 设置的网络性能。