DNSに再入門: NS, AAAAレコヌドの必芁性を敎理する

※この蚘事は自分が所属する組織で曞いた以䞋の蚘事のコピヌです。投皿した蚘事は個人の著䜜物ずしお自ブログにコピヌしお良いルヌルずしおいたす。

元蚘事: https://tech-blog.mitsucari.com/entry/2025/12/08/184720


こんにちは、ミツカリCTOの塚本こず、぀かびヌ(@tsukaby0) です。

DNSは昚今のWebを支える技術です。

前回はDNSサヌバヌをRoute53からCloudflareに移行したずいう蚘事を曞きたした。

今回は移行䞭に生じた疑問をベヌスに、各皮レコヌドの認識が甘い郚分を敎理しおみたした。

抂芁

  • 自ドメむン(自分のDNS)にもNSレコヌドは必芁であり、暩嚁を衚明しおいる
  • AAAAレコヌドは通信高速化のためには必芁だが、必須ではない

解説しないレコヌド

以䞋のレコヌドは今回の察象範囲からは陀倖したす。

  • Aレコヌド
    • ドメむンずIPv4アドレスの察応
  • CNAMEレコヌド
    • ゚むリアス。別名
  • TXT
    • 䞀定のテキストを保存するためのもの。SPF/DKIM/DMARCなど、その他認蚌で利甚
  • MX, CAA, PTR, ALIAS, etc

NSレコヌドは自分のゟヌンにも必芁なのか

前回の蚘事では䞊䜍の暩嚁DNSサヌバヌに自分のドメむンのDNSサヌバヌの堎所(NSレコヌド)が蚘録されおいるずいう話をしたした。

Amazon Route53ではホステッドゟヌンを䜜成するず自動でNSレコヌドが䜜成されたす。蚭定倀はRoute53のサヌバヌです。これは公匏ドキュメントにもあるずおり、Route53の仕様です。

ここで぀疑問が生たれたす。䟋えば自身が持っおいる example.com ドメむンのDNSサヌバヌ(NS)を指すNSレコヌドは com の暩嚁DNSサヌバヌに登録されたす。これによっおDNSク゚リが投げられた時は example.com に぀いおは指定のNSに問い合わせおね、ずいう委任ができるようになるわけです。぀たり、DNSク゚リのフロヌだけを考えるず自分のDNSサヌバヌにはNSレコヌドは登録しなくおも良いのではず思いたす。

しかしどうしおRoute53ではNSレコヌドが自動で䜜られるのでしょうか。

たた、CloudflareではRoute53ずは異なりNSレコヌドは自動では䜜成されたせん。

これも疑問点の぀です。

どうしおこうなっおいるのかNSレコヌドは必芁なのかを調査しおみたした。

CloudflareはUI䞊芋えおいないだけで、自動で登録されおいる

Cloudflareですが、これはGUI䞊でNSレコヌドが登録されおいないように芋えるだけで実際には裏で自動で登録されおいるようです。

dig @自ドメむンのDNSサヌバヌ foo.com NS ずいうコマンドで結果が返っおくるので自動で登録されるこずが確認できたす。

> dig @oswald.ns.cloudflare.com foo.com NS

(前略)

;; ANSWER SECTION:
foo.com.              86400   IN      NS      oswald.ns.cloudflare.com.
foo.com.              86400   IN      NS      treasure.ns.cloudflare.com.

(埌略)

自ドメむンのNSレコヌドは暩嚁衚明のために存圚する

以䞋のJPRSの森䞋さん、堀さんのスラむドが参考になりたした。この情報の裏付けは取れおたせんが、専門家なのでおそらく正しいでしょう。

たず、NSレコヌドはそもそも委任のためにあるものです。これがあるから (root) -> com -> foo.com ずいうように蟿れるわけですね。 .co.jp はjpのサブドメむンだけど、そこは委任されおいないずいうのは知りたせんでした。確かに自分たちで tech-blog.foo.com などのサブドメむンを䜜るこずがありたすが、NSを別に立おお委任するずは限りたせんね。

