DNSの設定

 DNSを構築する際、使用するプログラムは以下の2つです。

 bind-9.2.1-1.i586.rpm
 caching-nameing-server-7.0-4.noarch.rpm

 そして動作確認用として以下のプログラムを使用します。

 bind-utils-9.2.1-1.i586.rpm

  今回はソースからのコンパイルではなく、パッケージを使用しました。
  このパッケージは 2004-7-12 時点での最新です。


例として、以下の情報をプロバイダーとドメイン指定事業者から取得して説明していきます。

 << プロバイダ >>
IPアドレス222.150.153.a
サブネットマスク255.255.255.248

 << ドメイン情報 >>
ドメインlab-kage.plala.jp
DNSサーバー(プライマリー)222.150.153.b
DNSサーバー(セカンダリー)222.150.153.c

以上の様に情報の登録と取得をしていたと仮定します。

 << ネットワーク構成 >>
ホスト名IPアドレス
DNSサーバー(プライマリー)dns1222.150.153.b
DNSサーバー(セカンダリー)dns2222.150.153.c
Webサーバーweb222.150.153.d
Mailサーバーmail222.150.153.e
内部ネットワークのルーター無し222.150.153.f

上のようなネットワーク構成にすると仮定します。

※ IPアドレスも仮定なので、文字の箇所に数字が入ります。

≪ 項目 ≫
1.BINDとは
2.named.confの設定
3.正引きゾーンデータベースの設定
4.逆引きゾーンデータベースの設定
5.動作確認の仕方


 1.BINDで設定する事

 BINDは大まかに分けると以下の2つの役割を行います。

 (1).内部ネットワークのクライアントから、名前解決の要求があった場合、他のDNSサーバーに問合わせに行ってくれる

 (2).ドメイン内にあるサーバー機のIPアドレスとホスト名の対応表を設定すること

 (1)は特に設定することはありません。 bind をインストールすれば動作します。 DNSで実際に設定するのは(2)のIPアドレスとホスト名の対応表の設定をします。 この対応表の事をゾーンデータベースと言いますが、正引き用(ホスト名→IPアドレス)と逆引き用(IPアドレス→ホスト名)の2つを設定する必要があります。

 DNSサーバーは通常2台設置するようになっています。1台が何らかの理由で停止しても、もう1台が引き続き名前解決を行うようにするためです。 この2台は同じゾーンデータベースを持つ必要があります。どちらかのDNSサーバーをマスター(プライマリーと呼びます。)にして、 そのゾーンデータベースをもう1つのDNSサーバー(セカンダリーと呼びます)がコピーして使います。
 DNSサーバーを設置する際、注意することはサーバーを2つ同じ場所に置かないことです。停電したりすると2つ同時に停止してしまうからです。 通常は契約したプロバイダかレンタルサーバー等を貸してくれる企業に委託する事が多いです。

 2.named.confの設定

 まずはパッケージのインストール完了したら、 ”/etc/named.conf” があるか確認してください。BINDの本体である named が起動時に読み込むファイルです。 この named.conf は、主にDNSの動作モードやセキュリティの設定、ゾーンデータベースファイルの参照先の指定、DNSのプライマリーは ゾーンデータベースファイルの転送先の指定、DNSのセカンダリーはゾーンデータベースファイルの転送元の指定をします。

 以下が named.conf の初期の内容です。

例1
option {<<--  (1)
  director /var/named
  #〜 以下コメントなので省略 〜
}

zone "." {<<--  (2)
  type hint;
  file "named.ca";
};

zone "0.0.127.in-addr.arpa" {<<--  (3)
  type master;
  file "named.local";
};
zone "localhost" {<<--  (4)
  type master;
  file "localhost.zone";
};


 上から順に説明します。

 ◆ option { 〜 } 
 (1)の部分の説明ですが、DNS全体に適用されるオプション類を指定する箇所です。上の場合だと、”director /var/named”とだけ 記述されてます。これは”named”プロセスのワーキングディレクトリィの指定で、ゾーンデータベースファ イルの参照する場所や、ログの出力する場所など指定しています。その他にいろいろオプションはありますが、 設定はこれだけで充分なので、特に変更する必要は無いでしょう。

 ◆ zone { 〜 } 
 このDNSサーバーのゾーンの定義を記述する箇所です。内容はゾーンファイルの内容(参照するファイル名等) や、ゾーン毎のオプションを定義します。
 初期の内容で記述されている(2)の部分はルートネームサーバーの情報の事が記述されています。
 (3)、(4)の設定は、見てもらえば分かると思いますが、ループバックアドレス(自分自身のアドレスの設定)です。 要はクライアントが localhost でアクセスした場合、 127.0.0.1 を返す処理をします。
