ドメイン名とDNSの役割と管理の基本について、改めて考える

こんにちは。株式会社日本レジストリサービス(JPRS)の森下泰宏(もりした やすひろ)です。

今回、技術ブログ「テクナレジ」のゲストとして、ドメイン名とDNSの役割と管理の基本について書かせていただくことになりました。よろしくお願いします。

JPRSのご紹介

初めて「テクナレジ」に書かせていただきますので、私の勤務先であるJPRSについて、簡単にご紹介させていただきます。

JPRSは、インターネットで使われているドメイン名のうち.jpで終わる「JPドメイン名」の登録管理をしている会社です。JPRSでは、みなさんがJPドメイン名を使えるようにするための「JP DNSサーバー」を運用しています。

また、JPRSではインターネットの安定運用を目的として、ドメイン名・DNS・サーバー証明書に関する、さまざまな技術情報を発信しています。JPRSが発信しているDNS関連の技術情報は、JPRS DNS関連技術情報で公開されています。

ドメイン名とDNSの役割と管理の基本

みなさんがインターネットのサービスを使う場合ほぼ必ず、ドメイン名とDNSが使われます。普段、あまり意識することはありませんが、もしドメイン名とDNSが使えなくなると、インターネットのほぼすべてのサービスも使えなくなってしまいます。

今回は、インターネットのサービスにとって重要なドメイン名とDNSの役割と、その管理の基本について、改めて考えます。

インターネットの通信ではIPアドレスで通信相手を指定

インターネットのサービスを使うためには、インターネットで通信をする必要があります。インターネットの通信には、IP(Internet Protocool)という手順(通信プロトコル)が使われます。

IPでは通信相手をIPアドレスで指定します。現在使われているIPにはIPv4とIPv6の2種類があり、それぞれのIPアドレスは、IPv4では2^32 = 約43億、IPv6では2^128 = 約340澗(かん)という、膨大な空間(アドレス空間)を持っています(図1)。

図1 IPアドレスの例

名前とIPアドレスの対応付け―HOSTS.TXTによる管理

このように、IPアドレスは数字の羅列(番号)となります。IPアドレスは膨大なアドレス空間を持っているため、通信相手のIPアドレスを人間が覚えたり、間違えないように指定したりすることは容易ではありません。

そのため、インターネットが始まった当時から、通信相手をIPアドレスではなく、人間にとって覚えやすく使いやすい名前で指定するというアイディアが考えられました。

通信相手を名前で指定するためには、指定した名前を通信に使われるIPアドレスに対応付けるための仕組みが必要です。また、通信を受け取る側から見た場合、どの相手が通信して来たかを知るためには、通信相手のIPアドレスを名前に対応付けられると便利です。

初期のインターネットではこのための仕組みとして「HOSTS.TXT」というテキストファイルが使われました。インターネット上で使われるIPアドレスと名前を一元管理する組織(レジストリ)が、インターネットに接続された機器(ホスト)の名前とIPアドレスの対応付けをまとめたファイルを、HOSTS.TXTというファイル名で公開していました[*1]。

[*1]この方式は現在も多くのシステムでサポートされており、HOSTS.TXTに相当するファイルが存在しています。例えば、Unix/Linuxでは /etc/hosts 、Windowsでは %SystemRoot%\System32\drivers\etc\hosts に格納されています。

インターネットに接続した組織はHOSTS.TXTをダウンロードし[*2]、そのファイルを使って名前とIPアドレスを対応付けることで、通信相手を名前で指定できるようになりました(図2)。

[*2]HOSTS.TXTを公開するサーバーのIPアドレスは広く公開されており、インターネットに接続した組織はそのサーバーのIPアドレスを指定して、HOSTS.TXTを入手していました。
図2 HOSTS.TXTによる管理と利用

HOSTS.TXTによる管理のメリット

HOSTS.TXTを使って通信相手を名前で指定できるようにすることで、二つのメリットが得られます。

インターネットに接続されたすべての組織が同じHOSTS.TXTを使うことで、名前とIPアドレスの対応付けが、インターネット全体で同じになります。これにより、インターネットのどこからでも、同じ接続相手を同じ唯一の名前で指定できるようになります[*3]。

[*3]これを「名前の一意性」といいます。名前の一意性は、DNSにも引き継がれています。

また、IPアドレスは、管理上の都合で変更される場合があります。もし、通信先のIPアドレスが変更された場合も、HOSTS.TXTの対応付けを更新することで、同じ名前を使い続けることができるようになります。

HOSTS.TXTによる管理からドメイン名・DNSによる管理へ

HOSTS.TXTによる管理は、名前とIPアドレスの対応付けの数が少ない間はうまく動きました。

しかし、この方式ではインターネットに接続される組織の数が増えるにつれてHOSTS.TXTへの登録や更新の頻度が増え、HOSTS.TXTを最新の状態に維持管理する手間(コスト)も増えることになります。また、組織の数が増えるにつれてHOSTS.TXTのサイズも大きくなり、各組織におけるHOSTS.TXTの入手・設定のコストも増えていきます。

こうした理由から、この、HOSTS.TXTにすべての名前とIPアドレスの対応付けを記述し、インターネットに接続された組織がそれをダウンロードして使うという方式にはいずれ限界が訪れることは、誰の目にも明らかでした。

