NAT ゲートウェイ - Amazon Virtual Private Cloud

NAT ゲートウェイ

NAT ゲートウェイは、ネットワークアドレス変換 (NAT) サービスです。NAT ゲートウェイを使用すると、プライベートサブネット内のインスタンスは VPC 外のサービスに接続できますが、外部サービスはそれらのインスタンスとの接続を開始できません。

NAT ゲートウェイは、インスタンスの送信元 IPv4 アドレスを NAT ゲートウェイのプライベート IP アドレスに置き換えます。インスタンスに応答トラフィックを送信するとき、NAT デバイスはアドレスを元の送信元 IPv4 アドレスに変換します。

NAT ゲートウェイを作成するときは、次のいずれかの接続タイプを指定します。

  • Public (パブリック) - (デフォルト) プライベートサブネットのインスタンスは、パブリック NAT ゲートウェイを介してインターネットに接続できますが、インターネットから未承諾のインバウンド接続を受信することはできません。パブリックサブネット内にパブリック NAT ゲートウェイを作成し、作成時に Elastic IP アドレスを NAT ゲートウェイに関連付ける必要があります。NAT ゲートウェイへのトラフィックは、VPC のインターネットゲートウェイにルーティングします。パブリック NAT ゲートウェイを使用して、他の VPC やオンプレミスのネットワークに接続することもできます。この場合、NAT ゲートウェイからのトラフィックを Transit Gateway または仮想プライベートゲートウェイ経由でルーティングします。

  • Private (プライベート) - プライベートサブネットのインスタンスは、プライベート NAT ゲートウェイを介して他の VPC またはオンプレミスのネットワークに接続できます。この場合、NAT ゲートウェイからのトラフィックを Transit Gateway または仮想プライベートゲートウェイ経由でルーティングできます。elastic IP アドレスをプライベート NAT ゲートウェイに関連付けることはできません。プライベート NAT ゲートウェイを使用して VPC にインターネットゲートウェイをアタッチできますが、プライベート NAT ゲートウェイからインターネットゲートウェイにトラフィックをルーティングすると、インターネットゲートウェイによってトラフィックがドロップされます。

Pricing

NAT ゲートウェイをプロビジョニングすると、NAT ゲートウェイが使用可能な時間と、そのゲートウェイが処理するデータ 1 GB ごとに課金されます。詳細については、「Amazon VPC の料金」を参照してください。

次の戦略は、NAT ゲートウェイのデータ転送料金を削減するのに役立ちます。

  • AWS リソースがアベイラビリティーゾーン間で大量のトラフィックを送受信する場合は、リソースが NAT ゲートウェイと同じアベイラビリティーゾーンにあることを確認するか、リソースと同じアベイラビリティーゾーンに NAT ゲートウェイを作成してください。

  • NAT ゲートウェイを経由するトラフィックのほとんどが、インターフェイスエンドポイントまたはゲートウェイエンドポイントをサポートする AWS サービスへのものである場合、これらのサービスのためにインターフェイスエンドポイントまたはゲートウェイエンドポイントの作成を検討してください。コスト削減の可能性については、「 AWS PrivateLink 料金」を参照してください。

NAT ゲートウェイの基本

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

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

NAT ゲートウェイには、次の特性と規則が適用されます。

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

  • NAT ゲートウェイは IPv6 トラフィックでサポートされていないため、送信専用 (Egress-Only) インターネットゲートウェイを使用します。詳細については、「」を参照してくださいEgress-Only インターネットゲートウェイ

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

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

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

  • プライベート NAT ゲートウェイは、設定されているサブネットから使用可能なプライベート IP アドレスを受け取ります。このプライベート IP アドレスはデタッチできません。また、別のプライベート IP アドレスをアタッチすることもできません。

  • NAT ゲートウェイにセキュリティグループを関連付けることはできません。セキュリティグループをインスタンスに関連付けて、インバウンドトラフィックとアウトバウンドトラフィックをコントロールできます。

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

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

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

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

NAT ゲートウェイの使用を制御する

デフォルトでは、IAM ユーザーには NAT ゲートウェイを使用するためのアクセス許可がありません。NAT ゲートウェイを作成、説明、削除するアクセス許可をユーザーに付与するための IAM ユーザーポリシーを作成できます。詳細については、「」を参照してくださいAmazon VPC の Identity and Access Management

NAT ゲートウェイの使用

Amazon VPC コンソールを使用して、NAT ゲートウェイを作成および管理できます。Amazon VPC ウィザードを使用して、パブリックサブネット、プライベートサブネット、NAT ゲートウェイを使用する VPC を作成することもできます。詳細については、「」を参照してくださいパブリックサブネットとプライベートサブネットを持つ VPC (NAT)

NAT ゲートウェイの作成

