NAT ゲートウェイのトラブルシューティング - Amazon Virtual Private Cloud

NAT ゲートウェイのトラブルシューティング

以下のトピックでは、NAT ゲートウェイの作成時や使用時によく発生する可能性のある問題のトラブルシューティングについて説明します。

NAT ゲートウェイの作成に失敗する

Problem

NAT ゲートウェイを作成すると、Failed 状態になります。

注記

障害が発生した NAT ゲートウェイは、通常約 1 時間後に自動的に削除されます。

Cause

NAT ゲートウェイの作成時にエラーが発生しました。返った状態メッセージは、エラーの理由を表します。

Solution

エラーメッセージを表示するには、Amazon VPC コンソールを開き、[NAT ゲートウェイ] を選択します。NAT ゲートウェイのラジオボタンを選択し、[ Details ] タブで Stateメッセージ を見つけます。

次の表は、Amazon VPC コンソールに示される失敗の考えられる原因のリストです。示された修復手順のいずれかを適用したら、NAT ゲートウェイの作成を再度試すことができます。

表示されるエラー 原因 ソリューション
この NAT ゲートウェイを作成するための十分な空きアドレスがサブネットにありません 指定したサブネットに空きプライベート IP アドレスがありません。NAT ゲートウェイには、サブネットの範囲からプライベート IP アドレスが割り当てられた一つのネットワークインターフェイスが必要です。 Amazon VPC コンソールの [サブネット] ページに移動して、サブネットで使用可能な IP アドレスの数を確認します。[利用可能な IP] は、サブネットの詳細ペインで表示できます。サブネットで空き IP アドレスを作成するには、使用されていないネットワークインターフェイスを終了するか、必要でないインスタンスを削除することができます。
ネットワーク vpc-xxxxxxxx にインターネットゲートウェイがアタッチされていません NAT ゲートウェイは、インターネットゲートウェイがアタッチされた VPC で作成する必要があります。 インターネットゲートウェイを作成して VPC にアタッチします。詳細については、「」を参照してくださいインターネットゲートウェイの作成とアタッチ
この NAT ゲートウェイに Elastic IP アドレス eipalloc-xxxxxxxx を関連付けられませんでした 指定した Elastic IP アドレスが存在しないか、見つかりませんでした。 Elastic IP アドレスの割り当て ID を調べて正しく入力されていることを確認します。NAT ゲートウェイを作成しているのと同じ AWS リージョンにある elastic IP アドレスを指定していることを確認します。
Elastic IP アドレス eipalloc-xxxxxxxx はすでに関連付けられています 指定した Elastic IP アドレスが別のリソースにすでに関連付けられていて、NAT ゲートウェイに関連付けることはできません。 Elastic IP アドレスに関連付けられているリソースを確認します。Amazon VPC コンソールの [Elastic IP] ページに移動し、インスタンス ID またはネットワークインターフェイス ID に指定された値を表示します。特定のリソースの Elastic IP アドレスが必要ない場合は、その関連付けを解除できます。また、アカウントに新しい Elastic IP アドレスを割り当てることもできます。詳細については、「」を参照してくださいElastic IP アドレスの操作
この NAT ゲートウェイで作成され、内部で使用されているネットワークインターフェイス eni-xxxxxxxx が無効な状態です。もう一度試してください。 NAT ゲートウェイのネットワークインターフェイスの作成中または使用中に問題が発生しました。 このエラーを解決できません。NAT ゲートウェイを作成し直してください。

NAT ゲートウェイクォータ

NAT ゲートウェイを作成しようとすると、次のエラーが表示されます。

Performing this operation would exceed the limit of 5 NAT gateways

Cause

そのアベイラビリティーゾーンの NAT ゲートウェイの数のクォータに到達しました。

Solution

