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

NAT ゲートウェイ

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

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 ゲートウェイからインターネットゲートウェイにトラフィックをルーティングすると、インターネットゲートウェイによってトラフィックがドロップされます。

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

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 ゲートウェイは IPv4 または IPv6 トラフィックでサポートされます。IPv6 トラフィックの場合、NAT ゲートウェイは NAT64 を実行します。これを DNS64 (Route 53 Resolver で利用可能) と組み合わせて使用することで、Amazon VPC のサブネット内の IPv6 ワークロードが IPv4 リソースと通信できます。これらの IPv4 サービスは、オンプレミス環境またはインターネット上の、同じ VPC (別のサブネット内) または別の VPC に存在することがあります。

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

  • NAT ゲートウェイは 1 秒あたり 100 万パケットを処理でき、自動的に 1 秒あたり 400 万パケットまで拡張できます。この制限を超えると、NAT ゲートウェイはパケットをドロップします。パケット損失を防ぐには、リソースを分割して複数のサブネットに配置し、サブネットごとに個別の 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 ゲートウェイを指すルートに置き換えることができます。現在 NAT インスタンスで使用している同じ Elastic IP アドレスを NAT ゲートウェイで使用するには、まず NAT インスタンスに関連付けられている Elastic IP アドレスを解除し、そのアドレスを ゲートウェイの作成時に NAT ゲートウェイに関連付けます。

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

API と CLI の概要

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

NAT ゲートウェイの作成

NAT ゲートウェイの説明

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

NAT ゲートウェイの削除

DNS64 と NAT64

NAT ゲートウェイは、IPv6 から IPv4 へのネットワークアドレス変換をサポートします (一般的に NAT64 と言う)。NAT64 により、IPv6 AWS リソースが、オンプレミスネットワークまたはインターネット上で、同じ VPC または異なる VPC 内の IPv4 リソースと通信することが可能になります。Amazon Route 53 Resolver の DNS64 で NAT64 を使用することも、独自の DNS64 サーバーを使用することもできます。

DNS64 とは

VPC で実行される IPv6 専用ワークロードは、IPv6 ネットワークパケットのみを送受信できます。DNS64 を使用しない場合、IPv4 専用サービスの DNS クエリは IPv4 宛先アドレスを応答として生成するため、IPv6 専用サービスは IPv4 宛先アドレスと通信できません。この通信ギャップを埋めるために、サブネットの DNS64 を有効化して、それをサブネット内のすべての AWS リソースに適用します。DNS64 では、Amazon Route 53 Resolver はクエリしたサービスの DNS レコードを検索し、次のいずれかを実行します。

  • レコードに IPv6 アドレスが含まれている場合は、元のレコードが返され、IPv6 を介した変換なしに接続が確立されます。

  • DNS レコード内の宛先に関連付けられた IPv6 アドレスがない場合、Route 53 Resolver は、RFC6052 (64:ff9b::/96) で定義された既知の /96 プレフィックスの先頭に付加して IPv6 アドレスを合成し、レコード内の IPv4 アドレスに送信します。IPv6 専用サービスは、ネットワークパケットを合成 IPv6 アドレスに送信します。次に、このトラフィックを NAT ゲートウェイ経由でルーティングする必要があります。NAT ゲートウェイは、サブネット内の IPv6 サービスがそのサブネット外の IPv4 サービスにアクセスできるように、トラフィックに対して必要な変換を実行します。

サブネットを選択し、[Actions] (アクション) > [Modify DNS64 settings] (DNS64 の設定を変更する) の順に選択して、AWS CLI または VPC コンソールを使用する modify-subnet-attribute によって、サブネット上の DNS64 を有効または無効にすることができます。

NAT64 とは

NAT64 を使用すると、Amazon VPC 内の IPv6 専用サービスが、( 異なるサブネット内の) 同じ VPC 内、接続された VPC 内、オンプレミスネットワーク内、またはインターネット経由で、IPv4 専用サービスと通信できます。

NAT64 は、既存の NAT ゲートウェイまたは作成した新しい NAT ゲートウェイで自動的に使用可能です。この機能を有効または無効にすることはできません。

DNS64 を有効化し、IPv6 専用サービスが、NAT ゲートウェイを介して合成された IPv6 アドレスにネットワークパケットを送信すると、次のようになります。

  • 64:ff9b::/96 プレフィックスから、NAT ゲートウェイは元の宛先が IPv4 であることを認識し、以下を置き換えて、IPv6 パケットを IPv4 に変換します:

    • インターネットゲートウェイによって Elastic IP アドレスに変換された独自のプライベート IP を持つソース IPv6。

    • 64:ff9b::/96 プレフィックスを切り捨てた IPv6 から IPv4 への宛先。

  • NAT ゲートウェイは、インターネットゲートウェイ、仮想プライベートゲートウェイ、トランジットゲートウェイを介して変換された IPv4 パケットを宛先に送信し、接続を開始します。

  • IPv4 専用ホストは IPv4 応答パケットを送り返します。接続が確立されると、NAT ゲートウェイは外部ホストからの応答 IPv4 パケットを受け入れます。

  • 応答 IPv4 パケットの宛先は NAT ゲートウェイで、NAT ゲートウェイはパケットを受信し、その IP (宛先 IP) をホストの IPv6 アドレスに置き換え、64:ff9b::/96 を送信元 IPv4 アドレスの先頭に付加することによって、パケットの NAT を元に戻します。その後、パケットはローカルルートに従ってホストに流れます。

