Amazon Virtual Private Cloud
ユーザーガイド

NAT ゲートウェイ

ネットワークアドレス変換 (NAT) ゲートウェイを使用して、プライベートサブネットのインスタンスからはインターネットや他の AWS サービスに接続できるが、インターネットからはこれらのインスタンスとの接続を開始できないようにすることができます。NAT の詳細については、「NAT」を参照してください。

アカウントで NAT ゲートウェイを作成して使用するには料金がかかります。NAT ゲートウェイの時間単位の使用料金とデータ処理料金が適用されます。Amazon EC2 データ転送料金も適用されます。詳細については、「Amazon VPC の料金」を参照してください。

NAT ゲートウェイは IPv6 トラフィックには対応していないため、Egress-Only インターネットゲートウェイを使用します。詳細については、「Egress-Only インターネットゲートウェイ」を参照してください。

NAT ゲートウェイの基本

NAT ゲートウェイを作成するには、NAT ゲートウェイの常駐先のパブリックサブネットを指定する必要があります。パブリックサブネットとプライベートサブネットの詳細については、「サブネットのルーティング」を参照してください。NAT ゲートウェイに関連付ける Elastic IP アドレスも、ゲートウェイの作成時に指定する必要があります。NAT ゲートウェイに関連付けた Elastic IP アドレスを変更することはできません。NAT ゲートウェイを作成したら、プライベートサブネットの 1 つ以上に関連付けられているルートテーブルを更新し、インターネット向けトラフィックを NAT ゲートウェイに向かわせる必要があります。これにより、プライベートサブネットのインスタンスがインターネットと通信できるようになります。

各 NAT ゲートウェイは、アベイラビリティーゾーン別に作成され、各ゾーンで冗長性を持たせて実装されます。アベイラビリティーゾーンで作成できる NAT ゲートウェイの数には制限があります。詳細については、「Amazon VPC の制限」を参照してください。

注記

複数のアベイラビリティーゾーンにリソースがあって、リソース間で 1 つの NAT ゲートウェイを共有している場合、その NAT ゲートウェイが属するアベイラビリティーゾーンがダウンすると、その他のアベイラビリティーゾーンのリソースはインターネットにアクセスできなくなります。アベイラビリティーゾーンに依存しないアーキテクチャを作成するには、アベイラビリティーゾーン別に NAT ゲートウェイを作成し、同じアベイラビリティーゾーンに属する NAT ゲートウェイをリソースで使用するようにルーティングを設定します。

不要になった NAT ゲートウェイは削除できます。NAT ゲートウェイを削除すると、Elastic IP アドレスとの関連付けは解除されますが、アドレスはアカウントから解放されません。

次の図は、NAT ゲートウェイを使用した VPC のアーキテクチャを示しています。メインルートテーブルは、プライベートサブネットのインスタンスから NAT ゲートウェイにインターネットトラフィックを送信します。NAT ゲートウェイは、NAT ゲートウェイの Elastic IP アドレスをソース IP アドレスとして使用し、インターネットゲートウェイにトラフィックを送信します。


          パブリックおよびプライベートサブネットの VPC と NAT ゲートウェイ

NAT ゲートウェイのルールと制限