アカウントでこの NAT ゲートウェイクォータに達した場合は、次のいずれかの操作を実行できます。

  • Service Quotas コンソールを使用して、 アベイラビリティーゾーンのクォータごとに NAT ゲートウェイの増加を要求します。

  • NAT ゲートウェイの状態を確認します。ステータスが PendingAvailableDeleting のゲートウェイはクォータに含まれます。最近 NAT ゲートウェイを削除した場合は、ステータスが Deleting から Deleted に変わるまで数分待ちます。NAT ゲートウェイを作成し直します。

  • 特定のアベイラビリティーゾーンの NAT ゲートウェイが不要な場合は、まだクォータに達していないアベイラビリティーゾーンで NAT ゲートウェイを作成してみます。

詳細については、「」を参照してくださいAmazon VPC クォータ

Elastic IP アドレスのクォータ

Problem

パブリック NAT ゲートウェイに Elastic IP アドレスを割り当てようとすると、次のエラーが発生します。

The maximum number of addresses has been reached.

Cause

そのリージョンのアカウントの Elastic IP アドレスの数のクォータに到達している。

Solution

Elastic IP アドレスのクォータに達した場合は、別のリソースに関連付けられている Elastic IP アドレスを解除することができます。または、Service Quotas コンソールを使用して Elastic IPS クォータの増加をリクエストすることもできます

アベイラビリティーゾーンがサポートされていない

Problem

NAT ゲートウェイを作成しようとすると、NotAvailableInZone エラーが表示されます。

Cause

制約のあるアベイラビリティーゾーン (当社による拡張に制限があるゾーン) で NAT ゲートウェイを作成しようとしている可能性があります。

Solution

これらのアベイラビリティーゾーンでは NAT ゲートウェイはサポートされていません。別のアベイラビリティーゾーンで NAT ゲートウェイを作成し、それを制約のあるゾーンのプライベートサブネットで使用できます。リソースを制約のないアベイラビリティーゾーンに移動し、リソースと NAT ゲートウェイのアベイラビリティーゾーンを同じにすることができます。

NAT ゲートウェイが表示されなくなりました

Problem

作成した NAT ゲートウェイは、Amazon VPC コンソールに表示されなくなりました。

Cause

NAT ゲートウェイの作成中にエラーが発生し、作成に失敗した可能性があります。状態が Failed の NAT ゲートウェイは Amazon VPC コンソールに約 1 時間表示されます。1 時間後、自動的に削除されます。

Solution

NAT ゲートウェイの作成に失敗する」の情報を確認し、新しい NAT ゲートウェイを作成してみてください。

NAT ゲートウェイが ping コマンドに応答しない

Problem

NAT ゲートウェイの Elastic IP アドレスまたはプライベート IP アドレスに、インターネット (家庭用コンピュータなど) や VPC のインスタンスから ping を送信しても、応答がありません。

Cause

NAT ゲートウェイは、プライベートサブネットのインスタンスからインターネットへのトラフィックのみを渡します。

Solution

NAT ゲートウェイが動作していることをテストするには、「パブリック NAT ゲートウェイのテスト」を参照してください。

インスタンスがインターネットにアクセスできない

Problem

NAT ゲートウェイを作成し、手順に従ってテストしましたが、ping コマンドが失敗するか、プライベートサブネットのインスタンスがインターネットにアクセスできません。

Causes

この問題の原因として、次のいずれかが考えられます。

  • NAT ゲートウェイでトラフィックを処理する準備が整っていません。

  • ルートテーブルが正しく構成されていません。

  • セキュリティグループまたはネットワーク ACL がインバウンドトラフィックまたはアウトバウンドトラフィックをブロックしています。

  • サポートされていないプロトコルを使用しています。

Solution

