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-a
と project-b
で Cloud DNS API の有効化をします。
限定公開ゾーンの作成
まず、 DNS プロデューサーネットワークである project-b
の Cloud DNS で限定公開ゾーンを作成します。
ゾーンの作成には、dns.managedZones.create
の権限が必要です。その他詳細なロールと権限については 公式ドキュメント をご参照ください。
以下の項目を設定します。
項目 | 設定値 | 備考 |
---|---|---|
ゾーンのタイプ | 非公開 |
今回は限定公開ゾーンのため |
ゾーン名 | g-gen-local-zone |
任意の名前 |
DNS 名 | g-gen.local |
限定公開ゾーンの DNS 名 |
オプション | デフォルト(限定公開) |
|
ネットワーク | vpc-b |
ゾーンを使用する VPC |
ゾーンを作成すると、自動で SOA レコードと NS レコードが作成されます。DNS 名の最後のドット(.)は自動で追加されます。
レコードセットの追加
検証用にレコードを追加します。
今回は、www.g-gen.local
の A レコードを追加します。IP アドレスは 1.1.1.1
とします。
レコードが追加されました。
現段階では、vpc-a
と vpc-b
は DNS ピアリングをしていないため vpc-a
にあるインスタンス からは www.g-gen.local
の名前解決はできません。
ピアリングゾーンの作成
次に、 project-a
でピアリングゾーンを作成します。
ピアリングゾーンの作成には、ピアリング先 VPC(DNS プロデューサーネットワーク)を含むプロジェクトで roles/dns.peer
のあるアカウントで作成する必要があります。その他詳細なロールと権限については 公式ドキュメント をご参照ください。
以下の項目を設定します。
項目 | 設定値 | 備考 |
---|---|---|
ゾーンのタイプ | 非公開 |
今回は限定公開ゾーンのため |
ゾーン名 | g-gen-local-peering-zone |
任意の名前 |
DNS 名 | g-gen.local |
今回は project-b で設定した g-gen.local |
オプション | DNS ピアリング |
|
ネットワーク | vpc-a |
ゾーンを使用する VPC |
ピアリングプロジェクト | project-b |
ピアリング先のプロジェクトを選択 |
ピアリングネットワーク | vpc-b |
ピアリング先の VPC |
以下のようにピアリングゾーンが作成されます。
名前解決の確認
DNS ピアリングの設定が完了したので、インスタンスから先程は名前解決ができなかった www.g-gen.local
の名前解決の確認をします。
無事、今回設定した A レコードの 1.1.1.1
が返ってくるようになりました。
藤岡 里美 (記事一覧)
クラウドソリューション部
数年前までチキン売ったりドレスショップで働いてました!2022年9月 G-gen にジョイン。ハイキューの映画を4回は見に行きたい。
Google Cloud All Certifications Engineer / Google Cloud Partner Top Engineer 2024
Follow @fujioka57621469