プロジェクト間で Cloud DNS の ピアリングをする方法

記事タイトルとURLをコピーする

G-gen の藤岡です。当記事では、 Google Cloud (旧称 GCP) の Cloud DNS の DNS ピアリングを使用して、異なるプロジェクトの Cloud DNS ゾーンの名前解決をする方法について紹介します。

Cloud DNS とは

Cloud DNS は、 Google Cloud (旧称 GCP) のマネージドな DNS サービスです。 ここでは、今回の構成で出てくる用語について簡単に説明します。詳細については、公式ドキュメントをご参照ください。

一般公開 DNS ゾーンと限定公開 DNS ゾーン

Cloud DNS では以下のゾーンのタイプが作成可能です。

  • 一般公開ゾーン
    • インターネットから名前解決が
  • 限定公開ゾーン
    • インターネットから名前解決が 不可
    • 設定した 1 つ以上の VPC ネットワークからのみ名前解決が可能

名前解決の順序

Google Cloud が持つ Virtual Private Cloud(以下 VPC) は、Google Compute Engine 等のインスタンスに名前解決サービスを提供しています。 インスタンスが、デフォルトで設定されているメタデータサーバー( 169.254.169.254 )をネームサーバーとして使用する場合、規定された順序に従って名前解決が行われます。

DNS ピアリング

Cloud DNS の機能の中に DNS ピアリングがあります。名前の似ているサービスとして VPC ピアリングがありますが、別サービスです。

DNS ピアリングを使用することで、別の VPC に設定されているゾーンの名前解決が可能になります。

注意点として、 DNS ピアリングは 片方向の関係 です。そのため、当ブログの後半で紹介する構成において、仮に vpc-a で限定公開ゾーンを作成し、 vpc-b でそのゾーンの名前解決ができるようにするには、追加で DNS ピアリングを設定する必要があります。

その他の制約事項等については 公式ドキュメント をご参照ください。

実施内容

構成

今回の構成は以下の通りです。

構成図

構成図に DNS コンシューマネットワークDNS プロデューサーネットワーク という聞き慣れない用語がありますが、ここでは詳細な説明は割愛します。DNS コンシューマネットワークは、別 VPC で作成されているゾーンの名前解決を 参照する側 で、DNS プロデューサーネットワークは 参照される側 です。

API の有効化

project-aproject-b で Cloud DNS API の有効化をします。

Cloud DNS API の有効化(project-a / project-b)

限定公開ゾーンの作成

まず、 DNS プロデューサーネットワークである project-b の Cloud DNS で限定公開ゾーンを作成します。

ゾーンの作成には、dns.managedZones.create の権限が必要です。その他詳細なロールと権限については 公式ドキュメント をご参照ください。

Cloud DNS の画面(project-b)

以下の項目を設定します。

項目 設定値 備考
ゾーンのタイプ 非公開 今回は限定公開ゾーンのため
ゾーン名 g-gen-local-zone 任意の名前
DNS 名 g-gen.local 限定公開ゾーンの DNS 名
オプション デフォルト(限定公開)
ネットワーク vpc-b ゾーンを使用する VPC

DNS ゾーンの作成画面(project-b)

ゾーンを作成すると、自動で SOA レコードと NS レコードが作成されます。DNS 名の最後のドット(.)は自動で追加されます。

DNS ゾーンの画面(project-b)

レコードセットの追加

検証用にレコードを追加します。

レコードセットを追加(project-b)

今回は、www.g-gen.local の A レコードを追加します。IP アドレスは 1.1.1.1 とします。

レコードセットの作成画面(project-b)

レコードが追加されました。

DNS ゾーンの画面(project-b)

現段階では、vpc-avpc-b は DNS ピアリングをしていないため vpc-a にあるインスタンス からは www.g-gen.local の名前解決はできません。

インスタンスの名前解決画面(project-a)

ピアリングゾーンの作成

次に、 project-a でピアリングゾーンを作成します。

ピアリングゾーンの作成には、ピアリング先 VPC(DNS プロデューサーネットワーク)を含むプロジェクトで roles/dns.peer のあるアカウントで作成する必要があります。その他詳細なロールと権限については 公式ドキュメント をご参照ください。

Cloud DNS の画面(project-a)

以下の項目を設定します。

項目 設定値 備考
ゾーンのタイプ 非公開 今回は限定公開ゾーンのため
ゾーン名 g-gen-local-peering-zone 任意の名前
DNS 名 g-gen.local 今回は project-b で設定した g-gen.local
オプション DNS ピアリング
ネットワーク vpc-a ゾーンを使用する VPC
ピアリングプロジェクト project-b ピアリング先のプロジェクトを選択
ピアリングネットワーク vpc-b ピアリング先の VPC

DNS ゾーンの作成画面(project-a)

以下のようにピアリングゾーンが作成されます。

DNS ゾーンの画面(project-a)

名前解決の確認

DNS ピアリングの設定が完了したので、インスタンスから先程は名前解決ができなかった www.g-gen.local の名前解決の確認をします。

インスタンスの名前解決画面(project-a)

無事、今回設定した A レコードの 1.1.1.1 が返ってくるようになりました。

藤岡 里美 (記事一覧)

クラウドソリューション部

数年前までチキン売ったりドレスショップで働いてました!2022年9月 G-gen にジョイン。ハイキューの映画を4回は見に行きたい。

Google Cloud All Certifications Engineer / Google Cloud Partner Top Engineer 2024