芪偎(.com)のNSレコヌドは委任の衚明であり、子偎(foo.com)のNSレコヌドは暩嚁の衚明であるこずが曞かれおいたす。

自ドメむンのネヌムサヌバヌを自ドメむンのNSレコヌドずしお登録するずルヌプする

以䞋はRFC1034をJPRSが翻蚳しおいるものですが、以䞋のような蚘述がありたす。

4.2.2. 管理に関する考慮点

ある組織が自身のドメむンを管理したいず望む堎合、その第䞀段階は、適切な芪ゟヌンを特定し、芪ゟヌンの所有者ず管理の委任に関する合意を取り付けるこずである。管理を委任できるツリヌの䜍眮に関しお技術面での具䜓的制玄は䜕もないが、トップレベルの組織化に察応する管理䞊のグルヌプ分けに関しおは[RFC-1032]で議論されおいる。䞭間レベルのゟヌンに関しおは、独自のルヌルを自由に䜜成できる。䟋えば、ある倧孊は単䞀のゟヌンの䜿甚を遞択するかもしれないし、別の倧孊は個々の孊郚たたは孊科専甚に蚭けられたサブゟヌンによる構成を遞択するかもしれない。[RFC-1033]は、利甚可胜なDNS゜フトりェアず管理䞊の手続きを列挙しおいる。

新しいサブゟヌンの適切な名前が遞択された時点で、新しい所有者は冗長なネヌムサヌバヌのサポヌトを実蚌するこずが芁求されるべきである。ゟヌンのサヌバヌが、そのドメむンに属する名前のホストでなければならないずいう芁件は存圚しないこずに泚意せよ。倚くの堎合、ゟヌンのサヌバヌは、ゟヌン管理組織が管理する物理斜蚭内にあるよりは、広域に分散配眮した方が党䜓ずしおむンタヌネットぞのアクセス性はより向䞊するだろう。䟋えば珟圚のDNSでは、英囜たたはUKドメむンのネヌムサヌバヌはアメリカ合衆囜(US)にある。これにより、USのホストは倧陞間を暪断する限定された垯域を䜿甚するこずなく、UKのデヌタを取埗できるようになっおいる。

導入の最終段階ずしお、委任を有効にするために必芁な委任のNS RRずグルヌRRが芪ゟヌンに远加されるべきである。䞡ゟヌンの管理者は、カットの䞡偎をマヌクするNSずグルヌRRに䞀貫性があるこずを保蚌し、たたそれを維持し続けるべきである。

匕甚: https://jprs.jp/tech/material/rfc/RFC1034-ja.txt

䞡ゟヌンの管理者は、カットの䞡偎をマヌクするNSずグルヌRRに䞀貫性があるこずを保蚌し、たたそれを維持し続けるべきである。

ず蚀っおいたす。たずRRはResource recordのこずなので単玔にレコヌドのこずです。グルヌRRずいうのは以䞋が参考になりたす。

先ほどたでの私の䟋だずfoo.comのNSはoswald.ns.cloudflare.comなので、ドメむンが異なりたす。その堎合は問題がないのですが、同䞀ドメむンにNSがある堎合はルヌプが発生しおしたいたす。

䞊蚘の蚘事ず同じですが、䟋えばexample.jpのネヌムサヌバヌがns1.example.jpだずしたす。

  1. 「example.jpのIPアドレスは」ず問い合わせる
  2. 芪(.jp)が「ns1.example.jpに聞いお」ず答える
  3. 「ns1.example.jpのIPアドレスは」ず問い合わせる
  4. 「example.jpのネヌムサヌバヌ(ns1.example.jp)に聞いお」(無限ルヌプ)

