DNS ANAMEレコードの提案仕様

IETFでのDNS関連の標準化は普段追ってないので恐縮だが、DNSOP(DNS OPerations)WGで気になったドラフトがあったので読んで見る。

Address-specific DNS Name Redirection (ANAME)」という提案仕様であり、先日WGドラフトになったようだ。著者は、ISC, PowerDNS, DNSimple の方々でありDNS実装に関わっている人が書いているようだ。

PowerDNSでは、すでにALIASと言う似たような機能が実装中のようですし、CloudflareやAkamaiとも議論している様子が伺える。

背景とCNAME

DNSにはホストの別名を定義するCNAMEレコードという機能があります。このCNAMEレコードは、同一のホスト名(ドメイン)に対して他のレコードと共存することができません。

このようにAレコードとCNAMEレコードを併記することはできません。

hoge        IN      CNAME   fuga
hoge        IN      A       192.168.0.1

そこで特に問題になるのが、Zone Apex(ドメイン名そのもの)のレコードでしょう。example.comというドメインで考えてみましょう。ドメイン名そのものは設定上 @ で記述します。通常は、SOAレコードや、NSレコード、その他のTXTレコードを記述するケースが多いでしょう。

@   IN SOA ns1 postmaster (
                  ...
    )

    IN NS ns1
    IN NS ns2

もちろん、これらのSOAレコードやNSレコードと、CNAMEは併記できません。そのため、@に対してCNAMEは使えないでしょう。CDNを利用する場合はCNAMEでCDNのレコードを参照することが多いですが、example.com自体にCNAMEは指定できないので、CDNは利用できない事になります。

@   IN CNAME fuga

また、ラウンドロビン的に複数のCDNを出し分ける事もできないでしょう。

ANAMEレコード

ANAMEレコードは、CNAMEレコードのように動作しますが、AやAAAAレコードへの問い合わせのみリダイレクトを実施します。そのため、他のレコードと併記することができます。

これを利用することで、Zone ApexでもCDNの利用が可能になります。

権威サーバは、クライアントがANAMEレコードに対応しているかわからないので、自信でANAMEレコードを解決してAレコードと一緒に応答してもよいようです。

仕様

仕様には、キャッシュやDNSSECなど、さらに詳しく権威サーバ及びリカーシブサーバの振る舞いについて書かれています。


参考 (勉強になりました)