DNS64 と NAT64 - Amazon Virtual Private Cloud

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

NAT64 とは

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

NAT64 は、既存の NAT ゲートウェイまたは作成した新しい NAT ゲートウェイで自動的に使用可能です。この機能を有効または無効にすることはできません。NAT ゲートウェイが配置されているサブネットは、NAT64 を機能させるためのデュアルスタックサブネットである必要はありません。

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

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

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

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

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

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

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

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

DNS64 と NAT64 を設定する

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

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

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

まず、(IPv6専用ワークロードを含むサブネットとは別に) パブリックサブネットに NAT ゲートウェイを設定する必要があります。例えば、NAT ゲートウェイを含むサブネットは、インターネットゲートウェイを指す 0.0.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 内のサービスに送信します。