Amazon Route 53でサポートされるレコードタイプについてざっくり理解する

2024.05.15

こんにちは、NTT東日本の白鳥です。
DevelopersIOで記事を書くのが楽しくなってきました。
今回は、Amazon Route 53でサポートされるレコードタイプについての解説となります。
※本記事はDNSのレコードタイプすべてを網羅するものではなく、Amazon Route 53において使うレコードタイプについての理解に絞っております。

そもそものDNSの解説

DNS自体の解説については軽くに留めますが、「ドメインネームを管理・運用するためのシステム」が正しくなります。
よく「ドメインネームからIPアドレスを紐づける仕組み」などと言われることもありますが、紐づける対象はIPアドレスだけではなく認証キーや電話番号もあります。
DevelopersIOにもDNSやAmazon Route 53について解説した記事はたくさんあるので、その中からいくつかピックアップしてご紹介します。

DevelopersIO内の参考記事

[レポート] DNSにちょっとだけ詳しくなりたい人に贈る少し突っ込んだDNSの話 #devio_day1 #main

以前やった社内向けDNS勉強会の資料を公開してみた

AKIBA.aws 第1回 基礎編で「AWSのDNS」について話してきました #akibaaws

レコードタイプってどういうもの?

DNSはリソースレコードというドメイン名に関連付けられた情報を持っています。
リソースレコードにはさまざまな種類があり、それぞれに役割と記述のルールが定められています。
省略形として単に「レコード」と呼んでいます。
リソースレコードの種類のことをレコードタイプと呼んでいます。
基本的な記述方式は、下記のような形になります。

(記述例)
example.co.jp. 3600 IN A XXX.XXX.XXX.XXX

Domain Name TTL class type RDATA
記述例 example.co.jp. 3600 IN A XXX.XXX.XXX.XXX

各値の意味を簡単に解説しますと、下記のようになります。

  • Domain Name
    リソースレコードのドメイン名です
  • TTL
    リソースレコードをキャッシュに保持してもよい時間を記載します(省略可)
  • class
    リソースレコードのクラス。通常IN(Internet)だけが使われます。
  • type
    リソースレコードのレコードタイプ。この先で解説します
  • RDATA
    リソースレコードのデータ。レコードタイプによって記述方法が異なります。

Amazon Route 53でサポートされるレコードタイプについて

Amazon Route 53では、以下の13タイプのレコードタイプがサポートされています。

レコードタイプ 対応するRFC 現行RFC制定年
Aレコード RFC 1035 1987
AAAAレコード RFC 3596 2003
CAAレコード RFC 8659 2019
CNAMEレコード RFC 1035 1987
DSレコード RFC 4034 2005
MXレコード RFC 1035, RFC 7505 1987, 2015
NAPTRレコード RFC 3403 2002
NSレコード RFC 1035 1987
PTRレコード RFC 1035 1987
SOAレコード RFC 1035, RFC 2308 1987, 1998
SPFレコード RFC 7208 2014
SRVレコード RFC 2782 2000
TXTレコード RFC 1035 1987
ALIASレコード - -

最も古いものでは1987年に制定されたものとなり、DNSが良く考えられた仕組みであることを示しています。
これら一つ一つを見ていきましょう。Amazon Route 53における各レコードの詳細な記述方法については公式ドキュメントを参照ください。

Aレコード

こちらが冒頭にご紹介した「ドメインとIPアドレスを紐づける」レコードタイプとなります。Aレコードはドメイン名とIPv4アドレスを紐づけます。
同じドメイン名に対して複数記述することもできます。

(記述例)
example.co.jp. 3600 IN A XXX.XXX.XXX.XXX

AAAAレコード

こちらも同じく「ドメインネームとIPアドレスを紐づける」レコードタイプですが、こちらはドメイン名とIPv6アドレスを紐づけます。

CAAレコード

CAAレコードは、ドメイン名の登録者が登録されたドメイン名に対応する証明書の発行を許可する認証局(CA)を指定するリソースレコードになります。CAAレコードを設定することで、下記の効果を期待することができます。

  • 証明書の誤発行を防止
  • 不正な証明書発行要求の検知

CNAMEレコード

CNAME(シーネーム)レコードは別名に対する正式名を指定するためのリソースレコードです。CDNのIPアドレスの逆引きや、一台のサーバで複数のサービスを提供しているなどといったケースで使用されています。他にも利用シーンがございます。
このような形で記述します。

