プライベート Amazon Virtual Private Cloud (Amazon VPC) で NAT ゲートウェイを使用する際の接続に関する問題をトラブルシューティングしたいと考えています。
簡単な説明
プライベートサブネットのリソースでは、以下の理由により、接続タイムアウト、突然の接続切断、または接続速度の低下が発生することがあります。
- ネットワークアクセスコントロールリスト (ネットワーク ACL) ルール。
- NAT ゲートウェイでの ErrorPortAllocation エラー
- クライアントインスタンスのポート枯渇
- 容量を解放するための IdleTimeoutCount エラー
- NAT ゲートウェイごとの帯域幅制限
解決策
次の原因に基づいて、接続タイムアウト、突然の接続切断、または接続速度の低下をトラブルシューティングします。
ネットワーク ACL ルール
NAT ゲートウェイがパブリックサブネットに関連付けられたネットワーク ACL で、エフェメラルポート範囲 (1024~65535) からのトラフィックが許可されていることを確認します。ネットワーク ACL でポート範囲のサブセットのみが許可され、インスタンスがその範囲外の送信元ポートを使用する場合、トラフィックはドロップされます。詳細については、「Example: VPC with servers in private subnets and NAT」を参照してください。
ErrorPortAllocation error on the NAT gateway
NAT ゲートウェイでは宛先ごとに最大 55,000 件の同時接続をサポートしています。このしきい値を超えると、その宛先への新しい接続が失敗し、NAT ゲートウェイの ErrorPortAllocation メトリクスが Amazon CloudWatch 上で増加します。この問題を解決するには、NAT ゲートウェイに最大 8 つの IPv4 アドレスを関連付けて制限を増やします。1 つのプライマリ IPv4 アドレスと 7 つのセカンダリ IPv4 アドレスを関連付けることができます。
注: セカンダリ IPv4 アドレスは、使用可能なポートの数を増やします。つまり、ワークロードが NAT ゲートウェイに接続して確立するために使用できる同時接続の数も増加します。
詳細については、「How do I resolve the ErrorPortAllocation error on my NAT gateway?」を参照してください。
クライアントインスタンスのポート枯渇
プライベートサブネット内のクライアントインスタンスが、オペレーティングシステム (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 秒以上アイドル状態になると、接続はタイムアウトし、IdleTimeoutCoun メトリクスが急増します。接続がタイムアウトすると、NAT ゲートウェイは、接続を継続を試みる NAT ゲートウェイの背後のリソースに RST パケットを返します。NAT ゲートウェイは FIN パケットを送信しません。
IdleTimeoutCount エラーを解決または回避するには、次の手順を実行します。
- Amazon CloudWatch の IdleTimeoutCount メトリックスを使用して、アイドル接続の増加をモニタリングします。CloudWatch Contributor Insights を設定して、プロセスが [Idle] 状態のクライアントの上位の要因を可視化します。
- クライアントからのアイドル接続を閉じて容量を解放します。
- 接続を介してより多くのトラフィックを開始します。
- 350 秒未満の値でインスタンスの TCP キープアライブをオンにします。
NAT ゲートウェイでの帯域幅制限
NAT ゲートウェイは 5 Gbps の帯域幅をサポートし、100 Gbps まで自動的にスケールアップします。NAT ゲートウェイのすべてのインスタンスのネットワークスループットメトリクスが 100 Gbps 以上になると、トラフィックが遅くなります。詳細については、「NAT ゲートウェイのメトリクスおよびディメンション」を参照してください。
NAT ゲートウェイの帯域幅制限を解決または回避するには、リソースを複数のサブネットに分割し、複数の NAT ゲートウェイを作成します。
詳細については、「How can I use Amazon CloudWatch metrics to identify NAT gateway bandwidth issues?」を参照してください。
関連情報
NAT インスタンスを使用するときに発生する断続的な接続の問題を解決するするにはどうすればよいですか?
NAT ゲートウェイのトラブルシューティング