今回からはDNSサーバーを構築していきます。構築する前にまずは前提となる基礎知識から見ていきます。

DNSとは

DNS(Domain Name System)とは、インターネットなどのTCP/IPネットワーク上でホスト名やドメイン名とIPアドレスの対応関係を管理するシステムのことです。

つまり、一言で表すと「インターネットにおける電話帳のようなもの」です。

例えば、Googleにアクセスしたいとき、実アドレスである74.125.153.103をブラウザのアドレスバーに打ち込む人はいないと思います。「google.jp」または「google.co.jp」などと入力するはずです。
クライアントはこの名前をDNSサーバーに問い合わせ、対応するIPアドレスを取得・接続します。その結果、ユーザーはWebサイトの実アドレスを意識せずコンテンツを閲覧できるというわけです。

ホスト名もしくはドメイン名からIPアドレスへ変換することを名前解決と言います。

問い合わせを出すソフトウェアを「リゾルバ」と言い、その問い合わせに返信するのが「DNSサーバー」となります。

FQDNとは

「ホスト名」や「ドメイン名」といった用語についても整理しておきます。

ドメイン名とは、ネットワーク内にあるコンピュータや機器(ホスト)の所属を表すものです。そのドメインの中からひとつのホストを表すものがホスト名です。

FQDN(Fully Qualified Domain Name)とは、ホスト名、ドメイン名(サブドメイン名)などすべてを省略せずに指定した記述形式のことです。例えば、FQDN「www.yahoo.co.jp.」は、ホスト名「www」、ドメイン名「yahoo.co.jp」という関係になります。
FQDN

なお、FQDNを正確に記述する場合、一番右端に「.(ピリオド)」を付ける必要があります。このピリオドは、ルート・ノードを示していますが、省略されることがほとんどです。

BINDとは

BINDとは、最も広く普及しているDNSサーバーソフトウェアの一つです。

Windows Serverに含まれるMicrosoft DNSサーバーなどもありますが、BINDはDNSサーバー実装の事実上の標準として幅広く使われています。

BINDの特徴として以下が挙げられます。

  • DNSサーバー実装の事実上の標準
  • DNSの仕様として規定されているほとんどの機能を実装しており高機能
  • サーバー向けOSパッケージなどでは標準のDNSサーバーとして同梱されている
  • オープンソースソフトウェアとして公開されており、誰でも自由に入手、利用、改変、再配布などが可能

設定が複雑で導入・管理が比較的難しいことや、広く普及していることもあり攻撃の標的となりなすいなどの面もあります。

Apacheなどと同じでデーモン(常駐プログラム)として動作し、プロセス名は「named」となります。

DNSの名前解決方法

DNSの名前解決方法には「再帰問い合わせ」と「反復問い合わせ」の2種類があります。

再帰問い合わせ リゾルバからの問い合わせを受けたDNSサーバーが、他のDNSサーバーに問い合わせを行いその最終的な結果をリゾルバに応答する問い合わせのこと。
反復問い合わせ リゾルバから再帰問い合わせを受けたDNSサーバーが、再帰問い合わせの結果を返すために、答えを得られるまで繰り返し他のDNSサーバへ行う問い合わせのこと。

例えば、WebブラウザにURLを入力し、あるWebサイトを表示しようとした場合、Webブラウザに実装されるリゾルバがDNSサーバーに名前解決を依頼します。
DNSの名前解決方法

パソコンのリゾルバが出した問い合わせは、最終的な答えを要求するタイプであり、再帰問い合わせを行ないます。再帰問い合わせを受け取ったDNSサーバーは、自分で調べて答えを返信しなければなりません。

これに対して上図で言う社内DNSサーバーのリゾルバが出した問い合わせは、必ずしも最終的な答えを要求するものではありません。もし、問い合わせたDNSサーバーが答えを知らなかったら、知ってそうな別のDNSサーバーのIPアドレスを教えてもらいます。この問い合わせを繰り返すことで、最後に答えを知っているDNSサーバーにたどり着くというわけです。このような問い合わせを反復問い合わせといいます。

DNSフォワーダ

フォワーダ機能を使用すると、自身のDNSで解決できない問い合わせをフォワーダに指定したDNSサーバーに転送することができます。
例えば、外部に公開したくない社内専用のDNSサーバーがあったとします。その社内専用DNSサーバーが答えられない名前解決の問い合わせが来た場合、外部へ抜けられるDNSサーバーへその問い合わせを転送してやります。あとは、転送先のDNSサーバーが答えを返してくれるのを待ち、返ってきたら、自身が受けた問い合わせ元へ結果を返してやるという仕組みです。

フォワーダの指定先は一般的にプロバイダのDNSサーバーになります。なお、フォワーダを指定しない場合は、自身が知っている範囲でしか応えられません。