CNAMEレコード (Canonical Name) とは何か?
CNAME (Canonical Name)レコードはDNSレコードタイプで、1つのドメイン名から別のドメイン名へのエイリアスを作成します。AレコードのようにダイレクトにIPアドレスをポイントするのではなく、CNAMEは別のドメイン名をポイントして、その後IPアドレスに解決されます。
CNAMEレコードの動作方式
CNAMEを設定する場合:
www.example.com. IN CNAME example.com.
解決プロセス:
1. ユーザーが www.example.com をリクエスト
2. DNSが example.com をポイントするCNAMEを見つける
3. DNSが example.com のAレコードを解決
4. 最終的なIPアドレスが返される
このチェーン解決は、CNAMEターゲットは最終的にAまたはAAAAAレコードに解決される必要があることを意味します。
一般的なCNAME用途
WWW サブドメイン
wwwをルートドメインにポイント:
www IN CNAME example.com.
CDN統合
ドメインをCDNエンドポイントにポイント:
cdn.example.com IN CNAME d111111abcdef8.cloudfront.net.
プラットフォームホスティング
ホスティングプロバイダーにポイント:
blog.example.com IN CNAME yoursite.wordpress.com.
shop.example.com IN CNAME shops.myshopify.com.
SaaS アプリケーション
SaaSプラットフォームにサブドメインを接続:
docs.example.com IN CNAME example.gitbook.io.
status.example.com IN CNAME stats.uptimerobot.com.
CNAMEと A レコード
| シナリオ | CNAMEを使用 | Aレコードを使用 |
|---|---|---|
| ルートドメイン (@) | ❌ 許可されていません | ✅ 必須 |
| 静的IPへのサブドメイン | どちらでも機能 | ✅ ダイレクト |
| プロバイダーへのサブドメイン | ✅ 推奨 | ❌ IPは変更される可能性 |
| CDN構成 | ✅ 典型的 | 異なる |
| ロードバランシング | ❌ 複数を持つことができません | ✅ 複数IP |
ルートドメインがCNAMEを使用できない理由
DNS仕様 (RFC 1034)は、CNAME レコードが同じ名前の他のレコードタイプとコン存在することを禁止しています。ルートドメインはSOAおよびNSレコードが必要なため、CNAMEレコードを持つことはできません。
ルートドメインエイリアシング向けの解決策:- ALIAS/ANAME レコード: DNS プロバイダー固有の疑似レコード
- CNAME フラットニング: CloudflareおよびOthersがCNAMEを A レコードに解決
- wwwをルートにリダイレクト: www向けにCNAMEを使用し、アプリケーションレベルで @ にリダイレクト
CNAMEチェーン
CNAMEは他のCNAMEをポイントできます (チェーニング):
blog.example.com → myblog.host.com
myblog.host.com → lb-1234.hosting.com
lb-1234.hosting.com → 203.0.113.50 (A レコード)
有効ですが、チェーンはレイテンシーを追加します。ほとんどのDNSプロバイダーはチェーン長を無限ループを防ぐために制限します。
CNAMEレコード構成
基本構文
subdomain IN CNAME target.domain.com.
重要: ターゲットドメインはトレーリングドット (.)を含めるべきです。なしでは、一部のDNSサーバーは発信元ドメインを付加します。
TTL考慮事項
CNAME TTLは変更がどの程度速く伝播するかに影響:
www 300 IN CNAME example.com.
低いTTL (300秒) でより高速な更新が可能; より高いTTLはDNSクエリを削減します。
CNAMEレコードの確認
dig を使用:dig www.example.com CNAME
; ANSWER SECTION:
www.example.com. 300 IN CNAME example.com.
完全な解決トレース:
dig +trace www.example.com
一般的なCNAME問題
ルートドメインのCNAME
example.com IN CNAME other.com. ; 無効
これはメール (MXレコード)および他のサービスを破壊します。
他のレコードを使用したCNAME
blog.example.com IN CNAME host.com.
blog.example.com IN MX mail.host.com. ; 無効
CNAMEを持つ名前は他のレコードタイプを持つことはできません。
ターゲットレコード欠落
CNAMEターゲットが解決しない場合、サブドメインも機能しません。CNAMEを構成する前にターゲットが有効であることを確認してください。
ベストプラクティス
1. サードパーティサービス向けCNAMEを使用: プロバイダーにIP変更を管理させる
2. 深いチェーンを避ける: 各ホップはレイテンシーを追加
3. ルートをCNAMEしないでください: A レコードまたはALIASを使用
4. トレーリングドットを含める: 完全修飾ターゲット名を確認
5. CNAMEターゲットをモニター: 外部変更はサイトに影響する可能性
6. MXレコードでCNAMEを使用しないでください: RFC 2181に従う