このようにして、NAT ゲートウェイにより、Amazon VPC サブネット内の IPv6 専用ワークロードが、サブネット外のどこでも IPv4 専用サービスと通信できるようになります。

DNS64 と NAT64 を設定する

このセクションのステップに従って DNS64 と NAT64 を設定し、IPv4 専用サービスとの通信を有効にします。

インターネット上の IPv4 専用サービスと AWS CLI の通信を有効にする

この例では、サブネット外のIPv4 専用サービスと通信する必要がある IPv6 専用ワークロードを持つサブネットがある場合に、これらの IPv6 専用サービスがインターネット上の IPv4 専用サービスと通信できるようにする方法を示します。

まず、(IPv6専用ワークロードを含むサブネットとは別に) パブリックサブネットに NAT ゲートウェイを設定する必要があります。例えば、NAT ゲートウェイを含むサブネットは、インターネットゲートウェイを指す 0.0/0 ルートを持つ必要があります。

これらの IPv6 専用サービスをインターネット上の IPv4 専用サービスに接続できるようにするには、次の手順を実行します。

  1. IPv6 専用ワークロードを含むサブネットのルートテーブルに次の 3 つのルートを追加します。

    • NAT ゲートウェイを指す IPv4 ルート (存在する場合)。

    • NAT ゲートウェイを指す 64:ff9b::/96 ルート。これにより、IPv4 専用サービスを宛先とする IPv6 専用ワークロードからのトラフィックを、NAT ゲートウェイ経由でルーティングできるようになります。

    • 出力専用インターネットゲートウェイ (またはインターネットゲートウェイ) を指す IPv6 ::/0 ルート。

    インターネットゲートウェイを指す ::/0 は、外部 IPv6 ホスト (VPC 外部) の IPv6 経由の接続開始を許可することに注意してください。

    aws ec2 create-route --route-table-id rtb-34056078 --destination-cidr-block 0.0.0.0/0 –-nat-gateway-id nat-05dba92075d71c408

    aws ec2 create-route --route-table-id rtb-34056078 –-destination-ipv6-cidr-block 64:ff9b::/96 –-nat-gateway-id nat-05dba92075d71c408

    aws ec2 create-route --route-table-id rtb-34056078 –-destination-ipv6-cidr-block ::/0 --egress-only-internet-gateway-id eigw-c0a643a9
  2. IPv6 専用ワークロードを含むサブネットで DNS64 機能を有効にします。

    aws ec2 modify-subnet-attribute --subnet-id subnet-1a2b3c4d –-enable-dns64

これで、プライベートサブネット内のリソースは、インターネット上の IPv4 サービスと IPv6 サービスの両方とのステートフル接続を確立できます。セキュリティグループと NACL を適切に設定して、出力トラフィックと入力トラフィックを 64:ff9b::/96 トラフィックに許可します。

オンプレミス環境で IPv4 専用サービスとの通信を有効にする

Amazon Route 53 Resolver を使用すると、DNS クエリを VPC からオンプレミスネットワークに、またはその逆に転送することができます。これを行うには、次を実行します。

  • VPC 内に Route 53 Resolver アウトバウンドエンドポイントを作成し、Route 53 Resolver がクエリを転送する送信元となる IPv4 アドレスを割り当てます。オンプレミス DNS リゾルバーの場合、これらは DNS クエリの送信元の IP アドレスであるため、IPv4 アドレスである必要があります。

  • 1 つ以上のルールを作成し、オンプレミスリゾルバーに Route 53 Resolver から転送する DNS クエリのためのドメイン名を指定します。また、オンプレミスリゾルバーの IPv4 アドレスも指定します。

  • Route 53 Resolver アウトバウンドエンドポイントを設定したことにより、IPv6 専用ワークロードを含むサブネットで DNS64 を有効にし、オンプレミスネットワーク宛てのデータを NAT ゲートウェイ経由でルーティングする必要があります。

オンプレミスネットワークの IPv4 専用の宛先に対する DNS64 の仕組み

  1. VPC の Route 53 Resolver アウトバウンドエンドポイントに IPv4 アドレスを割り当てます。

  2. IPv6 サービスからの DNS クエリは、IPv6 経由で Route 53 Resolver に送信されます。Route 53 Resolver は、クエリを転送ルールと照合し、オンプレミスリゾルバーの IPv4 アドレスを取得します。

  3. Route 53 Resolver は、クエリパケットを IPv6 から IPv4 に変換し、アウトバウンドエンドポイントに転送します。エンドポイントの各 IP アドレスは、DNS リゾルバーのオンプレミス IPv4 アドレスにリクエストを転送する 1 つの ENI を表します。

  4. オンプレミスリゾルバーは、IPv4 の応答パケットを、アウトバウンドエンドポイントを介して Route 53 Resolver に送信します。

  5. Route 53 Resolver はクエリが DNS64 対応のサブネットから作成されたと仮定し、次の 2 つの処理を行います。

    1. 応答パケットの内容をチェックします。レコードに IPv6 アドレスがある場合、Route 53 Resolver はコンテンツをそのまま保持しますが、IPv4 レコードのみを含む場合は、64:ff9b::/96 を IPv4 アドレスの先頭に付加して、同様に IPv6 レコードを合成します。

    2. コンテンツを再パッケージし、IPv6 経由で VPC 内のサービスに送信します。