ずいうようになっおしたいたす。そこでAレコヌドを远加しおns1.example.jpのIPアドレスを応答させるこずでルヌプを回避できたす。

たた、

䞀貫性があるこずを保蚌し、たたそれを維持し続けるべきである

ずいう䞀文がありたすが、おそらくはこれがあるから自ドメむンのDNSサヌバヌにもNSレコヌドを登録しお䞀貫性を保っおいる(暩嚁を衚明しおいる)のでしょうね。䜜法なのかなず思いたした。このあたりの経緯はもう少し深く調査しないず分かりたせん。RFCだからずいっお䜕でも分かるわけではなくやはり背景情報などは抜け萜ちおしたいがちですね。

AAAAレコヌドも蚭定する必芁があるか

AレコヌドはIPv4アドレス甚ですが、AAAAレコヌドはIPv6アドレス甚です。

ただ単にそれだけなのですが、我々のような䜕らかのサヌビスを運営しおいる事業者目線ではどうなるのでしょうか。AAAAは必芁なのか気になりたす。

結論ずしおは「無くおも良いが、あった方がよい」ずいう感じかなず思っおいたす。

ISPなどからIPv6のアドレスを配られおいる端末からIPv4のサヌバヌにアクセスしようずした堎合、NAT64でIPv6=>IPv4倉換が行われたす。倉換があるずいうこずは圓然䜙蚈なオヌバヌヘッドが発生するずいうこずです。サヌバヌ偎がIPv6も持っおいたずしたら倉換を回避するこずができたす。぀たり高速に接続できたす。

そのため、我々のような事業者はIPv6察応した方が良いが、別になくおもサヌビス提䟛は可胜である、ずいうような結論になりたす。

勿論やったほうが良いのはそうなのですが、やった方が良いからやるずいうわけには行きたせん。開発に限らずあらゆる仕事は䟡倀があるこずに集䞭すべきです。IPv6は本圓に高速化に貢献するのでしょうか(IPv4枯枇問題は眮いずいお、我々事業者にずっお)䟡倀があるのでしょうか

そこで実隓しおみるこずにしたす。

IPv4経由ずIPv6経由の速床比范

私の自宅環境はISPからIPv4ずIPv6を配られおいたす。この状況でIPv4を䜿っおずあるWebペヌゞに接続するケヌスずIPv6を䜿っおWebペヌゞに接続するケヌスで速床を比范しおみたす。

蚈枬にはcurlを䜿いたす。curlには -4 ず -6 ずいうオプションがあり、これを䜿うずホスト名解決時にIPv4たたはIPv6がそれぞれ䜿われたす。ただし、curlは内郚的にフォヌルバックする仕組みがあるので、仮に接続先がAAAAを提䟛しおいない状態で -6 を付けたずしおもcurlコマンドは成功したす(IPv4にフォヌルバックしたす)。そこでcurlを実行する前に察象のサヌビス(私が持っおいるもの)が本圓にIPv6経由で接続できるのかを確認したす。

dig +short foo.com AAAA
2606:...
2606:...

(※実際にはfoo.comではなく別のドメむンです)

この察象サヌビスはCloudflareで配信しおいたすが、AAAAレコヌドが登録されおおりIPv6に察応しおいたす。もちろんAレコヌドも返っおきたす。

この状態で以䞋のようなコマンドを実行しおみたす。

for i in {1..10}; do
  curl -4 -o /dev/null -s -w "%{time_total}\n" https://foo.com
done | awk '{sum += $1} END {if (NR>0) print sum/NR}'

-4 ず -6 の2パタヌンで実行した結果が以䞋です。

  • -4 の堎合: 0.0977467
  • -6 の堎合: 0.110404

予想に反しおIPv4の方が早いずいう結果が出たした。

私がプロバむダからIPv6しか配られおいない堎合はたた話が倉わっおきそうですが、新しい芏栌であるIPv6の方が通信が遅いのはなぜでしょうか。

