Amazon Route 53 Resolver DNS を利用した DNS 解決について調べてみた

Amazon Route 53 Resolver DNS を利用した DNS 解決について、手を動かして確認してみました。 同一の VPC に存在する EC2 間の名前解決では、プライベート IPv4 DNS 名、パブリック IPv4 DNS 名はともにプライベート IP に解決され、 異なる VPC に存在する EC2 間の名前解決では、パブリック IPv4 DNS 名はパブリック IP に解決されることを確認しました。
2024.05.11

お疲れ様です。AWS 事業本部の平根です。 Amazon Route 53 Resolver(旧 Amazon DNS サーバー)を利用した EC2 の名前解決動作について確認をする機会があったのでご紹介します。

Amazon Route 53 Resolver とは

各アベイラビリティゾーンに組み込まれた AWS 管理の DNS サーバーであり、「Amazon DNS サーバー」または「AmazonProvidedDNS」とも呼ばれます。
デフォルトでは、VPC 内に起動された EC2 から名前解決を行う際は、 VPC の CIDR + 2 にプロビジョニングされた Amazon Route 53 Resolver を用いるよう設定されています。
CIDR が「10.0.0.0/16」の VPC なら「10.0.0.2」、「172.31.0.0/16」なら「172.31.0.2」が Amazon Route 53 Resolver の IP アドレスとなります。
また、「169.254.169.253」で利用することも可能です。

引用元:VPC の DNS 属性 - Amazon DNS サーバー

VPC の DNS に関する設定

今回は VPC について、以下の DNS に関する設定を有効化した状態で名前解決の挙動を確認します。

DNS ホスト名を有効化
有効化により VPC 内に起動されたインスタンスがパブリック DNS ホスト名を取得します。

DNS 解決を有効化
有効化により VPC は Amazon Route 53 Resolver を介した DNS 解決をサポートします。

参考:VPC の DNS 属性 - VPC 内の DNS 属性

今回の環境

2 つの VPC(VPC A, VPC B)を作成します。
各 VPC にパブリックサブネットを作成し、VPC A には EC2 を 2 台(EC2_A_1, EC2_A_2 )、VPC B には EC2 を 1 台起動します。
各 EC2 にはパブリック IPv4 アドレスを付与します。

今回は、上記の環境で以下の 4 種の名前解決を実施し、結果を確認していきます。

  • EC2_A_1 から EC2_A_2 の DNS 名を解決
    • プライベート DNS 名(ip-192-168-3-8.ap-northeast-1.compute.internal)を解決
    • パブリック DNS 名(ec2-13-230-222-180.ap-northeast-1.compute.amazonaws.com)を解決
  • EC2_A_1 から EC2_B_1 の DNS 名を解決
    • プライベート DNS 名(ip-10-1-1-7.ap-northeast-1.compute.internal)を解決
    • パブリック DNS 名(ec2-43-207-222-2.ap-northeast-1.compute.amazonaws.com)を解決

確認してみる

EC2_A_1 から EC2_A_2 の DNS 名を解決

確認結果

  • EC2_A_2 のプライベート IPv4 DNS 名の解決では、プライベート IP (192.168.3.8)が返されました
  • EC2_A_2 のパブリック IPv4 DNS 名の解決でも、プライベート IP (192.168.3.8)が返されました

同一の VPC に存在する EC2 間の名前解決では、プライベート IPv4 DNS 名、パブリック IPv4 DNS 名はともにプライベート IP に解決されることが確認できました。

EC2_A_1 から EC2_B_1 の DNS 名を解決

確認結果

  • EC2_B_1 のプライベート IPv4 DNS 名の解決では、プライベート IP (10.1.1.7)が返されました
  • EC2_B_1 のパブリック IPv4 DNS 名の解決では、パブリック IP (43.207.222.2)が返されました

異なる VPC に存在する EC2 間の名前解決では、パブリック IPv4 DNS 名はパブリック IP に解決されることがわかりました。

一方、同一 VPC 間の名前解決と同様に、プライベート IPv4 DNS 名はプライベート IP に解決されることがわかりました。
この仕様は以下のように公開ドキュメントでも説明されています。

プライベート IP DNS 名 (IPv4 専用)

プライベート IP DNS 名 (IPv4 専用) のホスト名は、同じ VPC 内のインスタンス間の通信に使用できます。インスタンスが同じ AWS リージョンにあり、他のインスタンスのホスト名が RFC 1918 によって定義されたプライベートアドレス空間の範囲内にある限り、他の VPC 内の他のインスタンスのプライベート IP DNS 名 (IPv4 のみ) のホスト名を解決できます: 10.0.0.0 - 10.255.255.255 (10/8 prefix)、172.16.0.0 - 172.31.255.255 (172.16/12 prefix)、および 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)。

引用元:VPC の DNS 属性 - DNS ホスト名

異なる VPC のインスタンス間でも名前解決は可能なものの、プライベート IP DNS 名 (IPv4 専用) のホスト名は同じ VPC 内のインスタンス間の通信でのみ使用できるようです。

感想

基本的な内容でしたが、今回は Amazon Route 53 Resolver を利用した EC2 の名前解決動作について確認を行いました。
同一 AWS リージョンであれば、異なる VPC 間に存在する EC2 インスタンス間でも、プライベート IPv4 DNS 名はプライベート IP アドレスに解決される仕様であることは知らなかったので勉強になりました。

おまけ

VPC ピアリング接続時の名前解決
異なる VPC のインスタンス間でも、VPC ピアリングの「DNS解決サポート」を有効化することにより、パブリック DNS 名をプライベート IPV4 アドレスに解決できるようになります。
詳しくは以下のブログに紹介されておりますので参照ください。

この記事がどなたかの参考になれば幸いです。
以上、平根でした。