こんにちは。株式会社リンクネット ソリューション事業部の吉川です。
業務でAWSのRoute 53を触る機会があり、ホストゾーンにレコードを登録する作業をしていました。
なんとなく使っていたDNSレコードですが、それぞれがどんな役割を持っているのかあいまいなままだったので、改めて整理してみようと思います。
なお、今回取り上げるのは私が実際に使ったことのあるレコードのみで、自分用の備忘録も兼ねています。
ある名前を引くときに、問い合わせるべき権威DNSサーバーを指定するレコードです。
Route 53ではホストゾーンを作った時点で最初から登録されています。
サブドメインを委譲する、つまりサブドメインを別のサービスや別のホストゾーンで管理するときにも使います。
名前に対応するIPアドレスを教えてくれるレコードです。
個人的にはこれが主役だと思っています。
AレコードのIPv6版です。
名前に対応するIPv6アドレスを返します。
ある名前を引いたときに、別の名前で引き直してもらうためのレコードです。
例えば複数の名前が同じIPアドレスを指す場合、Aレコードを一つだけ登録し、他の名前はそのAレコードの名前を指すようにCNAMEレコードを登録しておきます。
こうしておくと、IPアドレスが変わってもAレコード1つを変更するだけで済みます。
注意点として、一つの名前にCNAMEレコードとその他のレコードを共存させることはできません。
そのため、NSレコードが必ず存在するapex(ホストゾーンと全く同じ名前)にはCNAMEレコードを登録できません。
DNSで引ける名前を登録しておくと、サービス側がその名前が指すIPアドレスに変換して返してくれるレコードです。
指す先のIPアドレスが変わっても動的に追従してくれるので便利ですが、Route 53の独自拡張のため一般的なレコードではありません。
名前からIPアドレスを返すことになるので、Aレコードとしてふるまいます。
使い方はCNAMEレコードに近いのですが、Aレコードとしてふるまうため、CNAMEレコードでは登録できなかったapexにも登録できるのがメリットです。
今回は以上となります。
普段はなんとなく登録していたレコードも、役割を整理してみるとなぜapexにCNAMEが登録できないのかといった疑問がすっきりしました。
DNSレコードには他にも、MXレコード、TXTレコード、SOAレコード、PTRレコードなど名前をよく聞くものがありますが、私はまだ使ったことがなく、どういうものなのかもよく知りません。
使う機会があれば、そのときにまた調べて整理してみようと思います。