はじめに
DNS の CNAME レコードは、他のレコードと同じ値を使った共存が出来ません。RFC で定義されている、DNS の中のルールになっています。
A CNAME record is not allowed to coexist with any other data.
TXT レコードやAレコードなど、種類問わずすべてのレコードと共存することが出来ません。
ELB を使って Web サービスをインターネットに公開する際に、CNAME レコードを使って公開する方法がありますが、上記の制限が問題になる場合があります。具体例を挙げましょう
-
orenoservice.co.jp
という名前でとあるWebサービスを公開している - この名前は CNAME レコードとして、ELB を指している
- なんらかの事情で、
orenoservice.co.jp
の値を使って TXT レコードを作りたい (Google Search Console などのサービスを利用する際に、TXT レコードを使ったドメインの所有状況を証明する場合がある) - しかし、
orenoservice.co.jp
は CNAMEレコードなので、TXT レコードを作成できないため、利用したいサービスが使えない
こういった問題を解決するために、Route 53 では Alias レコードという機能を提供しています。Alias レコードとは、AWS 上のリソースをルーティングするための Route 53 の拡張機能となっており、これを使うことで、Alias レコードと TXT レコードが共存できます。CNAME を使った制限を回避する点を初め、さまざまなメリットがあります。詳細は次の Document に記載されています。
念のため動作確認を行ったので、備忘録として残しておきます。
CNAME と他レコードは共存できない
まず、RFC で定義されている通り、CNAME と他レコードが共存できないことを確認していきましょう。
Route 53 上で、CNAME レコードを Create します。
thisistest.sugiaws.tokyo
という CNAME レコードを作成します。
CNAME が作成されました。
この状態で、同じく thisistest.sugiaws.tokyo
という TXT レコードを Create を試みてみます。
Error になりました。CNAME と同じ値を指定しているので、エラーになっています。
ALIAS レコードでやる
では次に、ALIAS レコードでやってみましょう。Create を押して作成を進めます。
右上の Alias を ON にするのがポイントです。
Alias Record が作成されています。
この状態で TXT レコードを Create してみます。
はい、CNAME レコード違い、ALIAS レコードでは、TXT レコードと共存できていますね。
もちろん、ALIAS レコードを使って、実際にブラウザからアクセス可能です。
この検証を通じてわかったこと
- ALIAS レコードを使えば、他レコードと共存できる
- 既存の DNS サービスからの移行の手間はあるかもしれないが、移行を検討するのが良い