ここも特に変更する必要は無いです。

 初期の named.conf に記述されている内容には、特に変更することは無いと思います。 この内容の下に、取得したドメインとIPアドレスの情報を元にゾーンの定義を追加していかないといけません。
 まずソーンとは何かと言うと、ネームサーバがドメインを管理する範囲の事です。上の例だと ”lab-kage.plala.jp” の ネットワーク内にあるサーバーのグループの事です。

 named.conf に追加する設定として、DNSのプライマリーの正引き用と逆引き用の設定についてです。
 外部から、この ”lab-kage.plala.jp” (上記の例の場合)のネットワークへの、名前解決要求があった場合、参照する ゾーンデータベースファイルの指定と、ゾーンデータベースファイルを転送するDNSのセカンダリーのIPアドレスを記述します。
ちなみにホスト名とIPアドレスの対応表の詳細は、ゾーンデータベースファイルに記述します。

◆ 正引き(ホスト名からIPアドレスを返す)の設定

上の例でいうと ”lab-kage.plala.jp” のドメインで名前解決の要求があった場合の設定例です。
以下がその例です。

例2
zone "lab-kage.plala.jp" {<<--  (1)
  type master;<<--  (2)
  file "lab-kage.plala.jp.rev";<<--  (3)
  allow-update { none; };<<--  (4)
  allow-transfer { 222.150.153.c };<<--  (5)
};


◆ (1)〜(5)の説明です。
(1)は ”lab-kage.plala.jp” でリクエストを受けた場合、と言うことですが例としてブラウザ等で ”www.lab-kage.plala.jp” や  ”mail.lab-kage.plala.jp” 等、後ろのドメインが ”lab-kage.plala.jp” であったら(2)〜(5)が適用されるという事です。
書式は zone "ドメイン名"必ず " で囲ってください。

(2)はゾーンのタイプを指定しています。下にも記述していますが master というのは、ゾーンの情報をローカルに持っている事を意味します。

(3)は(2)が master のみ記述します。ゾーンデータファイルのファイル名を指定しています。ファイル名は自由につけれますが、ゾーンデータファイルと合わせてください。 ゾーンデータファイルファイルを置く場所は option の director で設定した  /var/named (上記の例の場合)に置かなければいけません。

(4)外部から動的変更を拒否します。

(5)DNSスレーブサーバーに対してのみ、ゾーンの転送を行います。

(2)〜(5)で主に使用されるとおもわれる項目と書式を下の表にまとめてみました。

項目書式説明
type type < master | slave | hint | forward > zone定義では必須です。省略できません。
master・・・このゾーンに対してゾーンファイルをローカルに持つという意味です。
slave・・・このゾーンに対してゾーンファイルは、他のサーバーが持ち、そこから情報をコピーしてくるという意味です。
hint ・・・ルートネームサーバーの情報を登録する為に使用します。
forward・・・このゾーンに対してのリクエストを他のサーバーに転送します。
file file <ファイル名> 参照するゾーンデータベースファイルのファイル名を指定します。
type が master の場合は省略不可です。 実際に置く場所は option の directory で指定したパスの直下になります。
masters masters
 < IPアドレス >
typeがslaveのみ必須でその他の type は不要です。ゾーンファイルの転送元(DNSマスターサーバーなど)のIPアドレスを指定します。
allow-transfer allow-transfer
 < IPアドレス | none >
指定したIPアドレス(範囲)に対して、ゾーンファイルの転送を許可します。
noneを指定した場合、ゾーンファイルの転送しません。
省略した場合、すべてのIPアドレスに対してゾーンファイルの転送を許可してしまいます。
allow-update allow-update
 < IPアドレス | none >
指定したIPアドレス(範囲)に対して、ゾーンファイルの動的更新を許可します。
省略した場合は、動的更新は行いません。
allow-query allow-query
 < IPアドレス >
指定したIPアドレス(範囲)に対して、リクエストを許可します。
省略した場合は、すべてのIPアドレスに対してリクエストを許可します。


◆ 逆引き(IPアドレスからホスト名を返す)の設定

上の例で言うと 222.150.153.a 〜 222.150.153.f ま でのIPアドレスで問い合わせがあった場合、ホスト名を返すという設定です。

