CNAMEレコード -- 正規名エイリアス
DNS CNAMEレコードがあるドメインから別のドメインへのエイリアスを作成する仕組みを解説します。制限事項、CDN統合、CNAMEとAレコードの違いを理解しましょう。
CNAMEAlias
Zone File Entry
www.example.com. IN CNAME example.com.
詳細な説明
CNAMEレコードとは?
CNAMEレコード(Canonical Nameレコード)は、あるドメイン名から別のドメイン名へのエイリアスを作成します。IPアドレスを指すのではなく、別のドメイン名を指し、そのドメイン名が解決されて最終的なIPアドレスが取得されます。
BINDゾーンファイルの構文
; wwwをルートドメインに向ける
www.example.com. 3600 IN CNAME example.com.
; サブドメインを外部サービスに向ける
blog.example.com. 3600 IN CNAME custom.ghost.io.
; CDN統合
static.example.com. 3600 IN CNAME d111111abcdef8.cloudfront.net.
CNAMEのターゲットは完全修飾ドメイン名(FQDN)でなければならず、IPアドレスは使用できません。
CNAME名前解決の仕組み
リゾルバがCNAMEに遭遇すると、チェーンをたどります:
- クライアントが
www.example.comを問い合わせ - DNSがCNAMEを返す:
www.example.com → example.com - リゾルバが
example.comを問い合わせ - DNSがAレコードを返す:
example.com → 203.0.113.50 - クライアントが
203.0.113.50に接続
直接的なAレコードと比較して、余分なDNSルックアップが発生するため、わずかなパフォーマンスコストがあります。
重要な制限事項
CNAMEレコードにはRFC 1034で定義された厳格なルールがあります:
- ゾーン頂点にCNAMEは不可:
example.com(ルートドメイン)にCNAMEを作成できません。頂点に存在しなければならないSOAレコードやNSレコードと競合するためです。これはDNSで最もよくある誤解の一つです。 - CNAMEと他のレコードの共存不可:ある名前にCNAMEレコードがある場合、同じ名前に他のレコードタイプ(A、MX、TXTなど)を持つことはできません。
- CNAMEチェーンのループ禁止:CNAMEチェーン(
a → b → c)は有効ですが、循環参照は名前解決の失敗を引き起こします。
CNAMEとAレコードの比較
| 特徴 | Aレコード | CNAME |
|---|---|---|
| 指す先 | IPアドレス | ドメイン名 |
| ゾーン頂点で使用 | 可 | 不可 |
| 追加ルックアップ | なし | あり |
| ターゲット変更の容易さ | IP更新が必要 | ターゲット側でIP変更を処理 |
よくある用途
wwwをルートドメインに向ける- サードパーティサービスとの統合(CDN、メールプロバイダー、SaaSプラットフォーム)
- 外部プラットフォームにリダイレクトする覚えやすいサブドメインの作成
- GoogleやMicrosoftなどのサービスのドメイン認証
ALIAS / ANAMEの代替手段
一部のDNSプロバイダーは、独自のALIASまたはANAMEレコードを提供しています。これはクエリ時にターゲットを解決してIPアドレスを直接返すことで、ゾーン頂点でCNAMEのように動作します。標準化はされていませんが、実際の制限を解決するものです。
ユースケース
CNAMEレコードは、CDN、ホスティングプラットフォーム、SaaS製品などの外部サービスにサブドメインを向ける場合や、wwwをルートドメインにエイリアスする場合に使用します。