フルスタックエンジニアを目指して

いろいろやってみるブログ

DNSのルートサーバは世界に13個

13個なのには理由があるそうです。

ルートDNSサーバは世界に13個あるというのは有名な話で、どんな本にも書いてあります。しかしなぜ13台なのかは正直知りませんでした。

まず、digでルートのNSレコードを引くとANSWER SECTIONにきちんと13個返ってきているのがわかります。

$ dig . NS
~中略~
;; ANSWER SECTION:
.                       478043  IN      NS      b.root-servers.net.
.                       478043  IN      NS      c.root-servers.net.
.                       478043  IN      NS      d.root-servers.net.
.                       478043  IN      NS      e.root-servers.net.
.                       478043  IN      NS      f.root-servers.net.
.                       478043  IN      NS      g.root-servers.net.
.                       478043  IN      NS      h.root-servers.net.
.                       478043  IN      NS      i.root-servers.net.
.                       478043  IN      NS      j.root-servers.net.
.                       478043  IN      NS      k.root-servers.net.
.                       478043  IN      NS      l.root-servers.net.
.                       478043  IN      NS      m.root-servers.net.
.                       478043  IN      NS      a.root-servers.net.

ちなみにmが日本管轄のルートDNSサーバです。mのサーバ自体は日本にももちろんあるそうなのですが、ディザスタリカバリのため、世界各地に配置されているそうです。逆に、下の画像のように、日本にはm以外のルートDNSも配置されています。各々の場所のDNSサーバはクラスタ構成になっていて、負荷分散されているそうです。当たり前といえば当たり前ですが、13個というのはあくまで「名前が」であって、物理的にはたくさんあるんですね。

f:id:naoto408:20151123084318p:plain

参考:Root Server Technical Operations Assn

 

話が少しそれましたが、なぜ、世界には13のDNSがあるのかというお話です。

答えは、「13個が限界」だからです。

DNSUDPを用いており512バイトのパケットに収める決まりになっています。13個分の*.root-servers.netとIPv4IPアドレスまでなら512バイトの中でぎりぎり収めることができる、だから13個のルートDNSらしいです。

 

ちなみに、jp.のDNSはa~gまでの7台のようです。

$ dig jp. NS

~中略~
;; ANSWER SECTION:
jp.                     86400   IN      NS      a.dns.jp.
jp.                     86400   IN      NS      g.dns.jp.
jp.                     86400   IN      NS      f.dns.jp.
jp.                     86400   IN      NS      c.dns.jp.
jp.                     86400   IN      NS      b.dns.jp.
jp.                     86400   IN      NS      d.dns.jp.
jp.                     86400   IN      NS      e.dns.jp.

jp.のアドレスは短くできているので、IPv6のアドレスまで入れても512バイト以内に収まるそうです。ルートDNSは512バイトに収まらないので、EDNS0という拡張仕様で対応しているみたいです。

 

参考:

ルートサーバ - Wikipedia

DNSルートゾーン - Wikipedia

ネットワークHOTTOPICS - DNSのIPv6対応へのハードル「512バイト問題」とは?:ITpro

インターネット用語1分解説~EDNS0とは~ - JPNIC