NAT ゲートウェイには次の特性および制限があります。

  • NAT ゲートウェイは 5 Gbps の帯域幅をサポートし、45 Gbps まで自動的に拡張します。これ以上必要な場合は、リソースを分割して複数のサブネットに配置し、サブネットごとに NAT ゲートウェイを作成することで、ワークロードを分散できます。

  • NAT ゲートウェイごとに 1 つだけの Elastic IP アドレスを関連付けることができます。作成後に NAT ゲートウェイから Elastic IP アドレスの関連付けを解除することはできません。NAT ゲートウェイで別の Elastic IP アドレスを使用するには、新しい NAT ゲートウェイを作成してそのアドレスを関連付け、ルートテーブルを更新します。既存の NAT インスタンスが不要になった場合は、それを削除します。

  • NAT ゲートウェイは、プロトコルとして TCP、UDP、ICMP をサポートします。

  • NAT ゲートウェイにセキュリティグループを関連付けることはできません。セキュリティグループは、プライベートサブネットのインスタンスに対して使用し、それらのインスタンスに出入りするトラフィックを管理できます。

  • NAT ゲートウェイがあるサブネットに出入りするトラフィックを管理するには、ネットワーク ACL を使用できます。ネットワーク ACL は NAT ゲートウェイのトラフィックに適用されます。NAT ゲートウェイはポート 1024 ~ 65535 を使用します。詳細については、「ネットワーク ACL」を参照してください。

  • NAT ゲートウェイの作成時にネットワークインターフェイスが追加され、このネットワークインターフェイスにサブネットの IP アドレス範囲からプライベート IP アドレスが自動的に割り当てられます。NAT ゲートウェイのネットワークインターフェイスは Amazon EC2 コンソールで参照できます。詳細については、「ネットワークインターフェイスに関する詳細情報の表示」を参照してください。このネットワークインターフェイスの属性を変更することはできません。

  • NAT ゲートウェイは、VPC に関連付けられている ClassicLink 接続からはアクセスできません。

  • NAT ゲートウェイは送信先別に最大 55,000 の同時接続をサポートできます。この制限は、単一の送信先に 1 秒あたり約 900 の接続 (1 分あたり約 55,000 の接続) を作成する場合にも適用されます。送信先 IP アドレス、送信先ポート、またはプロトコル (TCP/UDP/ICMP) が変更された場合は、追加の 55,000 の接続を作成できます。55,000 を超える接続の場合は、ポートの割り当てエラーによる接続エラーの可能性が高くなります。これらのエラーは、NAT ゲートウェイの ErrorPortAllocation CloudWatch メトリクスを表示することでモニタリングできます。詳細については、「Amazon CloudWatch を使用した NAT ゲートウェイのモニタリング」を参照してください。

NAT インスタンスからの移行

現在使用している NAT インスタンスを NAT ゲートウェイに置き換えることができます。これを行うには、NAT インスタンスと同じサブネットに NAT ゲートウェイを作成し、ルートテーブルを NAT インスタンスを指す既存のルートから NAT ゲートウェイを指すルートに置き換えます。現在 NAT インスタンスで使用している同じ Elastic IP アドレスを NAT ゲートウェイで使用するには、まず NAT インスタンスに関連付けられている Elastic IP アドレスを解除し、そのアドレスを NAT ゲートウェイの作成時にゲートウェイに関連付けます。

注記

NAT インスタンスから NAT ゲートウェイにルーティングを変更したり、NAT インスタンスに関連付けられている Elastic IP アドレスを解除したりすると、現在の接続は切断されるため、再接続する必要があります。重要なタスク (または NAT インスタンスを介してその他のタスク) が実行中でないことを確認してください。

VPC エンドポイント、AWS Site-to-Site VPN 接続、AWS Direct Connect、または VPC ピア接続での NAT ゲートウェイの使用

NAT ゲートウェイは、VPC エンドポイント、AWS Site-to-Site VPN 接続、AWS Direct Connect、または VPC ピア接続を通じてトラフィックを送信できません。プライベートサブネット内のインスタンスから VPC エンドポイント、Site-to-Site VPN 接続、または AWS Direct Connect を通じてリソースにアクセスする必要がある場合は、プライベートサブネットのルートテーブルを使用して、それらのデバイスにトラフィックを直接ルーティングします。