次の情報を確認します。

  • NAT ゲートウェイの状態が Available であることを確認します。Amazon VPC コンソールで、[NAT ゲートウェイ] に移動し、詳細ペインの状態情報を参照してください。NAT ゲートウェイの状態が failed である場合は、作成時にエラーが発生した可能性があります。詳細については、「」を参照してくださいNAT ゲートウェイの作成に失敗する

  • ルートテーブルが正しく設定されていることを確認します。

    • NAT ゲートウェイはパブリックサブネット内にあって、インターネットトラフィックがインターネットゲートウェイにルーティングされるようにルートテーブルが設定されている必要があります。

    • インスタンスはプライベートサブネット内にあって、インターネットトラフィックが NAT ゲートウェイにルーティングされるようにルートテーブルが設定されている必要があります。

    • インターネットトラフィックの全体または一部を NAT ゲートウェイの代わりに別のデバイスにルーティングするようなエントリがルートテーブルに含まれていないことを確認します。

  • プライベートインスタンスのセキュリティグループルールにより、アウトバウンドインターネットトラフィックが許可されていることを確認します。ping コマンドを使用するには、ルールにより、アウトバウンド ICMP トラフィックも許可されている必要があります。

    NAT ゲートウェイ自体は、アウトバウンドリクエストと、アウントバウンドリクエストに応じて受信されるトラフィックのすべてを許可します (つまり、ステートフルです)。

  • パブリックサブネットとプライベートサブネットに関連付けられているネットワーク ACL に、インバウンドまたはアウトバウンドのインターネットトラフィックをブロックするルールが含まれていないことを確認します。ping コマンドを使用するには、ルールにより、インバウンドおよびアウトバウンドの ICMP トラフィックも許可されている必要があります。

    ネットワーク ACL やセキュリティグループのルールによって削除された接続の診断には、フローログを役立てることができます。詳細については、「」を参照してくださいVPC フローログ

  • ping コマンドは、必ず ICMP が有効になっているホストに対して実行してください。ICMP が有効になっていない場合、応答パケットを受け取ることはできません。これをテストするには、自分のコンピュータのコマンドラインターミナルから同じ ping コマンドを実行します。

  • インスタンスから他のリソース (プライベートサブネットの他のインスタンスなど) に ping を実行できることを確認します (セキュリティグループルールにより、これが許可されている場合)。

  • 接続に TCP、UDP、または ICMP プロトコルのみが使用されていることを確認します。

宛先への TCP 接続が失敗する

Problem

プライベートサブネットのインスタンスから NAT ゲートウェイを介した特定の宛先への TCP 接続の一部は成功しますが、一部は失敗またはタイムアウトします。

Causes

この問題の原因として、次のいずれかが考えられます。

  • 宛先エンドポイントがフラグメント化された TCP パケットで応答しています。NAT ゲートウェイは、TCP または ICMP の IP フラグメンテーションをサポートしません。詳細については、「」を参照してくださいNAT ゲートウェイと NAT インスタンスの比較

  • この tcp_tw_recycle オプションは、NAT デバイスの背後から複数の接続がある場合に問題を引き起こすことが知られているリモートサーバーで有効になっています。

Solutions

次の手順を実行して、接続しようとしているエンドポイントがフラグメント化された TCP パケットで応答しているかどうかを確認します。

  1. パブリック IP アドレスを持つパブリックサブネットのインスタンスを使用して、特定のエンドポイントからフラグメンテーションを引き起こすのに十分な大きさの応答をトリガーします。

  2. エンドポイントがフラグメント化したパケットを送信していることを確認するため、tcpdump ユーティリティを使用します。

    重要

    これらのチェックを実行するには、パブリックサブネットのインスタンスを使用する必要があります。元の接続が失敗したインスタンス、または NAT ゲートウェイまたは NAT インスタンスの背後にあるプライベートサブネットのインスタンスは使用できません。

    大きな ICMP パケットを送信、または受信する診断ツールによって、パケット損失を報告します。たとえば、この ping -s 10000 example.com コマンドは NAT ゲートウェイの背後では機能しません。

  3. エンドポイントがフラグメント化された TCP パケットを送信している場合、NAT ゲートウェイの代わりに NAT インスタンスを使用できます。