そのため、HOSTS.TXTによる管理で得られたメリットを維持しつつ、接続される組織の数が増えた場合も名前とIPアドレスの対応付けがうまくいくようにするための仕組みが検討・考案されました。

(1)名前に階層構造を導入して管理の範囲を分ける(階層化)

まず、名前に階層構造を導入し、管理する範囲をそれぞれの階層ごとに分けられるようにしました。名前の管理はそれぞれの階層ごとに分けて行い、階層の頂点から末端までの名前をドット(".")でつなげることで、階層化された名前が作られる形です。この名前を「ドメイン名」といいます。

ドメイン名を導入して名前を階層化し、それぞれの階層を個別に管理する形にすることで、管理のコストを分散できるようになります(図3)。

図3 ドメイン名の導入による名前の階層化

(2)それぞれの階層を誰が管理するかという情報を管理する(委任)

階層化されたドメイン名をうまく動かすためには、それぞれの階層を誰が管理しているか、つまり、誰にどのドメイン名の管理を任せているかという情報を管理する必要があります。この管理方法を「委任」といいます。

委任による管理では、委任元は「誰にどのドメイン名の管理を任せているか」という情報(委任先の情報)のみを管理し、そのドメイン名の実際の管理は、委任先が担当するという方式で、全体が統一的に管理されます(図4)。

図4 委任による管理の分割

この「階層化」と「委任」が、ドメイン名を用いた名前管理の基本です。

DNSの全体構成と管理の基本

ドメイン名による名前の階層化と委任による管理の分割をインターネット上で実現するために考え出されたのが、DNS(Domain Name System)という仕組みです。

DNSでは、ドメイン名の各階層の管理者が協調して、一つのドメイン名空間を分散管理します。そして、ドメイン名とIPアドレスの対応付けを調べる際にはドメイン名の階層構造の頂点から段階的にたどって、最終的な対応付けを得ます(名前解決)。

このようにすることで、インターネットに接続される組織の数が増え、登録や更新の頻度が増えた場合でも、以下の二つのメリットが得られるようになります(図5)。

  • インターネットのどこからでも、同じ接続相手を同じ唯一の名前で指定できる
  • 通信相手のIPアドレスが変わった場合も、その部分の対応付けのみを更新することで、同じ名前を使い続けることができる
図5 HOSTS.TXTとDNSの比較

DNSでは、ドメイン名の各階層を管理する役割を「権威DNSサーバー」が、階層を段階的にたどって名前とIPアドレスの対応を調べる役割を「フルリゾルバー(キャッシュDNSサーバー)」が担います(図6)。

図6 DNSの構成要素

もし、権威DNSサーバーから情報が得られなかったり、誤った情報が公開された場合、通信相手に接続できなかったり、誤った通信相手に接続されたりしてしまいます。また、フルリゾルバーに障害が発生した場合も、ドメイン名とIPアドレスの対応が調べられなくなってしまいます。

こうした状況が起こらないようにするため、それぞれの権威DNSサーバーやフルリゾルバーの管理者がそれぞれの果たすべき役割を認識し、担当するサーバーを適切に管理運用する必要があります。

各階層を管理する権威DNSサーバー、対応を調べるフルリゾルバーの双方がそれぞれの役割を果たすことで、全体としてうまく動作するということが、DNSにおける管理の基本です。

書籍「DNSがよくわかる教科書」のご紹介

2018年11月、JPRSの技術者が執筆・監修を担当した書籍『DNSがよくわかる教科書』が、SBクリエイティブから出版されました。本書は、インターネット技術に関わる初学者や、基礎から学び直したい技術者を対象に、DNS全般について基礎から体系的に解説した書籍です。

『DNSがよくわかる教科書』(SBクリエイティブ公式Webサイト)

本書は、基礎編・実践編・アドバンス編の3部で構成されています。

基礎編ではDNSを初めて学ぶ方向けに、ドメイン名とDNSが作られた背景、その仕組みと管理体制、DNSを形作る三つの構成要素の役割、名前解決の具体的な動作について説明しています。

今回のブログで説明した内容は、基礎編の1章「DNSが作られた背景」で解説しています。

実践編では、基礎編で学んだDNSの構成要素を動かし、運用するための設計と設定、動作確認と監視、DNSに対するサイバー攻撃とその対策、信頼性向上のために留意すべき考慮点について説明しています。

アドバンス編では、実践編で取り上げなかったDNSの設定・運用に関するノウハウと注意点、権威DNSサーバーの移行(DNSの引っ越し)、DNSSECの仕組み、DNSプライバシーの概要と実装状況について説明しています。アドバンス編では最近話題になっているDNSプライバシーに関する技術である「DNS over TLS」や「DNS over HTTPS」の概要についても解説しています。

前述したようにDNSは、権威DNSサーバーとフルリゾルバーがそれぞれの役割を果たすことで、全体としてうまく動作するという仕組みです。DNSをうまく動かすためには、DNSの仕組みや運用に関する正しい知識が必要不可欠です。

本書をぜひお読みいただき、DNSの仕組みの更なる理解や円滑な運用にお役立ていただければと思います。