我想對我在私有 Amazon Virtual Private Cloud (Amazon VPC) 上使用 NAT 閘道時出現的連線問題進行疑難排解。
簡短描述
由於下列原因,私有子網路資源可能會遇到連線逾時、突然中斷或連線速度緩慢:
- 對臨時連接埠範圍的網路存取控制清單 (網路 ACL) 規則限制
- NAT 閘道上的 ErrorPortAllocation 錯誤
- 用戶端執行個體上的連接埠耗盡
- 由於閒置連線導致的 IdleTimeoutCount 錯誤
- NAT 閘道頻寬限制
解決方法
對臨時連接埠範圍的網路 ACL 規則限制
請確定與 NAT 閘道公用子網路相關聯的網路 ACL 允許來自臨時連接埠範圍 1024-65535 的流量。
如果網路 ACL 僅允許範圍的子集,而用戶端使用了範圍以外的連接埠,則流量會下降。如需詳細資訊,請參閱範例: 具有私有子網路和 NAT 中的伺服器的 VPC。
NAT 閘道上的 ErrorPortAllocation 錯誤
每個 NAT 閘道最多支援對每個目的地建立 55,000 個同時連線。如果連線數超過此閾值,則與目的地的新連線會失敗,且 Amazon CloudWatch 中 NAT 閘道的 ErrorPortAllocation 指標會增加。
若要解決此問題,請執行下列動作:
- 將一個主要 IPv4 位址和最多七個次要 IPv4 位址與您的 NAT 閘道建立關聯。
- 新增次要 IPv4 位址可以增加可用的連接埠數量,並擴充同時連線的數量。
**注意:**次要 IPv4 位址能增加可用的連接埠數量,因此工作負載可使用的 NAT 閘道同時連線數也會隨之提升。
如需詳細資訊,請參閱如何解決 Amazon VPC 中 NAT 閘道上的「ErrorPortAllocation」錯誤?
用戶端執行個體上的連接埠耗盡
私有子網路中的用戶端執行個體可能已達到其作業系統 (OS) 連線配額上限。
若要檢查作用中連線的數目,請執行下列命令:
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
如果輸出的數值接近允許的本機連接埠範圍,則問題可能是連接埠耗盡導致的。
若要減少連接埠耗盡,請執行下列動作:
**注意:**擴大連接埠範圍可能無法解決連接埠分配問題,因為無訊息連線關閉。
由於閒置連線導致的 IdleTimeoutCount 錯誤
NAT 閘道會將閒置超過 350 秒的連線逾時,並導致 IdleTimeoutCount 指標激增。然後,NAT 閘道會向嘗試恢復逾時連線的用戶端傳送 TCP 重設 (RST) 封包,而不是 TCP 結束 (FIN) 封包。
若要解決 IdleTimeoutCount 錯誤,請執行下列動作:
- 查看 Amazon CloudWatch 中的 IdleTimeoutCount 指標以識別閒置連線。
- 使用 CloudWatch Contributor Insights 查看導致用戶端保持閒置狀態的原因。
- 關閉用戶端的閒置連線以釋放容量。
- 在長時間運作的連線上啟動更頻繁的流量傳輸。
- 在值小於 350 秒的用戶端執行個體上開啟 TCP Keepalive。
NAT 閘道頻寬限制
NAT 閘道的起始頻寬為 5 Gbps,可自動擴展至 100 Gbps。如果所有使用 NAT 閘道的執行個體組合網路輸送量達到 100 Gbps,則流量會變慢。如需詳細資訊,請參閱 NAT 閘道指標和維度。
若要解決 NAT 閘道的頻寬限制,請將流量分配到不同子網路中的多個 NAT 閘道。
如需詳細資訊,請參閱如何使用 Amazon CloudWatch 指標來識別 NAT 閘道頻寬問題?
相關資訊
如何解決使用 NAT 執行個體時的反覆連線問題?
NAT 閘道疑難排解