BINDの設定

提供: Astarisk Works Wiki

オープンソースのDNSサーバであるBINDの設定についてのメモ

このページではLinux上で動作するBIND9を対象に説明する。

目次

DNSとは

Domain Name Server(DNS)とはホスト名からIPアドレス、またはIPアドレスからホスト名を知るための情報を管理し、提供するサーバである。

ホスト名からIPアドレスを調べることを正引きといい、IPアドレスからホスト名を知ることを逆引きという。

DNSのおかげでIPアドレスを覚えなくてもホスト名で他のマシンにアクセス可能となるし、IPアドレスが変更されてもDNSへの登録を変更すれば、クライアント側からは同じホスト名でアクセスを続けることが可能となる。

このページの説明が前提とするサンプルネットワーク

BINDのインストール

各ディストリビューションともパッケージが用意されているので、特に問題がなければそれをインストールする。

ソースからインストールする場合は次のページからダウンロードできる。BIND | Internet Systems Consortium

設定ファイルの種類

BINDの設定に必要となるファイルの種類は次の表の通り。

この表のうち1以外はnamed.confの設定次第で任意のファイル名をつけることができる。このページでは説明しにくいのでこのファイル名で説明する。

No. ファイル名 説明
1 named.conf BINDの動作を左右する設定ファイル
2 named.ca ルートサーバの情報を設定する。次のURLからダウンロードできる。 ftp://rs.internic.net/domain/named.root
3 local.zone

ループバックアドレスの正引きゾーンファイル。localhost→127.0.0.1が引けるように設定する。

4 local.rev ループバックアドレスの逆引きゾーンファイル。127.0.0.1→localhostが引けるように設定する。
5 sample.zone 管理するドメインの正引きゾーンファイル
6 sample.rev 管理するドメインの逆引きゾーンファイル。

BINDをDNSキャッシュサーバとしてのみ利用するなら、1から4のファイルを設定すればよい。

管理するドメインのゾーンサーバとして利用するなら、必要に応じて5,6の設定を用意する。

named.confの設定

named.confはBINDの動作を左右する設定ファイルである。

BINDの設定は複数のファイルに分けて行うが、namd.confにそれぞれどのファイルに設定するか定義する。

namd.confの構造はステートメントを基本構成要素とする。ステートメントとは {}; で括られたブロックのこと。

ちなみに、#、//から行末までと/*〜*/で囲われた部分はコメントとなる。

ステートメントはacl、options、zoneの3種類あり、optionsとzoneは必須。

以下は設定例。

options {
        directory "/var/cache/bind"; 
        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113 

       // If your ISP provided one or more IP addresses for stable
       // nameservers, you probably want to use them as forwarders.
       // Uncomment the following block, and insert the addresses replacing
       // the all-0's placeholder.
       // forwarders {
       //      0.0.0.0;
       // };
       auth-nxdomain no;    # conform to RFC1035
       listen-on-v6 { any; };
};

// ルートサーバの情報の設定
zone "." { 
       type hint;
       file "named.ca";
}; 

// 次の2つのzoneステートメントはループバックアドレスの正引き、逆引き設定
zone "localhost" { 
       type master;
       file "local.zone";
}; 

zone "0.0.127.in-addr.arpa" { 
       type master;
       file "local.rev";
}; 

//次の2つのzoneステートメントはexmaple.comドメインの正引き、逆引き設定
zone "example.com" { 
       type master;
       file "example.zone";
}; 

zone "1.168.192.in-addr.arpa" { 
       type master;
       file "example.rev";
}; 

named.confは一つのファイルに書いてもよいし、次のように他のファイルをインクルードすることもできる。

include "/etc/bind/named.conf.local"; 

optionsの設定

optionsではBINDの動作についての設定を行う。

主な設定項目を次の表に示す。

設定項目 説明
version
directory

namedデーモンのワークディレクトリを指定する。

ここで指定したディレクトリにゾーンファイルを置いておけば、相対パスで指定することができる。

recursion

再帰的な問い合わせを有効とするかどうか。

キャッシュサーバとして利用する場合はyes、そうでないときにはnoを指定する。

pid-file

namedデーモンのPIDファイルを指定する。 OSにもよるが通常は "/var/run/named.pid"もしくは "/etc/named.pid"となる。


他の設定はBIND8の解説になるがBIND options Statement日本語版に詳しく説明されている。

named.caの準備

ルートサーバの情報は時々変更されるが、BIND9は起動時にルートサーバに接続し、このファイルの内容を自動的に最新の情報に置き換えるため、内容の変更は気にしなくてよい。

また、キャッシュサーバとしての機能を利用しないならこのファイルは不要。


ループバックアドレスの正引き、逆引きのゾーンファイル

localhost=>127.0.0.1、127.0.0.1=>localhostを引くための設定。 前述のnamed.confの例ではそれぞれlocal.zone 、local.revとして設定している。 どちらも一度設定すれば、変更することは無いであろう設定となる。

設定内容の説明は後述。

ループバックアドレスの正引き設定(local.zone)の例

; BIND data file for local loopback interface

$TTL	604800
@	IN	SOA	localhost. root.localhost. (
			      2		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
@	IN	NS	localhost.
@	IN	A	127.0.0.1
@	IN	AAAA	::1


ループバックアドレスの逆引き設定(local.rev)の例

; BIND reverse data file for local loopback interface

$TTL	604800
@	IN	SOA	localhost. root.localhost. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
@	IN	NS	localhost.
1.0.0	IN	PTR	localhost.

ゾーンの正引き、逆引き設定

ここからがDNSとしての設定の肝心な部分。名前解決したいドメインのホストを具体的に設定していく。

正引きファイルの例

$TTL	86400
@	IN	SOA	dns.sample.com. root.sample.com. (
		2009090701	; serial
		3600 		; refresh 1hr
		900		; retry 15min
		604800		; expire 1w
		86400		; min 24hr
)
	IN	NS	dns.sample.com.
     IN      MX  10  mail.sample.com.
dns	IN	A	192.168.1.100
www	IN	A	192.168.1.111
mail  IN      A       192.168.1.222

逆引きファイルの例

$TTL	86400
@	IN	SOA	dns.sample.com. root.sample.com. (
			2009090701	; serial
			3600 		; refresh 1hr
			900		; retry 15min
			604800		; expire 1w
			86400		; min 24hr
)
	IN	NS	dns.sample.com.
100	IN	PTR	dns.sample.com.
111	IN	PTR	www.sample.com.
222   IN      PTR     mail.sample.com.

レコードの種類

ゾーンファイルに定義するレコードの種類は次の通り

項目 説明
SOA ゾーンのオーソリティ情報を指定する。
NS ドメイン内のネームサーバを指定する
MX ドメイン内のメールサーバを指定する
A ホストに対するIPアドレスを指定する
CNAME
AAAA

SOAレコード

SOAレコードには管理者の情報やスレーブサーバとのやりとりに必要な情報=オーソリティ情報を設定する。

下の例で緑字の部分はドメイン管理者のメールアドレスを設定する。この際、@は . (ピリオド)に置き換える。続く括弧()の中がSOAレコードの本体。


@	IN	SOA	dns.sample.com. root.sample.com. (
		2009090701	; serial
		3600 		; refresh 1hr
		900		; retry 15min
		604800		; expire 1w
		86400		; min 24hr
)
個人用ツール