たとえば、プライベートサブネットのルートテーブルのルートでは、インターネット向けトラフィック (0.0.0.0/0) は NAT ゲートウェイにルーティングされ、Amazon S3 トラフィック (pl-xxxxxxxx: Amazon S3 の特定の IP アドレス範囲) は VPC エンドポイントにルーティングされ、10.25.0.0/16 トラフィックは VPC ピアリング接続にルーティングされます。pl-xxxxxxxx と 10.25.0.0/16 の IP アドレス範囲は 0.0.0.0/0 より具体的です。インスタンスから Amazon S3 またはピア接続 VPC にトラフィックを送信すると、トラフィックは VPC エンドポイントまたは VPC ピア接続に送信されます。インスタンスからインターネット (Amazon S3 IP アドレス以外) にトラフィックを送信すると、トラフィックは NAT ゲートウェイに送信されます。

VPC ピア接続、Site-to-Site VPN 接続、または AWS Direct Connect を経由して NAT ゲートウェイにトラフィックをルーティングすることはできません。NAT ゲートウェイは、これらの接続の他方の側にあるリソースからは使用できません。

同一リージョンで Amazon S3 または DynamoDB にトラフィックを送信する際のベストプラクティス

同一リージョンにある Amazon S3 および DynamoDB にアクセスする際に NAT ゲートウェイのデータ処理料金が発生するのを防ぐには、ゲートウェイエンドポイントを設定し、NAT ゲートウェイではなくゲートウェイエンドポイントを介してトラフィックをルーティングします。ゲートウェイエンドポイントの使用には料金がかかりません。詳細については、「ゲートウェイ VPC エンドポイント」を参照してください。

NAT ゲートウェイの使用

Amazon VPC コンソールを使用して NAT ゲートウェイの作成、表示、削除ができます。Amazon VPC ウィザードを使用して、パブリックサブネット、プライベートサブネット、NAT ゲートウェイを使う VPC を作成することもできます。詳細については、「シナリオ 2: パブリックサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。

NAT ゲートウェイの作成

NAT ゲートウェイを作成するには、サブネットと Elastic IP アドレスを指定する必要があります。Elastic IP アドレスが、現在インスタンスやネットワークインターフェイスに関連付けられていないことを確認します。NAT インスタンスから NAT ゲートウェイに移行し、NAT インスタンスの Elastic IP アドレスを引き継ぐ場合は、まず NAT インスタンスに関連付けられているアドレスを解除する必要があります。

NAT ゲートウェイを作成するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[NAT ゲートウェイ]、[NAT ゲートウェイの作成] の順に選択します。

  3. NAT ゲートウェイを作成する先のサブネットを指定し、NAT ゲートウェイに関連付ける Elastic IP アドレスの割り当て ID を選択します。終了したら、[NAT ゲートウェイの作成] を選択します。

  4. NAT ゲートウェイがコンソールに表示されます。まもなく NAT ゲートウェイの状態が Available に変わり、NAT ゲートウェイが利用可能になります。

NAT ゲートウェイの状態が Failed である場合は、作成時にエラーが発生しています。詳細については、「NAT ゲートウェイの状態が Failed になる」を参照してください。

ルートテーブルの更新

NAT ゲートウェイを作成したら、プライベートサブネットのルートテーブルを更新して、インターネットトラフィックを NAT ゲートウェイに向かわせる必要があります。AWS では、トラフィックと一致する最も具体的なルートを使用して、トラフィックをルーティングする方法を決定します (最長プレフィックス一致)。詳細については、「ルーティングの優先度」を参照してください。

NAT ゲートウェイへのルートを作成するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

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

  3. プライベートサブネットに関連付けられているルートテーブルを選択し、[ルート]、[編集] の順に選択します。

  4. [別ルートの追加] を選択します。[Destination] に「0.0.0.0/0」と入力します。[ターゲット] で、NAT ゲートウェイの ID を選択します。

    注記

    NAT インスタンスから移行する場合は、NAT インスタンスを指す現在のルートを NAT ゲートウェイを指すルートに置き換えます。

  5. [Save] を選択します。

