NAT ゲートウェイで ErrorPortAllocation エラーを解決するにはどうすればよいですか?

最終更新日: 2022 年 4 月 4 日

NAT ゲートウェイで ErrorPortAllocation エラーが発生し続け、宛先ホストへのいくつかの同時接続が失敗します。このポート割り当てエラーを解決するにはどうすればよいですか?

簡単な説明

NAT ゲートウェイでは宛先ごとに 1 分あたり最大 55,000 件の同時接続をサポートしています。このしきい値を超えた場合、その宛先への新しい接続は失敗し、NAT ゲートウェイの ErrorPortAllocation メトリクスが Amazon CloudWatch 上で増加します。

この問題を解決するには、これらのエラーの原因となっている出典クライアントと宛先を見つけます。次に、ポート割り当てエラーの解決 セクションの手順に従います。

前提条件:

  • VPC フローログが VPC レベルで、または NAT ゲートウェイが使用されているサブネットに対してアクティブ化されていることを確認してください。
  • VPC フローログが CloudWatch に配信するように設定されていることを確認してください。

解決方法

ソースクライアントと接続先を見つける

1.    CloudWatch コンソールを開きます。

2.    ナビゲーションペインで、[Insights] を選択します。

3.    Log group で、フローログを記録するロググループを選択します。

4.    トラフィックがどこに向かっているのかを見つけます。

filter (srcAddr like 'NAT gateway Private IP' and dstAddr not like 'xxx.xxx.')
| stats count(*) as numaccept by dstAddr
| sort numaccept desc
| limit 10

結果は、ポート割り当てエラーを受信した時間枠内で応答数が最も多い宛先IPを示しています。

: xxx.xxx を置き換えます。VPC CIDR の最初の 2 つのオクテットを使用します。また、NAT ゲートウェイ プライベート IP はご使用の NAT ゲートウェイの IP に置き換えます。

5.    宛先にトラフィックを送信している出典クライアントを見つけます。

filter (dstAddr like 'Public IP from above filter' and srcAddr like 'xxx.xxx.') 
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10

: xxx.xxx を置き換えます。VPC CIDR の最初の 2 つのオクテットを使用します。また、上記のフィルターのパブリック IP を、前のクエリから受け取った宛先 IP に置き換えます。

ポート割り当てエラーを解決する

  • それぞれのアベイラビリティーゾーンに NAT ゲートウェイを作成し、アベイラビリティーゾーン全体にクライアントを分散させます。アベイラビリティーゾーンをまたいだデータ課金を抑えるために、クライアントのアベイラビリティーゾーンと同じゾーンの NAT ゲートウェイを使用して、トラフィックをインターネットへ経路指定します。
  • CloudWatch の IdleTimeoutCount メトリクスの増加に気付いた場合は、アイドル状態の接続を閉じるようにアプリケーションまたはプライベートインスタンスを設定します。これにより、NAT ゲートウェイは送信元ポートを新しい接続に割り当てることができます。
  • クライアントが作成できる接続数を 1 つの宛先に制限します。
  • 同じ AWS リージョン内の Amazon Simple Storage Service (Amazon S3) または Amazon DynamoDB パブリック IP アドレスに向かうトラフィックには、ゲートウェイ VPC エンドポイントを使用します。ゲートウェイ VPC エンドポイントを使用しても、データ処理料金や時間単位料金は発生しません。

この記事はお役に立ちましたか。


請求に関するサポートまたは技術サポートが必要ですか?