例3
zone "a/29.153.150.222.in-addr.arpa" {<<--  (1)
  type master;
  file "a.153.150.222.in-addr.arpa.rev";
  allow-update { none; };
  allow-transfer { 222.150.153.c; };
};


気を付ける点と言えば、(1)の箇所のみです。取得したIPアドレスを逆に表記して ”.in-addr.arpa” を付けます。
 サブネットマスクを付ける場合は以下の様に表記すれば良いです。

 222.150.153.a/29
   ↓
 a/29.153.150.222

それ以外の設定は正引きの場合と同じです。

◆ DNSセカンダリーの設定
次にDNSをセカンダリーとして設定する場合です。

例4
zone "lab-kage.plala.jp" {
  type slave;<<--  (1)
  masters 222.150.153.b;<<--  (2)
  allow-update { none; };
  allow-transfer { none; };
};
注意する点は以下の通りです。
(1)はDNSセカンダリーの設定なのでゾーンデータファイルをローカルに持たず、プライマリーが持つので type は slave と指定してます。

(2)はDNSのプライマリーのIPアドレスを指定します。(1)を slave とした場合のみ必須です。逆に file の指定は不要になります。

 3.正引きゾーンデータベースの設定

ホスト名とIPアドレスの対応表となるゾーンデータベースを作成します。ゾーンデータベースは各ゾーン毎作成する必要があり、 option の中の director で指定した場所に、  zone の中の file で指定したファイル名で作成します。まず正引きゾーンデータベース作成するので、上記のネットワーク構成例でいくと、
 "/var/named/lab-kage.plala.jp.rev" 
というファイルを作成します。 ( vi などのエディタで新規作成してください)
以下が正引き用のゾーンデータベースの例です。

例5
; SOAレコード<<--  (1)
@ IN SOA dns1.lab-kage.plala.jp. info.lab-kage.plala.jp. {
  200407251;Serial
  3600;Refresh
  3600;Retry
  604800;Expire
  86400;Minimum TTL
}

; NSレコードとMXレコード<<--  (2)
  IN NSdns1.lab-kage.plala.jp.
  IN NSdns2.lab-kage.plala.jp.
  IN MX 10mail.lab-kage.plala.jp.

; Aレコード<<--  (3)
  localhostIN A 127.0.0.1
  dns1IN A 222.150.153.b
  dns2IN A 222.150.153.c
  webIN A 222.150.153.d
  mailIN A 222.150.153.e

; エイリアス<<--  (4)
  wwwIN CNAME web.lab-kage.plala.jp.
  postIN CNAME mail.lab-kage.plala.jp.


まず記述するさい注意点として、FQDNを記述する際は最後に . (ピリオド)を付ける事です。  . (ピリオド)を記述しなかった場合はゾーンで指定したドメインが(例だとlab-kage.plala.jp)が後ろに補完されます。
コメントの場合は ; (セミコロン)から始める事です。

◆ (1)の部分はゾーン定義の開始を宣言するためSOAレコードの記述です。
そのゾーンデータに関するパラメータを指定します。
@ IN SOA dns1.lab-kage.plala.jp. info.lab-kage.plala.jp.
と例5でなっています。まず @ の部分は named.conf で指定したゾーン名を記述します。つまりここでは lab-kage.plala.jp. を記述しますが、 @ で略記できます。  IN SOA の後にはホスト名(DNSのフライマリー)をFQDNで記述して、その後に管理者用のメールアドレスを書きます。メールアドレス部分が info.lab-kage.plala.jp.  となっていますが、namedでは info@lab-kage.plala.jp. と読み替えます。

(1)のSOAの{ }内の説明です。

Serial
シリアル番号。ゾーンデータベースを更新した場合に変更します。ゾーンの転送をするさいDNSセカンダリーはこの値を参照してセカンダリーが持っている値より大きければ、セカンダリーへゾーンを転送します。 通常は年月日+その日の更新回数 で記述します。

Refresh
リフレッシュ間隔。DNSのセカンダリーがゾーンデータベースが更新があったかチェックする間隔です。(秒単位)

Retry
再試行時間。リフレッシュのチェックに失敗した場合、何秒後に再試行するかを指定します。

Expire
最大有効時間。チェックできないまま時間が経過した場合、DNSセカンダリーのデータが有効である時間を指定します。(秒単位)

Minimum TTL
生存時間。ほかのDNSサーバーがこのゾーンのデータをキャッシュした場合、どれだけの時間データが有効か指定します。(秒単位)


