DNS(Domain Name System)とは
DNS(Domain Name System)の概要やドメインの仕組み、DNSサーバーによる名前解決の流れなどをわかりやすく解説します。
DNS(Domain Name System)とは
DNS(Domain Name System)とは、ドメイン名とIPアドレスを紐づけて管理するシステムを指す名称です。
インターネットでは、IP(Internet Protocol、インターネットプロトコル)と呼ばれるプロトコルを用いて通信を行っています。IPの特徴の1つは、接続されたコンピューターすべてに、コンピューターを識別するための固有の番号が割り当てられている点です。この固有の番号を「IPアドレス」と呼び、インターネットではIPアドレスを手がかりとして、通信相手を一意に特定しています。IPアドレスは、インターネット上で特定のコンピューターを指し示す、住所のようなものだと言えるでしょう。
IPにはバージョンが存在し、現在、最も広く利用されているのが「IPv4(バージョン4)」です。IPv4において、IPアドレスは32ビットの数値、すなわち32桁の2進数で表されます。しかし、32桁という長大な0と1の羅列はとても扱いづらいため、アドレスを8ビット(8桁)ごとに分け、それぞれを10進数に変換したうえでドットで区切って表記するのが一般的です。例えば、「11000000000000000000001000000001」というIPアドレスは「192.0.2.1」と表記します。
ただ、IPアドレスを10進数に変換したとしても、こうした意味のない数値は人間にとっては覚えにくく、使い勝手が悪いと言えます。そのため、IPアドレスの代わりに意味のある名前を使うことで通信相手を指定します。例えば、Webページにアクセスする際にブラウザのURL欄にサーバーのIPアドレスを直接入力することはほとんどないでしょう。多くの場合では、IPアドレスの代わりに「www.fujitsu.com」といった名前を使用しているはずです。この名前を「ドメイン名」と呼びます(URL上では「fujitsu.com」をドメイン名、「www」をホスト名とも呼ぶ)。
DNSでは、ユーザーが入力したドメイン名をIPアドレスに変換する仕組みを担います。IP上においては、通信相手をあくまでIPアドレスで指定しなければならず、実際に通信を行う際には、ドメイン名をIPアドレスに変換する必要があるためです。このドメイン名からIPアドレスを求める行為を「名前解決」と呼びます。
ドメイン名とは
前述のように、ドメイン名とはインターネット上でIPアドレスに代わり、通信相手のコンピューターを特定するために使われる名前のことです。ドメイン名は、WebサイトのURLや電子メールのメールアドレスなどに使われています。例えば、本ページのURLに含まれている「www.fujitsu.com」もドメイン名です。
ドメイン名は、複数の文字列をドットで区切った階層構造を持っています。そして、このドットで区切られた部分を「ラベル」と呼びます。「www.fujitsu.com」を例に説明すると、このドメイン名は「www」「fujitsu」「com」という3つのラベルで構成されていることになります。
ドメイン名の階層構造は、右側のラベルから左側のラベルに向かって、上位の階層から下位の階層を表すようになっています。この例における一番右側(ドメイン名の階層において最上位)のラベルは「.com」で、これをトップレベルドメインと呼びます。そして、トップレベルドメインの左隣にあるラベル(この例ではfujitsu)を「セカンドレベルドメイン」呼びます。いわゆる「独自ドメイン名」を取得する際には、既存のドメイン名と衝突しない範囲でセカンドレベルドメインに自由な名前を付けることができます。「fujitsu」のように主に企業名やサービス名など、そのサイトを端的に表すドメイン名を取得するのが一般的です。
さらに、その左側のラベル(この例ではwww)を「サードレベルドメイン」と呼び、ホスト名とも呼ばれます。これは、主にそのドメイン内に存在する個別のサーバーにつけられる名前です。そのドメイン(この例ではfujitsu.com)の管理者が、自由に名前をつけることができます。
ただし、独自のドメイン名を取得・作成しただけでは、インターネット上において何の意味もありません。具体的なコンピューターのIPアドレスをそのドメイン名に対して紐づけ、名前解決を可能にすることで、はじめて「インターネット上の住所」として、ドメイン名を使用することができるようになるためです。そのためには、「権威DNSサーバー」を用意し、ドメイン名とIPアドレスの対応を管理する「ゾーン情報」を作成する必要があります。
DNSサーバーとは
ドメインの情報(ゾーン情報)を管理し、ドメイン名をIPアドレスに変換する「名前解決」を行うサーバーが「DNSサーバー」です。
DNSサーバーとは、一言で言えばドメイン名とIPアドレスの対応を管理しているデータベースサーバーです。例えば、WebブラウザにURLを入力すると、ブラウザがOSの機能を介してDNSサーバーに名前解決の問い合わせを行います。DNSサーバーは問い合わせにあったドメイン名に関連付けられた、IPアドレスを応答として返します。そして、Webブラウザは、応答されたIPアドレスを使って、実際の通信を行います。
黎明期のインターネットでは、ドメイン名とIPアドレスの対応を記述したテキストファイルを各コンピューターにインストールすることで名前解決を行っていました。しかし、この方式は、ネットワークの規模が大きくなるにつれて、ファイルを最新の状態に保ったり、各コンピューターへ配布したりといったメンテナンスが現実的ではなくなってきました。この問題を解決するために登場した仕組みがDNSです。ドメイン名とIPアドレスの管理を専用のサーバーに任せることで、ファイルの更新や配布といった面倒な作業をユーザーが行わなくとも、誰もが常に最新の名前解決結果を得ることができるようになったのです。
名前解決のプロセスは、ユーザーからは見えない部分で自動的に行われます。そのため、ユーザーは覚えにくいIPアドレスの存在を意識せずにインターネットを利用することができます。DNSは現在のインターネットを支える、基幹技術の1つだと言ってよいでしょう。
なお、単一のDNSサーバーが世界中に存在するすべてのドメイン名を管理しているわけではありません。DNSは、ドメインが持つ階層構造を利用して世界中に散らばる複数のサーバーによって、ゾーン情報の分散管理を行っています。こちらの詳細については、「DNSサーバーによる名前解決の流れ」の項目で解説します。
DNSサーバーの種類
DNSサーバーはその機能によって、大きく「権威DNSサーバー」と「キャッシュDNSサーバー」の2種類に分けられます。
権威DNSサーバーとは、自身が管理するドメインの情報(ゾーン情報)を管理するサーバーのことで、「コンテンツサーバー」とも呼ばれます。例えば、「fujitsu.com」ドメインの権威DNSサーバーは、「fujitsu.com」のゾーン情報を持っています。そして、このゾーン情報の中には「fujitsu.com」に含まれるドメイン名(www.fujitsu.comなど)とIPアドレスの対応が記録されているのです。権威DNSサーバーの役目は、後述するキャッシュDNSサーバーから名前解決の問い合わせを受け、自身が持っているゾーン情報の中から、該当する情報を検索して回答することです。インターネット上に存在し、名前解決が可能なすべてのドメインは、それぞれに権威DNSサーバーが設定され、個別のゾーン情報を持っています。
先ほど、WebブラウザにURLを入力すると、ブラウザがOSの機能を介して名前解決の問い合わせを行うと説明しました。ですが、クライアントのOSが直接権威DNSサーバーに問い合わせを行うわけではありません。通常、OSは「クライアントの代理として権威サーバーに問い合わせを行うサーバー」に対して、問い合わせを行います。このサーバーが「キャッシュDNSサーバー」です。多くのインターネットプロバイダーでは、ユーザー向けにキャッシュDNSサーバーを提供しています。一般家庭では、インターネット接続用のブロードバンドルーターが提供しているキャッシュDNSサーバー機能を利用しているケースも多いでしょう。企業では、社内に独自のキャッシュDNSサーバーを設置していることも珍しくありません。
なお、キャッシュDNSサーバーは、名前解決の問い合わせを代行すると同時にその名の通り、名前解決の結果を一定時間キャッシュする役目も担っています。これにより、一定時間内に同じ名前解決が行われた際は、権威サーバーへの再度の問い合わせを行わず、過去の応答のキャッシュを利用することでより効率の良い名前解決が実現できます。この機能は、大人数が同時に利用する企業などで特に効果を発揮します。
DNSサーバーによる名前解決の流れ
名前解決が行われる最も一般的な例に、Webサイトにアクセスする際のURLに含まれるドメイン名に対応するIPアドレスの検索があります。このドメイン名に対応するIPアドレスを調べる名前解決を「正引き」と呼びます(反対にIPアドレスに対するドメイン名を調べることを「逆引き」と呼びます)。ここでは具体的な例として、「www.fujitsu.com」のサイトにアクセスする際にどのように正引きの名前解決が行われているかを解説します。
利用者がWebブラウザのURL欄に「www.fujitsu.com」とURLを入力すると、OSがネットワーク設定を元に指定されたキャッシュDNSサーバーに対して、名前解決を要求します。名前解決を要求されたキャッシュDNSサーバーは、まず「ルートサーバー」と呼ばれるサーバーに問い合わせを行います。ルートサーバーとは、インターネットにおける名前解決の起点となる、特別なDNSサーバーです。
ルートサーバーは「www.fujitsu.com」のIPアドレスを直接は知りません。しかし、ルートサーバーはトップレベルドメインに関する情報を持っているため(トップレベルドメインである)、「.com」ドメインの権威DNSサーバーのIPアドレスを回答できます。
キャッシュDNSサーバーは、この情報を元に「.com」ドメインの権威DNSサーバーに対して、同様の問い合わせを行います。「.com」ドメインの権威DNSサーバーもやはり「www.fujitsu.com」のIPアドレスは知りません。ですが、自身が管理する「.com」ドメイン配下にある「fujitsu.com」ドメインの権威DNSサーバーのIPアドレスは知っているため、このIPアドレスを回答します。
キャッシュDNSサーバーは、この情報を元に今度は「fujitsu.com」ドメインの権威DNSサーバーに対して、同様の問い合わせを行います。「fujitsu.com」ドメインの権威DNSサーバーは、当然ながら自分のゾーン内に存在する「www.fujitsu.com」のIPアドレスを知っているため、具体的なIPアドレスを回答します。この最終的な応答を元にWebブラウザーは、「www.fujitsu.com」のWebサイトに接続を行うのです。
このようにDNSによる名前解決は、トップレベルドメインから順にドメインの階層を辿ることで行われています。こうした仕組みにより、世界中に無数にあるドメインを異なるサーバーで分散管理することができるのです。
なお、インターネットには悪意のあるサイトが多く存在します。例えば、紛らわしいドメイン(有名なサービスのURLのうち「l(エル)」を「1(イチ)」に置き換えるなど)を用意してフィッシングサイトを作り、個人情報を抜き取るといったことも珍しくありません。そして、こうした偽ドメインを使った攻撃は、人間の目ではうっかり見逃してしまいがちです。しかし、偽のドメインであったとしても、アクセスする際には必ず名前解決が行われます。これを利用して、DNSの名前解決時に不審なドメイン名を検出することで、ユーザーを保護する仕組みが「DNSセキュリティ」です。
DNSセキュリティのご紹介
富士通では、DNSの仕組みを利用し、インターネット通信を可視化・分析することで、既知の攻撃や未知の脅威に対して高度なセキュリティ対策が可能なサービス「DNSセキュリティ powered by Cisco Umbrella」を提供しています。SASEやクラウド型セキュリティ対策の導入をお考えのお客様は、ぜひ一度ご検討ください。
お問い合わせ・ご相談
当社はセキュリティ保護の観点からSSL技術を使用しております。