インターネットでWebサイトを見るとき、あなたは「google.com
」や「yahoo.co.jp
」のようなドメイン名を入力しますよね。でも、コンピューターはこのような人間が読めるドメイン名ではなく、「172.217.161.142
」のようなIPアドレスで通信しています。
では、どうやってドメイン名とIPアドレスを結びつけているのでしょうか? その役割を果たすのがDNS(Domain Name System)というシステムです。そして、GCPが提供するDNSサービスが「Cloud DNS」です。
例えるなら、Cloud DNSはインターネット上の「電話帳」サービスのようなものです。あなたが「〇〇さんの電話番号は何番?」と電話帳に問い合わせるように、インターネット上のコンピューターはCloud DNSに「example.com
のIPアドレスは何番?」と問い合わせて、正しいIPアドレスを知ることで通信ができるようになります。
Cloud DNSとは?
Cloud DNSは、Google Cloudが提供する高性能でグローバルなDNSサービスです。ドメイン名とIPアドレスのマッピング(対応付け)を管理する「ゾーン」と呼ばれる情報をホストし、世界中の問い合わせに応答します。
- 何ができるの?
- あなたが取得したドメイン名(例:
my-awesome-app.com
)と、GCP上で動かしているWebサーバーの外部IPアドレスを紐付けます。 - サブドメイン(例:
api.my-awesome-app.com
、dev.my-awesome-app.com
)も管理できます。 - 内部的なドメイン名(インターネットからは引けない)をVPCネットワーク内で解決するためにも使えます。(後述の「プライベートゾーン」)
- あなたが取得したドメイン名(例:
- 特徴:
- 高可用性・低レイテンシ: Googleのグローバルなインフラ上で動作するため、非常に高速で信頼性が高く、世界中からのDNSクエリ(問い合わせ)に素早く応答します。
- マネージドサービス: DNSサーバーの構築や運用、スケーリングといった面倒な作業は全てGoogleが担当してくれます。あなたはレコードの管理に集中できます。
- スケーラブル: 大量のクエリにも自動的に対応し、トラフィックが増えても安定して動作します。
- グローバルリソース: Cloud DNSは、リージョンやゾーンに紐付かないグローバルリソースです。一度設定すれば、世界中のどこからでも同じ設定が利用できます。
DNSの基本的な用語とCloud DNSでの管理
Cloud DNSを使う上で、いくつか知っておくべき基本的なDNSの用語があります。
- ドメイン名 (Domain Name):
- 人間が覚えやすいインターネット上の名前(例:
example.com
,google.com
)。
- 人間が覚えやすいインターネット上の名前(例:
- ゾーン (Zone):
- 特定のドメイン名に関するDNSレコードの集合体を管理する単位です。Cloud DNSでは、この「ゾーン」を作成して、あなたのドメイン名を管理します。
- 例えば、
example.com
というドメイン名を管理したい場合、example.com
という名前の「マネージドゾーン」をCloud DNSで作成します。
- レコードセット (Record Set / Resource Record):
- ドメイン名とIPアドレスなどの具体的な情報を紐付けるエントリのことです。「リソースレコード」とも呼ばれます。
- 電話帳でいうところの「名前と電話番号のペア」です。
- 様々な種類がありますが、GCPでよく使うものをいくつか紹介します。
- Aレコード (Address Record):
- ドメイン名にIPv4アドレスを紐付けるためのレコード。最も一般的です。
- 例:
example.com
→192.0.2.1
- WebサーバーのIPアドレスをドメイン名に紐付ける際に使います。
- AAAAレコード (Quad-A Record):
- ドメイン名にIPv6アドレスを紐付けるためのレコード。
- CNAMEレコード (Canonical Name Record):
- ドメイン名に別のドメイン名を紐付けるためのレコード。エイリアス(別名)を設定する際に使います。
- 例:
www.example.com
→example.com
(つまり、www.example.com
はexample.com
と同じIPアドレスを参照する)
- NSレコード (Name Server Record):
- そのドメイン名を管理しているネームサーバーを指定するレコード。Cloud DNSでゾーンを作成すると、GCPが管理するネームサーバーのアドレスが自動的に払い出されます。あなたはドメイン取得サービス(お名前.com, ムームードメインなど)で、このNSレコードを登録する必要があります。
- MXレコード (Mail Exchange Record):
- そのドメイン宛のメールが送られるべきメールサーバーを指定するレコード。
- TXTレコード (Text Record):
- 任意のテキスト情報を紐付けるレコード。ドメイン認証やSPF(メール送信元認証)などに使われます。
- PTRレコード (Pointer Record):
- IPアドレスからドメイン名を引くための逆引きレコード。(通常はあまり意識しないかもしれません)
- Aレコード (Address Record):
Cloud DNSの利用シナリオ
- パブリックDNS (Public DNS):
- インターネット上にあなたのWebサイトやアプリケーションを公開する場合に利用します。
- Cloud DNSでゾーンを作成し、AレコードなどでGCP上のWebサーバーの外部IPアドレスを登録します。
- そして、ドメイン取得サービスで、あなたのドメインのネームサーバーをCloud DNSが払い出したNSレコードに設定します。
- これで、世界中のユーザーがあなたのドメイン名であなたのGCP上のサービスにアクセスできるようになります。
- プライベートDNS (Private DNS):
- GCPのVPCネットワーク内だけで利用できるDNSサービスです。インターネットからは参照できません。
- 例えば、VPCネットワーク内のアプリケーションサーバーから、データベースサーバーをIPアドレスではなく、
my-database.internal
のようなドメイン名でアクセスしたい場合に利用します。 - これにより、内部リソースのIPアドレスが変更されても、ドメイン名を変更するだけで対応できるため、管理が楽になります。
- セキュリティも向上します。
まとめ:インターネットの案内役
Cloud DNSは、GCP上でアプリケーションを公開したり、内部リソース間の連携をスムーズにしたりするために不可欠なサービスです。
- インターネットの「電話帳」として、ドメイン名とIPアドレスを結びつける重要な役割を担います。
- 高可用性、低レイテンシ、マネージドであるため、安心して利用できます。
- 特にパブリックDNSとプライベートDNSの2種類の使い方があることを覚えておきましょう。
- Webサイトを公開する際は、ドメイン取得サービスでのNSレコードの設定と、Cloud DNSでのAレコードの設定の両方が必要になります。
まずは、あなたのGCPプロジェクトでCloud DNSの「マネージドゾーン」を作成してみて、どのような設定ができるのか触れてみることをお勧めします。