NAT ゲートウェイを作成するには、名前 (オプション)、サブネット、および接続タイプ (オプション) を入力します。パブリック NAT ゲートウェイでは、使用可能な Elastic IP アドレスを指定する必要があります。プライベート NAT ゲートウェイは、サブネットからランダムに選択されたプライマリプライベート IP アドレスを受け取ります。プライマリプライベート IP アドレスをデタッチしたり、セカンダリプライベート IP アドレスを追加したりすることはできません。

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

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

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

  3. [ NAT ゲートウェイの作成 ] を選択し、次の操作を行います。

    1. (任意)NAT ゲートウェイの名前を指定します。これにより、キーが Name、値は指定した名前であるタグが作成されます。

    2. NAT ゲートウェイを作成する先のサブネットを選択します。

    3. [Connectivity type] (接続タイプ) で、プライベート NAT ゲートウェイを作成する場合は [Private] (プライベート)、パブリック NAT ゲートウェイを作成する場合は [Public] (パブリック) (デフォルト) を選択します。

    4. (パブリック NAT ゲートウェイのみ) elastic IP allocation ID (elastic IP の割り当て ID) では、NAT ゲートウェイに関連付ける elastic IP アドレスを選択します。

    5. (オプション)タグごとに、[ Add new tag ] を選択し、キーの名前と値を入力します。

    6. Create a NAT Gateway (NAT ゲートウェイの作成) を選択します。

  4. NAT ゲートウェイの初期ステータスは Pending です 。ステータスが Available に変わると、NAT ゲートウェイを使用できるようになります。NAT ゲートウェイへのルートをプライベートサブネットのルートテーブルに追加し、NAT ゲートウェイのルートテーブルにルートを追加します。

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

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

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

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

NAT ゲートウェイの削除

不要になった NAT ゲートウェイは削除できます。NAT ゲートウェイを削除すると、そのエントリは Amazon VPC コンソールに 1 時間ほど表示され続けますが、その後自動的に削除されます。このエントリを手動で削除することはできません。

NAT ゲートウェイを削除すると、Elastic IP アドレスとの関連付けは解除されますが、アドレスはアカウントから解放されません。NAT ゲートウェイを削除する場合、NAT ゲートウェイのルートを削除または更新するまで、ルートの状態は blackhole になります。

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

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

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

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

  4. 確認を求められたら、「delete」と入力し、[削除] を選択します。

  5. NAT ゲートウェイに関連付けられた Elastic IP アドレスが不要になった場合は、そのアドレスを解放することをお勧めします。詳細については、「」を参照してくださいElastic IP アドレスを解放する

NAT ゲートウェイシナリオ

次に、パブリック NAT ゲートウェイおよびプライベート NAT ゲートウェイのユースケースの例を示します。

シナリオ: プライベートサブネットからインターネットにアクセスする

パブリック NAT ゲートウェイを使用して、プライベートサブネット内のインスタンスによるインターネットへのアウトバウンドトラフィックの送信を可能にすることはできますが、インターネットからインスタンスに対する接続の確立はできません。

このユースケースのアーキテクチャを以下に図で示します。アベイラビリティーゾーン A のパブリックサブネットには NAT ゲートウェイが含まれます。アベイラビリティーゾーン B のプライベートサブネットには、インスタンスが含まれます。ルーターは、プライベートサブネットのインスタンスから NAT ゲートウェイにインターネットバウンドトラフィックを送信します。NAT ゲートウェイは、NAT ゲートウェイの elastic IP アドレスを送信元 IP アドレスとして使用し、インターネットゲートウェイにトラフィックを送信します。


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

以下は、アベイラビリティーゾーン A のパブリックサブネットに関連付けられているルートテーブルです。最初のエントリは、VPC 内のローカルルーティングのデフォルトエントリです。このエントリにより、VPC 内のインスタンスは相互に通信できるようになります。2 番目のエントリは、他のすべてのサブネットトラフィックをインターネットゲートウェイに送信します。これにより、NAT ゲートウェイはインターネットにアクセスできます。

送信先 ターゲット
10.0.0.0/16 ローカル
0.0.0.0/0 internet-gateway-id

以下は、アベイラビリティーゾーン B のプライベートサブネットに関連付けられているルートテーブルです。最初のエントリは、VPC 内のローカルルーティングのデフォルトエントリです。このエントリにより、VPC 内のインスタンスは相互に通信できるようになります。2 番目のエントリは、他のすべてのサブネットトラフィック (インターネットバウンドトラフィックなど) を NAT ゲートウェイに送信します。

送信先 ターゲット
10.0.0.0/16 ローカル
0.0.0.0/0 nat-gateway-id

パブリック NAT ゲートウェイのテスト

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

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

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

  • プライベートサブネットのインスタンスから接続すると、ソース IP アドレスが表示されるようなサードパーティのウェブサイトやツールを使用します。送信元 IP アドレスとして NAT ゲートウェイの elastic IP アドレスが表示される必要があります。

これらのテストが失敗した場合は、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 アドレスを使用してパブリックサブネットのインスタンスに接続します。詳細については、「Linux インスタンスへの接続」を参照してください。[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 ユーザーガイドの「インスタンスの終了」を参照してください。

シナリオ: 許可リストに含まれる IP アドレスからのネットワークへのアクセスを許可する

オンプレミスネットワークへのアクセスが許可されている IP アドレス範囲から各インスタンスに個別の IP アドレスを割り当てる代わりに、許可されている IP アドレス範囲で VPC 内にサブネットを作成し、サブネット内にプライベート NAT ゲートウェイを作成し、VPC からのオンプレミスネットワーク宛てのトラフィックを NAT ゲートウェイ経由でルーティングできます。

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

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

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

API と CLI の概要

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

NAT ゲートウェイの作成

NAT ゲートウェイの説明

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

NAT ゲートウェイの削除