◆ (2)の部分にNSレコードとMXレコードを記述します。

このゾーンを管理するDNSサーバーとメールサーバーを記述します。
書式は  < ゾーン名 > IN NS(MX) < ホスト名 > 
NS はName Serverの略でDNSサーバーを指定します。上記の例だと lab-kage.plala.jp を管理するDNSサーバーはdns1とdns2の事になります。
MX はMail Exchangeの略でメール配送先のサーバーを指定します。メール配送先のサーバーはmailなので例5の(2)の書き方になります。
MX の後ろにある数字は優先度の事です。整数であればかまいません。値が低いほど優先度が高くなります。MXレコードのみ必要です。

◆ (3)の部分にAレコードを記述します。

ホストの示すIPアドレスを定義します。ここでホスト名からIPアドレスを出力する為の対応表を作成するわけです。

書式は  < ホスト名 > IN A < IPアドレス >
記述するのは、外部に公開したいサーバーだけで良いです。

◆ (4)の部分にサーバーのエイリアス(別名)を記述します

公開するサーバーに、今のホスト名とは別のホスト名を付ける場合、定義します。
書式は  < 別名 > IN CNAME < ホスト名 >
例5で ”www   IN CNAME web.lab-kage.plala.jp.” となっています。このように定義する事で  www.lab-kage.plala.jp でアクセスした場合は、実際には web.lab-kage.plala.jpにアクセスする事と同じになります。

 4.逆引きゾーンデータベースの設定

ホスト名とIPアドレスの対応表となるゾーンデータベースを作成します。正引きと同じ様に option の中の director で指定した場所に、  zone の中の file で指定したファイル名で作成します。今度は逆引きゾーンデータベース作成するので、上記のネットワーク構成例でいくと、
 "/var/named/a.153.150.222.in-addr.arpa.rev" 
というファイルを作成します。 (これも vi などのエディタで新規作成してください)
以下が逆引き用のゾーンデータベースの例です。

例5
; SOAレコード<<--  (1)
@ IN SOA dns1.lab-kage.plala.jp. info.lab-kage.plala.jp. {
  200407251;Serial
  3600;Refresh
  3600;Retry
  604800;Expire
  86400;Minimum TTL
}

; NSレコード<<--  (2)
  IN NSdns1.lab-kage.plala.jp.
  IN NSdns2.lab-kage.plala.jp.

; PTRレコード<<--  (3)
  b IN PTRdns1.lab-kage.plala.jp.
  c IN PTRdns2.lab-kage.plala.jp.
  d IN PTRweb.lab-kage.plala.jp.
  e IN PTRmail.lab-kage.plala.jp.
 ◆ (1)はゾーン定義の開始を宣言するためSOAレコードの記述です。
正引き用と同じなので特に変更する必要はないでしょう。

 ◆ (2)はNSレコードを記述します。
正引き用と同じ様にDNSサーバーを指定します。MXレコードは逆引き用では必要無いです。

 ◆ (3)はPTRレコードを記述します。
IPアドレスの示すホストを定義します。正引きとは逆にIPアドレスからホスト名を出力する為の対応表を作成するわけです。

書式は  < IPアドレス > IN PTR < ホスト名 >
記述するのは、外部に公開したいサーバーだけで良いです。

逆引き用にエイリアスの設定はありません。

 5.動作確認の仕方

namedは設定ファイルに間違いあったとしても、エラーを出力しません。そのまま無視して処理をします。以下のコマンドを使用して設定ファイルのチェックができます。
bind-utils-9.2.1-1.i586.rpmがインストールされているか確認しておいてください)

named-checkconf
"named.conf" 用のチェックコマンドです。

named-checkzone < ゾーンデータベースのファイル名 >
ゾーンデータベース用のチェックコマンドです。

この2つのコマンドを使用して"named.conf" とゾーンデータベースの書式をチェックしてください。もしエラー箇所があった場合、その行が出力されます。 エラーが無い場合は何も出力しません。

一通り設定ファイルが完成したら、named を起動します。起動の仕方は以下のコマンドです。

  /etc/rc.d/init.d/named start

設定ファイルの書式にエラーが無くても、正しい結果が返ってくるか確認します。以下のコマンドで確認をします。

  nslookup

プログラムを起動したら画面には > と出力されますので、そこでホスト名を入力してエンターキーを押してください。 そしたらそのホストのIPアドレス等の情報が出力されます。その情報が正しいかどうか確認してください。


先頭に戻る  TOPページに戻る