(記述例)
service.example.co.jp. IN CNAME www.example.co.jp.
後述するALIASレコードとよく似ておりますが、Amazon Route 53においてCNAMEレコードはZone Apex以外のAWSリソース以外のドメインに対して指定するのが一般的です。
詳しい使い分けは公式ドキュメントや、下記の記事を参考にするとよいかと思います。

[初心者向け] APEX ドメインと CNAME レコード制約についてまとめてみた

DSレコード

DNSSECを実装する際に必要となります。親野損に設定される子ゾーンのDNS鍵のリソースレコードを参照するリソースレコードです。親ゾーンのDSレコードと子ゾーンのKSK公開鍵の情報が一致することで、DNSSECを実装できるようになります。
DNSSECを有効化してみたブログは、下記を参照ください。

Route 53で管理しているドメインでDNSSECを有効化してみた

MXレコード

Mail Exchange、つまりメールサーバを指定するためのリソースレコードです。特徴として、優先度を指定するプリファレンスがあり、より小さなプリファレンスが常に優先されます。
Amazon Route 53においては同一のプリファレンスを指定すると、ほぼ均等的にルーティングされます。

NAPTRレコード

解説すると長くなるのと、よく使われるシーンは電話番号からSIP URIを検索したりするレコードなので、SIPや電話番号を取り扱うシステムを構築する際に使う、くらいに記憶しておけばよいかと思います。

NSレコード

あるゾーンの中で情報を保持し、他のサーバに問い合わせることなく応答を返すことができる権威サーバを指定するレコードになります。あるゾーンの中で権限を委任する際に使用されます。
委任先はAレコード等を持つ必要がありますが、一方的に委任することもできるので、権威サーバの設計には注意を払う必要があります。 このあたりの話は、JPRSの記事が参考になります。

親の心子知らず?委任にまつわる諸問題について考える~ランチのおともにDNS~

公式ドキュメントにもあるように、Amazon Route 53においてはまれな状況を除き、NSレコードはデフォルトから追加、変更、削除しないことが推奨です。

PTRレコード

別名、逆引きDNSとも言われます。IPアドレスからドメイン名を特定するレコードになります。IPv4、IPv6ともにPTRレコードで記述ができます。
用途としては、アクセス元を判別したり、通信相手の存在を確認する際に使われます。
AWSにおいては、Amazon SESで送信ドメイン認証で使われたりしています。

SOAレコード

ゾーンの管理情報を記述するレコードです。一つのゾーンに一つだけとなります。ゾーン転送の再試行時間や、リゾルバのTTLなどの値を設定できます。詳細は公式ドキュメントをご覧ください。

SPFレコード

かつて、メールの送信者の身元を確認するために使われていました。Amazon Route 53においても利用可能ですが推奨されていません(RFC 7208 14.1 The SPF DNS Record Type)
代わりに、TXTレコードで同様の記述が可能です。

SRVレコード

ドメイン名に対するサービスのポートを指定することができます。特定のポートに通信を絞りたい、などといったケースに対応可能です。

TXTレコード

任意の値を保持するためのレコードで、汎用性の高い用途で利用可能です。先述のSPFレコードの代わりにメール送信者の身元確認や、スパムメールの防止のほか、テキスト形式でのメモとして使われたりもします。

ALIASレコード

こちらはRFCに定められたレコードではなく、Amazon Route 53の独自の拡張となります。AWSリソースへのルーティングの際に、CNAMEレコードの代わりに使われれます。
ALIASレコードは前述のZone Apexに加えてCNAMEレコードと比較した明確なメリットが2点あります。

  • Amazon Route 53においてはAWSリソースに対するDNSクエリに対して課金されません。
  • CNAMEレコードで記述した場合、DNSクエリは2つのクエリとして処理されますが、ALIASレコードは1つのDNSクエリとして処理されます。

したがって、ALIASレコードが利用できるシーンではALIASレコードを使用するのがベストプラクティスとなります。
どのシーンでALIASレコードが使えるかのチェックには、Trusted Advisorで確認することもできます。
Amazon Route 53 エイリアスリソースレコードセット

まとめ

Amazon Route 53で記述されるレコードタイプについてまとめました。実はこれだけのレコードタイプを使用できるようになっていることを知らなかったので、改めてレコードタイプの復習にもなり、いい勉強の機会となりました。
レコードタイプについての詳細はRFCを読むのが一番詳しいですが、概要を理解する一助となれば幸いです。

参考サイト

Amazon Route 53 公式ドキュメント:サポートされる DNS レコードタイプ
IETF Datatracker
インターネット10分講座:DNS
JPRS用語辞典
Cloudflareラーニングセンター:DNSレコード