NAT ゲートウェイのトラブルシューティング
以下のトピックでは、NAT ゲートウェイの作成時や使用時によく発生する可能性のある問題のトラブルシューティングについて説明します。
問題点
NAT ゲートウェイの作成に失敗する
問題
NAT ゲートウェイを作成すると、Failed
状態になります。
注記
障害が発生した NAT ゲートウェイは、通常約 1 時間後に自動的に削除されます。
原因
NAT ゲートウェイの作成時にエラーが発生しました。返った状態メッセージは、エラーの理由を表します。
ソリューション
エラーメッセージを表示するには、Amazon VPC コンソールを開き、[NAT ゲートウェイ] を選択します。NAT ゲートウェイのラジオボタンを選択し、[ Details ] タブで Stateメッセージ を見つけます。
次の表は、Amazon VPC コンソールに示される失敗の考えられる原因のリストです。示された修復手順のいずれかを適用したら、NAT ゲートウェイの作成を再度試すことができます。
表示されるエラー | 原因 | ソリューション |
---|---|---|
この NAT ゲートウェイを作成するための十分な空きアドレスがサブネットにありません | 指定したサブネットに空きプライベート IP アドレスがありません。NAT ゲートウェイには、サブネットの範囲からプライベート IP アドレスが割り当てられた一つのネットワークインターフェイスが必要です。 | Amazon VPC コンソールの [サブネット] ページに移動して、サブネットで使用可能な IP アドレスの数を確認します。[利用可能な IP] は、サブネットの詳細ペインで表示できます。サブネットで空き IP アドレスを作成するには、使用されていないネットワークインターフェイスを終了するか、必要でないインスタンスを削除することができます。 |
ネットワーク vpc-xxxxxxxx にインターネットゲートウェイがアタッチされていません | NAT ゲートウェイは、インターネットゲートウェイがアタッチされた VPC で作成する必要があります。 | インターネットゲートウェイを作成して VPC にアタッチします。詳細については、「サブネットへのインターネットアクセスを追加する」を参照してください。 |
Elastic IP アドレス eipalloc-xxxxxxxx はすでに関連付けられています | 指定した Elastic IP アドレスが別のリソースにすでに関連付けられていて、NAT ゲートウェイに関連付けることはできません。 | Elastic IP アドレスに関連付けられているリソースを確認します。Amazon VPC コンソールの [Elastic IP] ページに移動し、インスタンス ID またはネットワークインターフェイス ID に指定された値を表示します。特定のリソースの Elastic IP アドレスが必要ない場合は、その関連付けを解除できます。また、アカウントに新しい Elastic IP アドレスを割り当てることもできます。(詳しくは、「Elastic IP アドレスの使用を開始する」を参照してください。) |
NAT ゲートウェイクォータ
NAT ゲートウェイを作成しようとすると、次のエラーが表示されます。
Performing this operation would exceed the limit of 5 NAT gateways
原因
そのアベイラビリティーゾーンの NAT ゲートウェイの数のクォータに到達しました。
ソリューション
アカウントでこの NAT ゲートウェイクォータに達した場合は、次のいずれかの操作を実行できます。
-
Service Quotas コンソールを使用して、 アベイラビリティーゾーンのクォータごとに NAT ゲートウェイ
の増加を要求します。 -
NAT ゲートウェイの状態を確認します。ステータスが
Pending
、Available
、Deleting
のゲートウェイはクォータに含まれます。最近 NAT ゲートウェイを削除した場合は、ステータスがDeleting
からDeleted
に変わるまで数分待ちます。NAT ゲートウェイを作成し直します。 -
特定のアベイラビリティーゾーンの NAT ゲートウェイが不要な場合は、まだクォータに達していないアベイラビリティーゾーンで NAT ゲートウェイを作成してみます。
詳細については、「Amazon VPC クォータ」を参照してください
Elastic IP アドレスのクォータ
問題
パブリック NAT ゲートウェイに Elastic IP アドレスを割り当てようとすると、次のエラーが発生します。
The maximum number of addresses has been reached.
原因
そのリージョンのアカウントの Elastic IP アドレスの数のクォータに到達している。
ソリューション
Elastic IP アドレスのクォータに達した場合は、別のリソースに関連付けられている Elastic IP アドレスを解除することができます。または、Service Quotas コンソールを使用して Elastic IPS クォータの増加をリクエストすることもできます
アベイラビリティーゾーンがサポートされていない
問題
NAT ゲートウェイを作成しようとすると、NotAvailableInZone
エラーが表示されます。
原因
制約のあるアベイラビリティーゾーン (当社による拡張に制限があるゾーン) で NAT ゲートウェイを作成しようとしている可能性があります。
ソリューション
これらのアベイラビリティーゾーンでは NAT ゲートウェイはサポートされていません。別のアベイラビリティーゾーンで NAT ゲートウェイを作成し、それを制約のあるゾーンのプライベートサブネットで使用できます。リソースを制約のないアベイラビリティーゾーンに移動し、リソースと NAT ゲートウェイのアベイラビリティーゾーンを同じにすることができます。
NAT ゲートウェイが表示されなくなりました
問題
作成した NAT ゲートウェイは、Amazon VPC コンソールに表示されなくなりました。
原因
NAT ゲートウェイの作成中にエラーが発生し、作成に失敗した可能性があります。状態が Failed
の NAT ゲートウェイは Amazon VPC コンソールに約 1 時間表示されます。1 時間後、自動的に削除されます。
ソリューション
「NAT ゲートウェイの作成に失敗する」の情報を確認し、新しい NAT ゲートウェイを作成してみてください。
NAT ゲートウェイが ping コマンドに応答しない
問題
NAT ゲートウェイの Elastic IP アドレスまたはプライベート IP アドレスに、インターネット (家庭用コンピュータなど) や VPC のインスタンスから ping を送信しても、応答がありません。
原因
NAT ゲートウェイは、プライベートサブネットのインスタンスからインターネットへのトラフィックのみを渡します。
ソリューション
NAT ゲートウェイが動作していることをテストするには、「パブリック NAT ゲートウェイのテスト」を参照してください。
インスタンスがインターネットにアクセスできない
問題
NAT ゲートウェイを作成し、手順に従ってテストしましたが、ping
コマンドが失敗するか、プライベートサブネットのインスタンスがインターネットにアクセスできません。
原因
この問題の原因として、次のいずれかが考えられます。
-
NAT ゲートウェイでトラフィックを処理する準備が整っていません。
-
ルートテーブルが正しく構成されていません。
-
セキュリティグループまたはネットワーク ACL がインバウンドトラフィックまたはアウトバウンドトラフィックをブロックしています。
-
サポートされていないプロトコルを使用しています。
ソリューション
次の情報を確認します。
-
NAT ゲートウェイの状態が
Available
であることを確認します。Amazon VPC コンソールで、[NAT ゲートウェイ] に移動し、詳細ペインの状態情報を参照してください。NAT ゲートウェイの状態が failed である場合は、作成時にエラーが発生した可能性があります。詳細については、「NAT ゲートウェイの作成に失敗する」を参照してください -
ルートテーブルが正しく設定されていることを確認します。
-
NAT ゲートウェイはパブリックサブネット内にあって、インターネットトラフィックがインターネットゲートウェイにルーティングされるようにルートテーブルが設定されている必要があります。
-
インスタンスはプライベートサブネット内にあって、インターネットトラフィックが NAT ゲートウェイにルーティングされるようにルートテーブルが設定されている必要があります。
-
インターネットトラフィックの全体または一部を NAT ゲートウェイの代わりに別のデバイスにルーティングするようなエントリがルートテーブルに含まれていないことを確認します。
-
-
プライベートインスタンスのセキュリティグループルールにより、アウトバウンドインターネットトラフィックが許可されていることを確認します。
ping
コマンドを使用するには、ルールにより、アウトバウンド ICMP トラフィックも許可されている必要があります。NAT ゲートウェイ自体は、アウトバウンドリクエストと、アウントバウンドリクエストに応じて受信されるトラフィックのすべてを許可します (つまり、ステートフルです)。
-
パブリックサブネットとプライベートサブネットに関連付けられているネットワーク ACL に、インバウンドまたはアウトバウンドのインターネットトラフィックをブロックするルールが含まれていないことを確認します。
ping
コマンドを使用するには、ルールにより、インバウンドおよびアウトバウンドの ICMP トラフィックも許可されている必要があります。ネットワーク ACL やセキュリティグループのルールによって削除された接続の診断には、フローログを役立てることができます。詳細については、「VPC フローログを使用した IP トラフィックのログ記録」を参照してください
-
ping
コマンドは、必ず ICMP が有効になっているホストに対して実行してください。ICMP が有効になっていない場合、応答パケットを受け取ることはできません。これをテストするには、自分のコンピュータのコマンドラインターミナルから同じping
コマンドを実行します。 -
インスタンスから他のリソース (プライベートサブネットの他のインスタンスなど) に ping を実行できることを確認します (セキュリティグループルールにより、これが許可されている場合)。
-
接続に TCP、UDP、または ICMP プロトコルのみが使用されていることを確認します。
送信先への TCP 接続が失敗する
問題
プライベートサブネットのインスタンスから NAT ゲートウェイを介した特定の送信先への TCP 接続の一部は成功しますが、一部は失敗またはタイムアウトします。
原因
この問題の原因として、次のいずれかが考えられます。
-
送信先エンドポイントがフラグメント化された TCP パケットで応答しています。NAT ゲートウェイは、TCP または ICMP の IP フラグメンテーションをサポートしません。詳細については、「NAT ゲートウェイと NAT インスタンスの比較」を参照してください
-
この
tcp_tw_recycle
オプションは、NAT デバイスの背後から複数の接続がある場合に問題を引き起こすことが知られているリモートサーバーで有効になっています。
解決方法
次の手順を実行して、接続しようとしているエンドポイントがフラグメント化された TCP パケットで応答しているかどうかを確認します。
-
パブリック IP アドレスを持つパブリックサブネットのインスタンスを使用して、特定のエンドポイントからフラグメンテーションを引き起こすのに十分な大きさの応答をトリガーします。
-
エンドポイントがフラグメント化したパケットを送信していることを確認するため、
tcpdump
ユーティリティを使用します。重要
これらのチェックを実行するには、パブリックサブネットのインスタンスを使用する必要があります。元の接続が失敗したインスタンス、または NAT ゲートウェイまたは NAT インスタンスの背後にあるプライベートサブネットのインスタンスは使用できません。
大きな ICMP パケットを送信、または受信する診断ツールによって、パケット損失を報告します。例えば、この
ping -s 10000 example.com
コマンドは NAT ゲートウェイの背後では機能しません。 -
エンドポイントがフラグメント化された TCP パケットを送信している場合、NAT ゲートウェイの代わりに NAT インスタンスを使用できます。
リモートサーバーにアクセスできる場合は、次の手順を実行して、tcp_tw_recycle
オプションが有効になっているかどうかを確認できます。
-
サーバーから、以下のコマンドを実行します。
cat /proc/sys/net/ipv4/tcp_tw_recycle
出力が
1
の場合、tcp_tw_recycle
オプションは有効になっています。 -
tcp_tw_recycle
が有効になっている場合は、無効にすることをお勧めします。接続を再使用する必要がある場合は、安全なtcp_tw_reuse
を使用することをお勧めします。
リモートサーバーにアクセスできない場合は、プライベートサブネットのインスタンスで tcp_timestamps
オプションを一時的に無効にしてテストできます。次に、リモートサーバーに再度接続します。接続が成功した場合、リモートサーバーで tcp_tw_recycle
が有効になっているため、以前のエラーが原因であると考えられます。可能であれば、リモートサーバーの所有者に連絡して、このオプションが有効になっているかどうかを確認し、無効にするようにリクエストします。
Traceroute の出力に NAT ゲートウェイのプライベート IP アドレスが表示されない
問題
インスタンスからインターネットにアクセスできるが、traceroute
コマンドを実行すると、出力に NAT ゲートウェイのプライベート IP アドレスが表示されません。
原因
インスタンスは、インターネットゲートウェイなどの別のゲートウェイを使用してインターネットにアクセスしています。
ソリューション
インスタンスがあるサブネットのルートテーブルで、次の情報を確認します。
-
インターネットトラフィックを NAT ゲートウェイに送信するルートがあることを確認します。
-
インターネットトラフィックを他の機器 (仮想プライベートゲートウェイやインターネットゲートウェイなど) に送信するためのより具体的なルートがないことを確認します。
インターネット接続が 350 秒後に中断される
問題
インスタンスはインターネットにアクセスできますが、350 秒後に接続が切断されます。
原因
NAT ゲートウェイを使用する接続が 350 秒以上アイドル状態のままになっていると、その接続はタイムアウトします。
接続がタイムアウトになると、NAT ゲートウェイは、NAT ゲートウェイの背後で接続を継続しようとするリソースすべてに RST パケットを返します (FIN パケットは送信しません)。
ソリューション
接続が中断されないように、接続を介して追加のトラフィックを開始することができます。または、インスタンスで、350 秒未満の値で TCP キープアライブを有効にできます。
IPsec 接続を確立できない
問題
送信先への IPsec 接続を確立できません。
原因
NAT ゲートウェイは現在 IPsec プロトコルをサポートしていません。
ソリューション
NAT トラバーサル (NAT-T) を使用して、IPsec トラフィックを UDP にカプセル化することはできます。これは NAT ゲートウェイでサポートされているプロトコルです。NAT-T および IPsec 設定をテストして、IPsec トラフィックが欠落しないことを検証してください。
追加の接続を開始できない
問題
NAT ゲートウェイを介した送信先への既存の接続がありますが、それ以上接続を追加で確立することはできません。
原因
単一の NAT ゲートウェイの同時接続数が上限に達した可能性があります。詳細については、「NAT ゲートウェイの基本」を参照してください プライベートサブネットのインスタンスで多数の接続が作成されると、この上限に達する場合があります。
ソリューション
次のいずれかを行います。
-
アベイラビリティーゾーンごとに NAT ゲートウェイを作成し、各ゾーンにクライアントを分散してください。
-
パブリックサブネットで追加の NAT ゲートウェイを作成し、クライアントを複数のプライベートサブネットに分散して、それぞれに別の NAT ゲートウェイへのルートを設定します。
-
送信先に対してクライアントが作成できる接続の数を制限します。
-
CloudWatch の IdleTimeoutCount メトリクスを使用して、アイドル状態の接続の増加を監視します。アイドル状態の接続を閉じてキャパシティーを解放します。
-
複数の IP アドレスで NAT ゲートウェイを作成するか、既存の NAT ゲートウェイにセカンダリ IP アドレスを追加します。新しい IPv4 アドレスはそれぞれ最大 55,000 の同時接続をサポートできます。詳細については、「NAT ゲートウェイを作成する」または「セカンダリ IP アドレスの関連付けを編集する」を参照してください。