MENU
category

[AWS] ConflictingDomainExistsの原因|Private Hosted ZoneとVPC EndpointのPrivate DNS競合

ConflictingDomainExistsは、同じVPCに同名のPrivate Hosted Zoneが既に関連付いているときに確認するエラーです。Interface VPC EndpointのPrivate DNSが作るAWS管理ゾーンも対象になるため、自分のRoute 53ゾーン一覧だけでは原因を見落とすことがあります。

ここでは、CloudWatch Monitoringのエンドポイントを別アカウントへ集約する構成を例に、競合元の確認から切替後の試験までを整理します。コマンド中のIDは例示用です。対象は通常のPrivate Hosted ZoneのVPC関連付けで、Route 53 Profilesを使う場合は追加確認が必要です。

目次

どの設定が競合しているのか

利用側VPCにPrivate DNSが有効なInterface Endpointがあると、サービスの標準名をそのENIのプライベートIPへ解決する非表示ゾーンが作られます。同じVPCへ、集約側で用意した同名ゾーンを関連付けると競合します。仕組みはAWS PrivateLinkのPrivate DNSの説明で確認できます。

構成 ゾーンの例 確認すること
利用側EndpointのPrivate DNS monitoring.ap-northeast-1.amazonaws.com PrivateDnsEnabledと所有サービス
集約側で作成したPrivate Hosted Zone 同上 所有アカウントと関連付け先VPC

エラーの定義はAssociateVPCWithHostedZone APIを参照してください。競合だけを理由にEndpointを削除せず、まず利用中の通信を確認します。

1. 関連付け先VPCから競合元を調べる

対象VPCを参照できる認証情報で実行します。AWS CLIの複数行例はBash用です。

aws route53 list-hosted-zones-by-vpc \
  --vpc-id vpc-xxxxxxxxxxxxxxxxx \
  --vpc-region ap-northeast-1

HostedZoneSummariesのNameとOwnerを確認します。OwningAccountはアカウント管理、OwningServiceはAWSサービス管理の手掛かりです。自分のアカウントの一覧に見えなくても、他アカウントやAWSサービスのゾーンが関連付いている場合があります。

Route 53 Profiles経由の関連付けは、このAPIの結果に含まれません。Profilesを利用中ならProfile側の関連リソースも調べます。詳しくはListHostedZonesByVPCの対象範囲を参照してください。

2. 同じサービスのEndpointを確認する

aws ec2 describe-vpc-endpoints \
  --region ap-northeast-1 \
  --filters Name=vpc-id,Values=vpc-xxxxxxxxxxxxxxxxx Name=service-name,Values=com.amazonaws.ap-northeast-1.monitoring \
  --query 'VpcEndpoints[].{Id:VpcEndpointId,State:State,PrivateDNS:PrivateDnsEnabled,DNS:DnsEntries}' \
  --output json

ゾーン名とサービス名を対応させ、PrivateDNSがtrueか確認します。集約先Endpointは、その所有アカウントで別途確認します。

3. 残す接続経路を決める

目指す構成 対応の方針
各VPCのEndpointを継続利用 既存Private DNSを維持し、同名の集約ゾーンを重ねない
集約Endpointへ切替 集約先のDNSレコード・経路・アクセス制御を準備し、利用側の競合するPrivate DNSを切り替える
既存Endpoint自体が不要 依存システムがないことと切り戻し方法を確認してから削除を検討する

Private DNSを無効にしただけでは、標準名が集約先へ向くわけではありません。手動ゾーンのAliasなど、代わりの名前解決設定が必要です。DNSキャッシュが残る間の通信も考慮し、変更前の設定と想定する戻し方を記録します。手動ゾーンや承認を先に準備できても、競合する同名ゾーンを同時に関連付けることはできません。

4. 別アカウントのVPCを関連付ける

通常のクロスアカウント関連付けでは、ゾーン所有者が承認し、VPC所有者が関連付けを実行します。競合解消後に進めてください。

# ゾーン所有アカウント
aws route53 create-vpc-association-authorization --hosted-zone-id ZXXXXXXXXXXXX --vpc VPCRegion=ap-northeast-1,VPCId=vpc-xxxxxxxxxxxxxxxxx

# VPC所有アカウント
aws route53 associate-vpc-with-hosted-zone --hosted-zone-id ZXXXXXXXXXXXX --vpc VPCRegion=ap-northeast-1,VPCId=vpc-xxxxxxxxxxxxxxxxx

# 関連付け完了後、ゾーン所有アカウントで不要な承認を削除
aws route53 delete-vpc-association-authorization --hosted-zone-id ZXXXXXXXXXXXX --vpc VPCRegion=ap-northeast-1,VPCId=vpc-xxxxxxxxxxxxxxxxx

最後の操作は承認の削除であり、完了済みの関連付けを解除する操作ではありません。AWS公式のクロスアカウント関連付け手順と、作業に使用するアカウントを照合してください。

5. DNS・接続・業務処理を分けて試験する

nslookup monitoring.ap-northeast-1.amazonaws.com
curl -v --connect-timeout 5 https://monitoring.ap-northeast-1.amazonaws.com/
  1. 関連付けたゾーンの所有者とVPCが意図した組み合わせか確認する。
  2. 問題のアプリケーションが動くサーバーから名前解決し、集約先ENIのIPと照合する。
  3. TCP/443とTLSを確認する。プロキシ経由なら、その経路も区別する。
  4. 実際に使うIAMロールでサービスの操作を試し、アプリケーションの正常動作を確認する。

署名なしのcurlにHTTP 400や403が返っても、それだけで業務利用の成功とは判断できません。ネットワークの疎通とIAM・Endpointポリシーによる認可は別に確認します。

よくある疑問

ゾーンが一覧にないのに競合するのはなぜ?

AWS管理ゾーンや別アカウントの関連付けが候補です。VPCを起点に調べ、Profilesを使う場合はその関連付けも確認します。

親子関係のゾーンも同名競合になる?

同名の重複とは異なります。重なる名前空間では最も具体的なゾーンが選ばれます。そこに必要なレコードがなければ、パブリックDNSへ自動的に探し直さずNXDOMAINになる場合があります。Private Hosted Zoneの名前空間とResolverの注意点を確認してください。

関連する調査

IPへ名前解決できるのに接続が止まる場合はSSM Agentのi/o timeoutの切り分けへ。全体の確認順序と記録用テンプレートはAWS閉域ネットワークの設計・調査ガイドにまとめています。

仕様確認日:2026年9月14日。構成例をもとにした解説であり、読者環境での動作を保証するものではありません。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次