NAT ゲートウェイからインターネットにアクセスできるためには、NAT ゲートウェイがあるサブネットに関連付けられているルートテーブルに、インターネットトラフィックをインターネットゲートウェイに向かわせるルートが含まれている必要があります。詳細については、「カスタムルートテーブルを作成する」を参照してください。NAT ゲートウェイを削除する場合、NAT ゲートウェイのルートを削除または更新するまで、ルートの状態は blackhole になります。詳細については、「ルートテーブルでルートを追加および削除する」を参照してください。

NAT ゲートウェイの削除

Amazon VPC コンソールを使用して NAT ゲートウェイを削除できます。NAT ゲートウェイを削除すると、そのエントリは Amazon VPC コンソールに引き続き短時間 (通常は 1 時間) 表示された後で、自動的に削除されます。このエントリを手動で削除することはできません。

NAT ゲートウェイを削除するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで [NAT ゲートウェイ] を選択します。

  3. NAT ゲートウェイを選択し、[アクション]、[NAT ゲートウェイの削除] の順に選択します。

  4. 確認ダイアログボックスで、[NAT ゲートウェイの削除] を選択します。

NAT ゲートウェイのテスト

NAT ゲートウェイを作成してルートテーブルを更新したら、プライベートサブネットのインスタンスからインターネットに ping を送信し、インスタンスがインターネットに接続できることをテストします。これを行う方法の例については、「インターネット接続のテスト」を参照してください。

インターネットに接続できる場合は、さらに以下のテストを実行して、インターネットトラフィックが NAT ゲートウェイを介してルーティングされているかどうかを判断できます。

  • プライベートサブネットのインスタンスからのトラフィックのルートを追跡できます。これを行うには、プライベートサブネットの Linux インスタンスから traceroute コマンドを実行します。出力で、NAT ゲートウェイのプライベート IP アドレスがホップのいずれか (通常は最初のホップ) に表示されます。

  • プライベートサブネットのインスタンスから接続すると、ソース IP アドレスが表示されるようなサードパーティのウェブサイトやツールを使用します。ソース IP アドレスとして NAT ゲートウェイの Elastic IP アドレスが表示される必要があります。NAT ゲートウェイの Elastic IP アドレスとプライベート IP アドレスの情報は、Amazon VPC コンソールの [NAT Gateways] ページで確認できます。

上記のテストが失敗した場合は、「NAT ゲートウェイのトラブルシューティング」を参照してください。

インターネット接続のテスト

次の例は、プライベートサブネットのインスタンスからインターネットに接続できるかどうかをテストする方法を示しています。

  1. パブリックサブネットのインスタンスを起動します (これを踏み台ホストとして使用します)。詳細については、「サブネット内にインスタンスを起動する」を参照してください。起動ウィザードで、Amazon Linux AMI を選択し、インスタンスにパブリック IP アドレスを割り当てます。セキュリティグループルールで、ローカルネットワークの IP アドレス範囲からのインバウンド SSH トラフィック、およびプライベートサブネットの IP アドレス範囲へのアウトバウンド SSH トラフィックが許可されていることを確認します (このテストでは、インバウンドおよびアウトバウンド SSH トラフィックの両方に 0.0.0.0/0 を使用することもできます)。

  2. プライベートサブネットのインスタンスを起動します。起動ウィザードで、Amazon Linux AMI を選択します。インスタンスにパブリック IP アドレスを割り当てないでください。パブリックサブネットで起動したインスタンスの IP アドレスからのインバウンド SSH トラフィックとすべてのアウトバウンド ICMP トラフィックが、セキュリティグループのルールで許可されていることを確認します。パブリックサブネットのインスタンスの起動に使用したのと同じキーペアを選択する必要があります。

  3. ローカルコンピュータの SSH エージェント転送を設定し、パブリックサブネットの踏み台ホストに接続します。詳細については、「Linux または macOS の SSH エージェント転送を設定するには」または「Windows (PuTTY) 用に SSH エージェント転送を設定するには」を参照してください。

  4. 踏み台ホストからプライベートサブネットのインスタンスに接続し、プライベートサブネットのインスタンスからインターネット接続をテストします。詳細については、「インターネット接続をテストするには」を参照してください。

