DNSサーバーは、ひとことで言えばドメイン名とIPアドレスを結び付けるための仕組みを提供するサーバーです。
ただし、「DNSサーバーはどこにあるのか」という問いに対しては、1か所にあるわけではない、というのがまず大前提になります。
実際のDNSは、世界中に分散した多数のサーバーによって成り立っています。
しかも、DNSサーバーにはいくつかの種類があり、それぞれ役割も置かれている場所も異なります。
そのため、DNSサーバーの場所を考えるときは、どの種類のDNSサーバーのことを指しているのかを分けて考えるのが大切です。
多くの人は「DNSサーバー」と聞くと、どこかに1台のサーバーがあって、そこに問い合わせているようなイメージを持ちます。
しかし実際には、DNSは階層的に分かれた複数のサーバー群で構成されています。
主に関わるのは次のようなものです。
.com や .jp などを管理するTLDネームサーバーつまり、DNSは「どこか1台のサーバー」ではなく、役割の異なる複数のDNSサーバーが連携して動く仕組みです。
普段、あなたのパソコンやスマートフォンが最初に問い合わせる相手は、多くの場合再帰リゾルバです。
これは「キャッシュDNS」や「DNSリゾルバ」と呼ばれることもあります。
この再帰リゾルバは、たとえば次のような場所にあります。
家庭のインターネット回線では、契約しているプロバイダや通信事業者が用意した再帰リゾルバを使っていることが多いです。
この場合、DNSサーバーはその事業者のデータセンターやネットワーク拠点に置かれています。
たとえば、
などが、自社のDNS設備を運用しています。
利用者が自分でDNS設定を変更している場合は、ISPではなく公開DNSサービスを使っていることもあります。
代表例としては、
などがあります。
これらも1台だけではなく、世界各地に分散配置された拠点で運用されています。
利用者の通信は通常、地理的またはネットワーク的に近い拠点へ届けられます。
そのため、たとえばGoogle Public DNSを使っていても、必ずしも遠い海外の1台に毎回問い合わせているわけではありません。
会社や学校では、組織内に独自のDNSサーバーを置いていることもあります。
これはたとえば、
などのためです。
この場合、DNSサーバーは
などに置かれます。
利用者が問い合わせる再帰リゾルバは、必要に応じてさらに上位のDNSサーバーへ問い合わせます。
そのとき登場するのが、ルートネームサーバーやTLDネームサーバーです。
ルートネームサーバーは、DNSの最上位にある案内役です。
たとえば「.com のことはどこに聞けばいいか」「.jp のことはどこに聞けばいいか」といった情報を持っています。
ここでよく誤解されるのが、「ルートDNSは13台しかない」という説明です。
正確には、ルートサーバーはA〜Mまでの13の論理的な識別子で表現されています。
しかし実際には、それぞれが世界中に多数の実体サーバーとして分散配置されています。
つまり、ルートネームサーバーは特定の1都市や1建物にしかないわけではなく、世界各地に配置された分散型の仕組みです。
ルートネームサーバーの次に参照されるのが、.com や .jp のようなトップレベルドメインを扱うTLDネームサーバーです。
たとえば、
.com.net.org.jpなど、それぞれのTLDごとに管理の仕組みがあります。
これらのサーバーも、単一の場所にあるわけではなく、複数の拠点やインフラ上に分散して運用されています。
あるドメイン、たとえば example.com に関する最終的な正規情報を持っているのが権威ネームサーバーです。
この権威ネームサーバーには、そのドメインに関する正式なDNSレコードが保存されています。
たとえば、
などです。
つまり、権威ネームサーバーは「そのドメインについて、正式にはどの情報が正しいのか」を答えるサーバーです。
権威ネームサーバーは、ドメインを管理しているDNS事業者やホスティング会社、クラウド事業者の設備上で動いていることが一般的です。
たとえば、
といった事業者が運用している場合があります。
物理的には、
に配置されていることが多く、やはり1か所に集中しているとは限りません。
たとえば、あなたがブラウザで www.example.com を開くとします。
このとき、通常は次のような流れで名前解決が行われます。
パソコンやスマホが、まず設定済みの再帰リゾルバに問い合わせます。
これは多くの場合、
のどれかです。
再帰リゾルバに答えがキャッシュされていれば、その場ですぐに返答します。
キャッシュがなければ、再帰リゾルバがルートネームサーバーに問い合わせます。
すると、「.com の情報はこのTLDネームサーバー群を見てください」と案内されます。
次に再帰リゾルバが.com のTLDネームサーバーへ問い合わせます。
すると、「example.com の正式情報はこの権威ネームサーバーが持っています」と案内されます。
再帰リゾルバがexample.com の権威ネームサーバーへ問い合わせます。
そこで、www.example.com に対応する正式なDNSレコードを取得します。
その結果が再帰リゾルバからあなたの端末へ返され、ブラウザはその情報を使ってWebサーバーへ接続します。
ここで大事なのは、通常、端末自身がルートサーバーやTLDサーバーへ直接問い合わせているわけではないという点です。
それらをたどるのは、ふつうは再帰リゾルバの役目です。
これは「場合による」が正確な答えです。
家庭では、実際の名前解決の中心はISPや公開DNSの再帰リゾルバにあることが多いです。
つまり、中心となるDNSサーバーは家の外にあります。
ただし、家庭用ルーターが
を行っていることはあります。
そのため、家庭内に「DNSっぽい役割をする機器」が存在することはありますが、本格的な再帰解決の本体は外部にあることが一般的です。
少し詳しい利用者なら、
などを使って、家庭内にDNSサーバーを置くこともあります。
この場合は、DNSサーバーが実際に家の中にあると言えます。
ただしそれでも、完全に家庭内だけで閉じず、外部のルートや権威DNSと連携する構成になることが多いです。
企業では、家庭よりもDNSの構成が複雑になることがあります。
たとえば、
などが使われます。
そのためDNSサーバーの場所も、
に分散している場合があります。
企業のDNSは1つではなく、内部向けDNSと外部向けDNSが分かれていることもよくあります。
DNSが分散されているのには明確な理由があります。
利用者に近い場所で応答できるほど、名前解決は速くなります。
1か所に集中していると、その拠点で障害が起きたとき大きな影響が出ます。
複数拠点に分散していれば、継続してサービスを提供しやすくなります。
DNSはインターネット全体の重要な基盤なので、DDoS攻撃の対象になることがあります。
複数拠点に分散しておけば、攻撃に対する耐性を高めやすくなります。
インターネットは世界規模で使われているため、DNSも世界規模で分散配置される必要があります。
役割としては別です。
ただし、役割が別というだけで、必ずしも物理的に完全に別の機械とは限りません。
同じ事業者が
を同じサービス群の中で提供していることもあります。
なので、正確には役割は別だが、同じ事業者や同じ基盤の上で提供されることはあると考えるのがよいです。
コマンドプロンプトで次を実行します。
ipconfig /all
表示された中の DNS Servers を見ると、端末が現在利用しているDNSリゾルバを確認できます。
環境にもよりますが、たとえば次のような方法があります。
cat /etc/resolv.conf
または
nmcli dev show | grep DNS
これで、現在使っているDNSサーバーの設定を確認しやすくなります。
nslookup example.com
または
dig example.com
これで、どのDNSリゾルバに問い合わせているかを確認できます。
ただし、これだけではその再帰リゾルバが内部でルート、TLD、権威DNSをどうたどったかまでは通常わかりません。
その流れまで確認したい場合は、たとえば次のような方法が使えます。
dig +trace example.com
これにより、名前解決の経路を段階的に追いやすくなります。
結論として、DNSサーバーはどこか1つの場所にあるわけではありません。
利用者が普段使う再帰リゾルバは、
などにあります。
さらにその裏側では、
が世界中に分散配置され、連携して動いています。
つまりDNSは、世界中に分散した複数種類のサーバーによって成り立つ仕組みです。
「DNSサーバーはどこにあるのか」という問いへの最も正確な答えは、役割によって場所が異なり、しかも世界中に分散して存在しているということになります。
以上、DNSサーバーはどこにあるのかについてでした。
最後までお読みいただき、ありがとうございました。