我想對我在私有 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 地址與 NAT 閘道關聯,以增加限制。您可以關聯一個主要和七個次要 IPv4 地址。
**注意:**次要 IPv4 地址會增加可用連接埠的數量。這表示您的工作負載可用於連線至 NAT 閘道以建立的並行連線數量也會增加。
如需詳細資訊,請參閱如何解決 NAT 閘道上的 ErrorPortAllocation 錯誤?
用戶端執行個體連接埠耗盡
檢查私有子網路中的用戶端執行個體是否已達到其作業系統 (OS) 連線限制:
檢視作用中連線的數目:
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
如果前面的命令傳回接近允許的本機連接埠範圍 (用於用戶端連線的來源連接埠) 的值,則可能是連接埠耗盡。
若要緩減連接埠耗盡,請完成下列工作:
- 解決任何耗盡可用連線的應用程式層級問題。
- 增大作業系統本機 (暫時) 連接埠範圍:
net.ipv4.ip_local_port_range = 1025 61000
**注意:**連接埠範圍總數可能有助於解決連接埠配置問題,因為連線無提示關閉。
釋放容量的 IdleTimeoutCount 錯誤
如果使用 NAT 閘道的連線閒置 350 秒或更長時間,則連線逾時。您也會看到 IdleTimeoutCount 指標的尖峰。若連線逾時,NAT 閘道會傳回 RST 封包給嘗試繼續連線的 NAT 閘道後方的任何資源。NAT 閘道不會傳送 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 閘道疑難排解