DNSサーバー

DNSサーバーの基本動作

DNSサーバーの基本的な動作は、クライアントからリクエストメッセージを受け取り、その問い合わせの内容に応じる形で情報を返す(レスポンスメッセージを返す)ことです。クライアントからのリクエストメッセージには3つの情報が含まれています。

  • 名前

サーバーやメールの配信先(メールアドレスの@以後の名前)などの名前のこと。

  • クラス

クラスには常に「IN」という値が割り当てられていて、それによってクラスという情報を識別しています。

  • タイプ

名前にどのようなタイプ(種類)の情報が対応付けられているのかを表します。タイプが「A」であれば、名前にIPアドレスが対応付けられていることを表し、「MX」ならば名前に配送先が対応付けられていることを表します。このタイプによってクライアントに回答する情報の内容は異なってきます。

 

DNSサーバーにはこの3つの情報を対応付けてクライアントに返答する項目を登録しておきます。(上図)この登録内容から問い合わせメッセージに該当するものを探して、クライアントに返答します。

IPアドレスを問い合わせるときは、「A」(adressの略)というタイプを使用しますが、メースの配信先を問い合わせるときは「MX」(mail exchange)というタイプを使用します。メールの配信先は「MX」というタイプでDNSサーバーに登録され、IPアドレスは「A」というタイプでDNSサーバーに登録されているからです。例えば、katu@glasscom.comというメールアドレスに対して、その配信先のメールサーバーを調べる場合にはその@より後になる名前が配信先になるので、次の3項目をメッセージとして問い合わせます。

  1. 名前=glass.com
  2. クラス=IN
  3. タイプ=MX

問い合わせを受けたDNSサーバーは、10とmail.glasscom.comという2つの項目を返答します。上図よりタイプがMXで、10というメールサーバーの優先順位とmail.glasscom.comというメールサーバー名の2項目が登録されているからです。また、MXの場合はこの返答に加えてIPアドレスも一緒に返すことになっています。上図の表の3行目にIPアドレスを登録した行があるので、それを探し出して同時に返答します。この図の例では「192.0.2.227」というIPアドレスを一緒に返答するようになっています。

DNSサーバーは、名前とタイプによって調べる情報を指定し、それに従って該当するものを探してクライアントに返答するのが基本的な動作です。また、サーバー内に登録されたドメイン名とIPアドレスの対応表を調べて、IPアドレスを回答します。

DNSサーバーのタイプにはAとMXのタイプの他にもIPアドレスから名前を調べるときに使う「PTR」というタイプ、名前にエイリアス(ニックネーム)を付けるための「CNAME」やDNSサーバーのIPアドレスを登録する「NS」、ドメインそのものの属性情報を登録する「SOA」等があります。DNSサーバーの動作は問い合わせメッセージの中の名前とタイプに該当する情報を探し出して返答するという単純なものですが、タイプを使い分けることで様々な情報を取り扱うことができます。

このようにDNSサーバーは、サーバ内に登録されたドメイン名とIPアドレスの対応表を調べて。IPアドレスを回答するようになっています。

上図の表は登録情報を記述してありますが、実際に登録情報は設定ファイルなどに書き込まれています。その表の1行分の情報に相当するものをリソース・レコードと呼びます。

ドメインの階層

社内ネットワークなど限られた複数台のWEBサーバーやメール・サーバーがある場合は、その情報を一台のDNSサーバーに登録できるので、これまでの説明のように動作してくれますが、インターネット上には莫大な数のサーバーが存在しているのでそれを一台のDNSサーバーでまかなうことができません。ですので、情報を分散させて多数のDNSサーバーに登録し、その多数のDNSサーバーが連携して必要な情報が何処に登録されているのか探し出す仕組みがあります。

情報をDNSサーバーに登録する

DNDサーバーに登録されている情報にはすべてドメイン名という階層的な構造を持つ名前が付けられています。階層とは例えば、地方都市の県、市、町といった階層と同じようにイメージすればわかりやすいかと思います。階層化することで、多数の情報を効率的に整理することができます。

DNSで使う名前は、www.katu.katucom.comの用に「.」ドットで区切られていますが、このドットが階層の区切りを表します。地方都市のように県や市などで区切る代わりにドットで区切ります。そして、右側に表すものが上位の階層を表すことになっています。そして、そのひとつの地域(県や市に相当)に相当するものをドメインと呼びます。つまり、comの下にkatucomというドメインがあり、その下にkatuというドメインがあり、そのドメインの中にwwwという名前があるということになります。

この階層化されたドメインの情報をDNSサーバーに登録するのですが、その際には1つのドメインをひとまとまりのものとして扱います。ドメイン情報は分割して登録することはできません。ただし、1台のDNSサーバーには複数のドメインの情報を登録することができます。

ここで1台のDNSサーバーに1つのドメインを登録するものとして話を進めていくことにします。そうすると、ドメインの階層構造と同じ格好でDNSサーバーが配置され、各ドメインの情報はそのドメインにあるDNSサーバーに登録されることとなります。

ドメインに情報を登録する

例えば会社のドメインの場合、事業部ごとにDNSサーバーを配置して、別々にドメインの情報を登録したい場合。1つのドメインは分割できないので、ドメインの下にさらに下位ドメインを作成して、それを事業部ごとに割り当てることができます。

