VPC ピアリング接続でドメイン名を解決できないのはなぜですか?

最終更新日: 2022 年 4 月 12 日

Amazon Virtual Private Cloud (Amazon VPC) ピアリング接続でドメイン名を解決できません。これをトラブルシューティングするにはどうすればよいですか?

解決方法

注: 次のシナリオでは、VPC が AmazonProvidedDNS を使用して設定されていることを前提としています。カスタム DNS を使用しており、ドメイン名を解決できない場合は、次の操作を実行してください。

  • カスタム DNS にレコードを追加します。
    - または -
  • 特定のクエリを Amazon が提供する DNS に転送するように DNS を設定します。Amazon が提供する DNS は VPC CIDR の .2 IP アドレスです。

シナリオ 1: ピアリングされた VPC で作成された Amazon EC2 インスタンスのパブリック DNS に解決する

Amazon Elastic Compute Cloud (Amazon EC2) は、インスタンスの作成時にプライベートおよびパブリック DNS 名を割り当てます。デフォルトでは、次のドメイン名がインスタンスに割り当てられます。

  • プライベート DNS: ip-172-31-19-128.ec2.internal (us-east-1 リージョンの場合) または ip-172-31-12-97.us-west-2.compute.internal (その他のリージョンの場合)。
  • パブリック DNS: ec2-54-147-16-116.compute-1.amazonaws.com または ec2-35-88-61-144.us-west-2.compute.amazonaws.com

「example.com」などのカスタムドメイン名で DHCP オプションセットを設定すると、EC2 インスタンスはそのドメイン名を使用します。例えば、ip-172-31-12-97.us-west-2.example.com です。

AWS 内の任意のインスタンスからプライベート DNS に解決すると、インスタンスを作成した VPC のプライベート IP アドレスに解決されます。

$ dig ip-172-31-12-97.us-west-2.compute.internal +short
172.31.12.97

ピアリングされた VPC で作成された別のインスタンスからインスタンスのパブリック DNS を解決すると、インスタンスのパブリック IP アドレスに解決されます。

$ dig ec2-35-88-61-144.us-west-2.compute.amazonaws.com +short
35.88.61.144

パブリックドメイン名を EC2 インスタンスのプライベート IP アドレスに解決できます。これを実行するには、VPC ピアリング接続で次のいずれかのオプションをオンにします。

  • リクエスタ DNS 解決
    - または -
  • アクセプタ DNS 解決

詳細については、「VPC ピアリング接続の DNS 解決を有効にする」を参照してください。

DNS 解決をオンにすると、次の例に示すように、パブリック DNS をインスタンスのプライベート IP アドレスに解決できます。

$ dig ec2-35-88-61-144.us-west-2.compute.amazonaws.com +short
172.31.12.97

VPC ピアリングで DNS 解決をオンにした後に DNS 解決が機能しない場合は、次のステップに従って問題をトラブルシューティングします。

トラブルシューティング手順

1.    ソース VPC とターゲット VPC の ID を確認します。

2.    VPC ピアリングを使用して、ソース VPC とターゲット VPC の間にアクティブなピアリング接続があることを確認します。

3.    ピアリング接続で使用される両方の VPC で DNS ホスト名DNS 解決がオンになっていることを確認します。

4.    ピアリング接続の DNS 設定を確認し、リクエスタ VPC とアクセプタ VPC の両方で DNS 解決がオンになっていることを確認します。

5.    解決しようとしているパブリックドメイン名が存在することを確認します。ターゲット VPC をチェックして、ドメイン名に含まれるパブリック IP を持つインスタンスがあることを確認します。

6.    VPC の DNS 設定が AmazonProvidedDNS または CustomDNS のいずれであるかを確認します。カスタム DNS を使用している場合は、カスタム DNS がパブリックインスタンスのドメイン名を解決することを確認します。カスタム DNS がドメイン名を解決できない場合は、次のいずれかを実行します。

静的 DNS レコードを追加します。

- または -

クエリを AmazonProvidedDNS にリダイレクトします。

シナリオ 2: ピアリングされた VPC で作成されたサービスのドメイン名に解決する

ドメイン名を使用してサービスを作成すると、ピアリングされた VPC 内のインスタンスからそのドメイン名を解決できます。これは、これらのサービスのために作成されたドメイン名がパブリックレコードであり、どこからでも解決できるためです。例えば、次のドメイン名レコードはパブリックに解決可能です。

  • testCLB-520693273.us-east-1.elb.amazonaws.com
  • test-87913728ca9b8a68.elb.us-east-1.amazonaws.com
  • vpce-057d3426e21755b8a-svk1k3tm.ssm.us-east-1.vpce.amazonaws.com

注: ドメイン名がプライベートロードバランサー用であっても、レコードはパブリックであり、プライベート IP アドレスに解決されます。

「ssm.us-east-1.amazonaws.com」などのサービスエンドポイントドメイン名は、パブリック IP アドレスに解決されます。これは、プライベート DNS オプションをオンにした状態でピアリングされた VPC にインターフェイスエンドポイントが作成されている場合にも当てはまります。サービスエンドポイントのドメイン名は、インターフェイスエンドポイントのプライベート IP アドレスに解決できます。これを実行するには、該当のリソースが、インターフェイスエンドポイントを作成した VPC の一部となっている必要があります。