リモートサーバーにアクセスできる場合は、次の手順を実行して、tcp_tw_recycle オプションが有効になっているかどうかを確認できます。

  1. サーバーから、以下のコマンドを実行します。

    cat /proc/sys/net/ipv4/tcp_tw_recycle

    出力が 1 の場合、tcp_tw_recycle オプションは有効になっています。

  2. tcp_tw_recycle が有効になっている場合は、無効にすることをお勧めします。接続を再使用する必要がある場合は、安全な tcp_tw_reuse を使用することをお勧めします。

リモートサーバーにアクセスできない場合は、プライベートサブネットのインスタンスで tcp_timestamps オプションを一時的に無効にしてテストできます。次に、リモートサーバーに再度接続します。接続が成功した場合、リモートサーバーで tcp_tw_recycle が有効になっているため、以前のエラーが原因であると考えられます。可能であれば、リモートサーバーの所有者に連絡して、このオプションが有効になっているかどうかを確認し、無効にするようにリクエストします。

Traceroute の出力に NAT ゲートウェイのプライベート IP アドレスが表示されない

Problem

インスタンスからインターネットにアクセスできるが、traceroute コマンドを実行すると、出力に NAT ゲートウェイのプライベート IP アドレスが表示されません。

Cause

インスタンスは、インターネットゲートウェイなどの別のゲートウェイを使用してインターネットにアクセスしています。

Solution

インスタンスがあるサブネットのルートテーブルで、次の情報を確認します。

  • インターネットトラフィックを NAT ゲートウェイに送信するルートがあることを確認します。

  • インターネットトラフィックを他の機器 (仮想プライベートゲートウェイやインターネットゲートウェイなど) に送信するためのより具体的なルートがないことを確認します。

インターネット接続が 350 秒後に中断される

Problem

インスタンスはインターネットにアクセスできますが、350 秒後に接続が切断されます。

Cause

NAT ゲートウェイを使用する接続が 350 秒以上アイドル状態のままになっていると、その接続はタイムアウトします。

接続がタイムアウトになると、NAT ゲートウェイは、NAT ゲートウェイの背後で接続を継続しようとするリソースすべてに RST パケットを返します (FIN パケットは送信しません)。

Solution

接続が中断されないように、接続を介して追加のトラフィックを開始することができます。または、インスタンスで、350 秒未満の値で TCP キープアライブを有効にできます。

IPsec 接続を確立できない

Problem

宛先への IPsec 接続を確立できません。

Cause

NAT ゲートウェイは現在 IPsec プロトコルをサポートしていません。

Solution

NAT トラバーサル (NAT-T) を使用して、IPsec トラフィックを UDP にカプセル化することはできます。これは NAT ゲートウェイでサポートされているプロトコルです。NAT-T および IPsec 設定をテストして、IPsec トラフィックが欠落しないことを検証してください。

追加の接続を開始できない

Problem

NAT ゲートウェイを介した宛先への既存の接続がありますが、それ以上接続を追加で確立することはできません。

Cause

単一の NAT ゲートウェイの同時接続数が上限に達した可能性があります。詳細については、「」を参照してくださいNAT ゲートウェイの基本 プライベートサブネットのインスタンスで多数の接続が作成されると、この上限に達する場合があります。

Solution

次のいずれかを行ってください。

  • アベイラビリティーゾーンごとに NAT ゲートウェイを作成し、各ゾーンにクライアントを分散してください。

  • パブリックサブネットで追加の NAT ゲートウェイを作成し、クライアントを複数のプライベートサブネットに分散して、それぞれに別の NAT ゲートウェイへのルートを設定します。

  • 送信先に対してクライアントが作成できる接続の数を制限します。

  • CloudWatch の IdleTimeoutCount メトリクスを使用して、アイドル状態の接続の増加を監視します。アイドル状態の接続を閉じてキャパシティーを解放します。