Linux または macOS の SSH エージェント転送を設定するには

  1. ローカルマシンから、認証エージェントにプライベートキーを追加します。

    Linux の場合、次のコマンドを使用します。

    ssh-add -c mykeypair.pem

    macOS の場合は、以下のコマンドを使用します。

    ssh-add -K mykeypair.pem
  2. -A オプションを使用してパブリックサブネットのインスタンスに接続して SSH エージェント転送を有効にし、インスタンスのパブリックアドレスを使用します。次に例を示します。

    ssh -A ec2-user@54.0.0.123

Windows (PuTTY) 用に SSH エージェント転送を設定するには

  1. 既にインストールされていない場合は、PuTTY のダウンロードページから Pageant をダウンロードしてインストールします。

  2. プライベートキーを .ppk 形式に変換します。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「PuTTYgen を使用した秘密キーの変換」を参照してください。

  3. Pageant を起動し、タスクバーの Pageant アイコン (非表示の場合があります) を右クリックして、[Add Key] を選択します。作成した .ppk ファイルを選択し、必要に応じてパスフレーズを入力して、[Open] を選択します。

  4. PuTTY セッションを開始し、パブリック IP アドレスを使用してパブリックサブネットのインスタンスに接続します。詳細については、「PuTTY セッションの開始」を参照してください。[Auth] カテゴリで、必ず [Allow agent forwarding] オプションを選択し、[Private key file for authentication] ボックスは空のままにします。

インターネット接続をテストするには

  1. パブリックサブネットのインスタンスから、プライベート IP アドレスを使用して、プライベートサブネットのインスタンスに接続します。次に例を示します。

    ssh ec2-user@10.0.1.123
  2. プライベートインスタンスから、ICMP が有効なウェブサイトに対して ping コマンドを実行して、インターネットに接続できることをテストします。次に例を示します。

    ping ietf.org
    PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=47 time=86.0 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=47 time=75.6 ms ...

    ping コマンドをキャンセルするには、Ctrl + C を押します。ping コマンドが失敗した場合は、「インスタンスがインターネットにアクセスできない」を参照してください。

  3. (オプション) 必要がなくなった場合は、インスタンスを終了します。詳細については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「インスタンスの終了」を参照してください。

NAT ゲートウェイの使用の管理

デフォルトでは、IAM ユーザーには NAT ゲートウェイを使用するためのアクセス権限がありません。NAT ゲートウェイを作成、説明、削除するアクセス権限をユーザーに付与するための IAM ユーザーポリシーを作成できます。現在、ec2:*NatGateway* API オペレーションのいずれに対しても、リソースレベルのアクセス権限はサポートされていません。Amazon VPC の IAM ポリシーの詳細については、「Amazon VPC のリソースに対するアクセスの制御」を参照してください。

NAT ゲートウェイをタグ付けする

NAT ゲートウェイを識別したり、組織のニーズに応じて分類するのに役立つように、NAT ゲートウェイにタグを付けることができます。タグの使用の詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Amazon EC2 リソースにタグを付ける」を参照してください。

コスト割り当てタグは NAT ゲートウェイでサポートされているため、タグを使用して AWS 請求書を整理して、あなた自身のコスト構造を反映させます。詳細については、AWS Billing and Cost Management ユーザーガイドの「コスト配分タグの使用」を参照してください。タグによるコスト配分レポートの設定の詳細については、「AWS アカウント請求について」の「毎月のコスト配分レポート」を参照してください。

API と CLI の概要

このページで説明しているタスクは、コマンドラインまたは API を使用して実行できます。コマンドラインインターフェイスの詳細と利用可能な API オペレーションの一覧については、「Amazon VPC へのアクセス」を参照してください。

NAT ゲートウェイの作成

NAT ゲートウェイのタグ付け

NAT ゲートウェイの説明

NAT ゲートウェイの削除