インターフェイス VPC エンドポイントは VPCA で設定されます。サービスドメイン名を VPCB から VPCA のインターフェイス VPC エンドポイント IP に解決しようとしています。このシナリオでは、VPC B に Amazon Route 53 アウトバウンドリゾルバーエンドポイントが必要であり、VPCA に Route 53 インバウンドリゾルバーエンドポイントが必要です。

注: ウィザードを使用して Route 53 リゾルバーを設定する方法については、「Route 53 Resolver の使用開始」を参照してください。

  1. VPCB (エンドポイント DNS にアクセスする場所) に Route 53 リゾルバーアウトバウンドエンドポイントを作成します。
  2. VPCA (エンドポイントを作成した場所) に Route 53 リゾルバーインバウンドエンドポイントを作成します。
  3. リージョン VPCA で、ドメイン名とターゲット IP アドレスを使用して Route 53 リゾルバールを作成します。

VPCB のアウトバウンドエンドポイントは、サービスドメイン名の DNS クエリを VPCA のインバウンドリゾルバーエンドポイントの IP に転送します。VPCA のインバウンドエンドポイントは、サービスドメイン名の DNS クエリを受信します。インバウンドエンドポイントは、解決のために、VPCA 内の Amazon 提供の DNS サーバーにクエリを転送します。

Route 53 リゾルバーエンドポイントがアクティブになると、プライベート DNS 名でエンドポイントにアクセスできます。

トラブルシューティング手順

1.    ソース VPC とターゲット VPC の ID を確認します。

2.    ソース VPC とターゲット VPC の間にアクティブなピアリング接続があることを確認します。

3.    ピアリング接続で使用される両方の VPC で DNS ホスト名DNS 解決がオンになっていることを確認します。

4.    ピアリング接続の DNS 設定を確認し、リクエスタ VPC とアクセプタ VPC の両方で DNS 解決がオンになっていることを確認します。

5.    解決しようとしているパブリックドメイン名が存在することを確認します。ターゲット VPC をチェックし、プライベート DNS オプションが有効になっている状態で、VPC 内に VPC インターフェイスエンドポイントが作成されていることを確認します。

6.    VPC で設定されている DNS が AmazonProvidedDNS または CustomDNS のいずれであるかを確認します。カスタム DNS を使用している場合は、カスタム DNS がドメイン名を解決できることを確認します。カスタム DNS がドメイン名を解決できない場合は、静的 DNS レコードを追加するか、カスタム DNS を設定して、クエリを AmazonprovidedDNS に転送します。

7.    VPC リゾルバーエンドポイントを持つサブネットに関連付けられたルートテーブルに、ソース VPC またはターゲット VPC をポイントするピアリングルートがあることを確認します。両方の VPC のすべてのインバウンドおよびアウトバウンド VPC リゾルバーエンドポイントについてこれを実行します。

8.    リゾルバーエンドポイントが作成されるサブネットに関連付けられたネットワーク ACL で、ピアリングされた VPC CIDR からのインバウンドトラフィックが許可されていることを確認します。

9.    インバウンドとアウトバウンドのリゾルバーが正しく設定され、トラフィックをネクストホップに転送するための正しいルールがあることを確認します。詳細については、「Route 53 リゾルバーのエンドポイントに関する DNS 解決の問題をトラブルシューティングするにはどうすればよいですか?」を参照してください。

シナリオ 3: プライベートホストゾーンで作成されたカスタムドメイン名

プライベートホストゾーンで作成されたレコードにドメインを解決するために使用される、カスタムドメイン名用のプライベートホストゾーンを作成しました。VPC A はプライベートホストゾーンに関連付けられています。VPC B には VPC A へのピアリング接続があります。カスタムドメイン名を VPC B から VPC A に解決し、そこでカスタムドメインを解決したいと考えています。

これを実現するには、次の 2 つの方法があります。

  • 解決策 1: VPC B からメインの VPC A の DNS にクエリを転送します。この設定はシナリオ 2 と似ています。
  • 解決策 2: レコードを作成したカスタムドメインのプライベートホストゾーンに VPC B を関連付けます。関連付けを実行すると、ピアリングされた両方の VPC のリソースから、プライベートホストゾーンのカスタムドメイン名を解決できます。

トラブルシューティング手順

注: 解決策 1 については、シナリオ 2 に記載されているトラブルシューティングのステップに従います。

1.    ソース VPC とターゲット VPC の ID を確認します。

2.    VPC で設定されている DNS が AmazonProvidedDNS または CustomDNS のいずれであるかを確認します。カスタム DNS を使用している場合、プライベートホストゾーンでホストされているレコードを解決することはできません。これを修正するには、カスタム DNS に静的ドメイン名レコードを追加します。または、クエリを AmazonprovidedDNS に転送するようにカスタム DNS を設定します。

3.    Amazon が提供する DNS を使用している場合は、解決しようとしているドメインと、そのドメインがホストされている場所 (Amazon Route 53 またはオンプレミスのいずれであるか) を確認します。オンプレミスの場合は、クエリをオンプレミス DNS に転送するために使用されるアウトバウンドリゾルバーエンドポイントが正しく設定されていることを確認します。

4.    Route 53 プライベートホストゾーンでホストされている場合は、ソース VPC がプライベートホストゾーンに関連付けられていることを確認します。ソース VPC は、カスタムドメイン名を解決しようとしている場所です。

5.    解決しようとしている FQDN が、プライベートホストゾーンにレコードを作成済みであることを確認します。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?