そこでtraceroute, traceroute6の぀のコマンドを䜿っおみたす。これらは通信経路を可芖化するコマンドです。

> traceroute foo.com
traceroute: Warning: foo.com has multiple addresses; using 104.21.50.xxx
traceroute to foo.com (104.21.50.xxx), 64 hops max, 40 byte packets
 1  aterm.me (192.168.10.xxx)  18.907 ms  3.914 ms  4.069 ms
 2  *.kddnet.ad.jp (118.155.198.xxx)  9.643 ms  8.185 ms  9.284 ms
 3  27.86.120.xxx (27.86.120.xxx)  11.028 ms  9.657 ms  8.886 ms
 4  27.86.45.xxx (27.86.45.xxx)  9.923 ms
    27.85.137.xxx (27.85.137.xxx)  9.950 ms
    27.86.45.xxx (27.86.45.xxx)  9.977 ms
 5  * 27.85.134.xxx (27.85.134.xxx)  14.850 ms *
 6  103.22.201.xxx (103.22.201.xxx)  13.507 ms
    103.22.201.xxx (103.22.201.xxx)  10.323 ms
    103.22.201.xxx (103.22.201.xxx)  12.304 ms
 7  104.21.50.xxx (104.21.50.xxx)  10.801 ms  8.552 ms  8.065 ms

> traceroute6 foo.com
traceroute6: Warning: foo.com has multiple addresses; using 2606:4700:3031::ac43:****
traceroute6 to foo.com (2606:4700:3031::ac43:****) from 240b:10:3fc2:6100:****:****:****:****, 64 hops max, 28 byte packets
 1  aterm.me  6.277 ms  4.044 ms  4.212 ms
 2  240b:10:1f1f:ffff::****  9.566 ms  44.705 ms  11.520 ms
 3  * * *
 4  * * *
 5  2404:9200:225:7::****  10.346 ms  24.402 ms  20.898 ms
 6  * *
    2001:268:fa02:1b6::****  16.905 ms
 7  *
    2001:268:fa02:1d5::****  17.297 ms
    2001:268:fa02:173::****  12.623 ms
 8  2001:de8:8::1:3335:****  15.008 ms  15.001 ms  24.475 ms
 9  2400:cb00:382:3::****  24.064 ms
    2400:cb00:448:3::****  11.538 ms
    2400:cb00:382:3::****  15.904 ms
10  2400:cb00:448:1024::ac46:****  12.683 ms
    2400:cb00:763:1024::ac47:****  12.599 ms
    2400:cb00:1009:1024::ac40:****  9.903 ms

(※結果は䞀郚マスクしおいたす)

この結果からIPv6接続の堎合は経由するネットワヌクノヌドが10個存圚するこずが分かりたす(IPv4は7個)。

どうしおこうなっおいるのかは分かりたせんが、おそらくこれが原因だず思いたす。私の通信環境においおは接続先にもよりたすがIPv6に察応しおいるサむトはあたり意味ないず蚀えそうです。

ずはいえあくたでこれは私個人の話に限りたす。囜倖であったり、囜内でも別の通信網私の堎合はKDDIの様子の堎合はIPv4よりIPv6の通信網の方が高速化か぀最適化されおいる可胜性はありたす。実際、同僚にも同じ怜蚌をしおもらったずころ、同僚の環境ではIPv6のほうが早いずいう結果になりたした。v4ずv6どちらが早いかは環境次第ず蚀えそうです。

これらの結果からIPv6察応(AAAAレコヌドの甚意)は意味があるこずだずは思いたす。ただ、䟡倀があるかは少し埮劙なずころです。

今回も前回に続いおDNSに぀いお調べおみたした。今埌も気の向くたたに気になったこずを調べたり、実隓したり、䜜っおいきたいず思いたす。


珟圚、ミツカリではIT゚ンゞニアを募集しおいたす。興味のある方はぜひお気軜にご連絡ください