例えば、会社のドメインがexample.co.jpだった場合、そのドメインの下に、sub1.example.co.jp、sub2.example.co.jpというようにドメインを複数作成して、その下位ドメインを事業部ごとに割り当てることができるということです。ドメインは特に事業部とか特定の組織名を指し示すものではないので、事業部だけではなく、例えば子会社などでも何にでもドメインを割り当てることができます。

インターネット上のドメインはすべてこのように下位にドメインを作成していき国や会社や団体等に割り当てているものです。

  • EX:ドメイン www.katu.katuhiro.co.jp の場合

最上位のjpというドメインは日本に割り当てられたドメインで、その下位にあるcoというドメインは、日本国内のドメインを分類するために設けられたドメインで、会社を表します。そして、その下にあるkatuhiroが会社に割り当てられたドメインになり、その次にkatuとなり最下位のwwwがサーバーの名前ということになります。

DNSサーバーを探し出す(IPアドレスを取得)

DNSサーバーに登録した情報を探し出す方法

アクセスしたWEBサーバーがどのDNSサーバーに登録されているのか、それを探し出す方法を説明します。

ネット上にはDNSサーバーが何万台と存在するので、すべてを調べる訳のは不可能です。ですので、最初に会のドメインを担当するDNSサーバーのIPアドレスをその上位のDNSサーバー、それまた上位のDNSサーバーに登録していくという順番で登録していきます。例えばwww.katu.katuhiro.comというドメインを担当するDNSサーバーをkatu.katuhiro.comのDNSサーバーに、.comドメインのDNSサーバーに登録するといった具合です。この方式をとれば、上位のDNSサーバーが分かれば、自動的に下位のDNSサーバーのIPアドレスが分かり、そこにリクエストメッセージを送ることができます。

ルートドメイン

comやjpといったドメイン(これらをトップレベル・ドメインと呼ぶ)のDNSサーバーに下位のDNSサーバーを登録したところでおわりのように見えますが、インターネットのドメインには、comやjpの上位にもう一つ、ルート・ドメインと呼ばれるドメインがあります。ドメイン名がないので、通常ドメイン名は省略されるのですが、明示的に書く場合には、www.katu.katuhiro. katuhiro. com. というように最後に「.」(ピリオド)を付け、このピリオドでルート・ドメインを表します。このルート・ドメインのDNSサーバーにcomやjpのDNSサーバーを登録します。こうして下位のDNSサーバーを上位のDNSサーバーに登録することで、ルート・ドメインから順番に下の方にたどっていくことができます。

ルート・ドメインのDNSサーバーはネット上に存在するDNSサーバーすべてに登録されていて、これによりどのDNSサーバーもルート・ドメインにアクセスすることができます。つまり、クライアントからどこかのDNSサーバーにアクセスすれば、そこからルート・ドメインを経由して、ドメインの階層を下にたどっていき、最終的に目的のDNSサーバーにたどり着けるということになります。(下図)

 

ルート・ドメインのDNSサーバーに割り当てられたIPアドレスは現在全世界で13個しかありませんので、各DNSサーバーに登録する方法はさほど難しくありません。実際には、ルート・ドメインのDNSサーバーに関する情報はDNSサーバー・ソフトと一緒に設定ファイルとして配布されているので、そのソフトをインストールすれば、自動的に登録が終わってしまいます。(DNSサーバーをルートドメインに登録する)

ここまでが準備段階です。DNSサーバーを設定するときには、個々までの登録を済ませておきます。これで、DNSサーバーは数万台以上あるDNSサーバーの中から目的のDNSサーバーを探し出すことができます。

IPアドレスの取得

下図の順番に www.katu.katuhiro.com のドメインから各DNSサーバーをルート・ドメイン、上位DNSサーバーから下位DNSサーバーまでリクエストとレスポンスを繰り返しながらたどっていくと最終的に目的のWEBサーバーにたどり着いたところで指定したドメインのIPアドレスがユーザーへ通知される仕組みになっています。

 

DNSサーバーはキャッシュ機能で素早く回答

実際のネット上では、1台のDNSサーバーに複数のドメイン情報を登録することがあるので、各ドメインに1台ずつDNSサーバーが存在するとは限りません。上位と下位のドメインを同じDNSサーバーに登録している場合もあります。その場合には、上位のDNSサーバーに問い合わせれば、下位のDNSサーバーをひとつ飛ばして、更にその下のDNSサーバーに関する情報が返ってきます。

また、その都度最上位のルート・ドメインから順にたどっていくという原則通りに動作しない場合は、キャッシュ機能が働いている場合があります。DNSサーバーは一度調べた名前をキャッシュに記録しておく機能があり、問い合わせた名前に該当する情報がキャッシュにあれば、その情報を回答するからです。その位置から階層構造を下に向かって探すことができます。このような場合はルート・ドメインから探し始めるより、高速で手間を省くことができます。

問い合わせた名前がドメインに登録されていない場合には、名前が存在しないという回答が返ってきますが、それをキャッシュに保存することもあります。これで名前が存在しない場合にも素早く回答することができます。

このキャッシュの仕組みには、注意点が一つあります。キャッシュに情報を保存した後、登録情報が変更される場合もあるので、キャッシュ中に保存した情報が正しいとは限らないということです。そのため、DNSサーバーに登録する情報には有効期限を設定します。そして、その有効期限が過ぎたら、そのデータはキャッシュから削除します。さらに、問い合わせに回答するとき、情報はキャッシュに保存されたものか、登録元のDNSサーバーからの返答なのかを知らせることになっています。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です