• Top
  • What's New
  • Command
  • Basic
  • Server
  • Security
  • Conf
  • tools
  • etc
  • blog
  • Link
  • サイトについて
  • Mail
INDEX /  Apache /  ProFTPD /  vsftpd /  BIND /  Postfix /  Qpopper /  Samba /  PHP / 
最終更新日 2005/07/23  

BIND

bindとは
bindのパッケージ
bindのインストール
bindの起動・制御パラメータ
bindの設定ファイル
bindの設定ファイル(書式)
ステートメント一覧
bindのゾーンファイル
bindのゾーンファイル(書式)
bindのゾーンファイル(サンプル)

bindとは

bindはカリフォルニア大学バークリー校で開発された、有名なDNSサーバソフトウェアです。
DNSは、IPアドレスとドメイン名の相互変換を行い、インターネットを支えている重要なシステムです。
IPアドレスとドメイン名の相互変換を「名前解決」といいます。
IPアドレスの表記方法は、10進数で「xxx.xxx.xxx.xxx」(xには数字が入る)になり、人間には覚えづらいものです。 一方、ドメイン名は「mukuan.org」など人間にとって理解しやすい表記となります。 そこで、この2つを変換する仕組み(DNS)が開発されました。 DNSには2つの動作(働き)があります。一つは、自分自身のドメインの問い合わせに応じます。 もう一つは、クライアントが名前解決として利用します。前者を「ゾーンサーバ」、後者を「キャッシュサーバ」と呼びます。 また、「ゾーンサーバ」は、「マスターサーバ」と「スレーブサーバ」があります。
「マスターサーバ」は、オリジナルのゾーン情報を保持し、スレーブサーバはマスターサーバのゾーン情報をコピーしてバックアップサーバとしての働きをします。
ページトップへTop

bindのパッケージ

バイナリ(RPM)版は、各ディストリビューションのホームページ又はCDROMから入手可能です。

bind9関連パッケージ(Fedora Core3)
パッケージ 内容
bind-x.x.x-x.i386.rpmbind本体のパッケージ
bind-libs-x.x.x-x.i386.rpmbindのパッケージに関するライブラリ群
caching-nameserver-x.x-x.noarch.rpmキャッシングサーバのパッケージ
bind-chroot-x.x.x-x.i386.rpmbindをchroot環境で動かす為のパッケージ
bind-utils-x.x.x-x.i386.rpmクライアント用のプログラム(digやhostなどのコマンド)

ページトップへTop

bindのインストール

「bind-lib」と「bind-util」のパッケージは導入されていますからインストールの必要はありません。(導入されてなければインストールします。)

# rpm -ivh bind-9.2.4-2.i386.rpm
# rpm -ivh caching-nameserver-7.3-3.noarch.rpm
# rpm -ivh bind-chroot-9.2.4-2.i386.rpm

ページトップへTop

bindの起動確認・制御パラメータ

namedの起動(RPM)

RPMからインストールした場合はbindの起動・停止・再起動などの操作は、「service named 引数」という形で行います。
または、「/etc/rc.d/init.d/named 引数」と実行をします。
起動  # /service named start
停止  # /service named stop
再起動 # /service named restart


bind制御のパラメータ
パラメータ 動作
startbindの起動
stopbindの停止
restartbindの再起動
reloadbindの設定ファイルの再読み込み
graceful現在のリクエストを処理した後に停止
condrestartbindのプロセスが動作していれば再起動
statusbindの状態を表示(簡易)
fulstatusbindの状態を表示(すべて)
configtestbindの設定ファイルの文法チェック
helpbindのコマンドライン引数の表示

ページトップへTop

bindの設定ファイル

bindの設定ファイルは、「/etc/named.conf」になります。named.confは初期設定ファイルと呼ばれます。
rndcの設定ファイルは「/etc/named.conf」、鍵ファイルは「/etc/named.conf」になります。
設定ファイルの内容は、ゾーンファイルを保存しているディレクトリの指定や、ゾーンファイル名の指定、アクセス制御などの設定です。
用意されているステートメント(zoneステートメントやoptionsステートメント)を使って設定を記述していきます。
また、ゾーンファイルは、「/var/named/」ディレクトリ下に設置します。(変更可能)
chroot用のパッケージをインストールした場合は、設定ファイルやzoneファイルの場所が変わります。
bindの設定ファイルは、「/var/named/chroot/etc/named.conf」に変更されます。
ゾーンファイルは、「/var/named/chroot/var/named/」ディレクトリ下に設置されます。
chrootを利用した場合、chrootなしの環境での設定ファイルは、chroot設定後のファイルのシンボリックリンクとして設定されますので 、編集する際はchrootを気にしないで設定することができます。

設定ファイルのサンプル「named.conf」
 options {								<--------------A
	directory "/var/named";
 	dump-file "/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt"; 
 };

 controls {								<--------------B
	inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey; }; 
 };

: include "/etc/rndc.key";							<--------------C


 zone "." {								<--------------D
	type hint:
	file "named.ca":
 };	

 zone "localdomain" IN {							<--------------E
       type master;
        file "localdomain.zone";
        allow-update { none; };
	};

 zone "localhost" IN {							<--------------F
        type master;
       file "localhost.zone";
        allow-update { none; };
 };

 zone "0.0.127.in-addr.arpa" IN {						<--------------G
        type master;
      file "named.local";
        allow-update { none; };
 };

 zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {<--------------H
        type master;
       file "named.ip6.local";
        allow-update { none; };
 };

 zone "255.in-addr.arpa" IN {						<--------------I
        type master;
        file "named.broadcast";
        allow-update { none; };
 };

 zone "0.in-addr.arpa" IN {							<--------------J
        type master;
        file "named.zero";
       allow-update { none; };
 };

 zone "sample.co.jp" {							<--------------K
	type master;
	file "sample.co.jp.zone";
 };

 zone "x.xxx.xxx.in-addr.arpa" in {						<--------------L
	type master;
	file "x.xxx.xxx.in-addr.arpa.rev";
 };

  1. optionsステートメント ----> ゾーンファイルがあるディレクトリを絶対パスで記述。ダンプファイル名などを記述。
  2. controlsステートメント ----> 制御ツールのrndcとの通信ができるIPアドレスと、通信の際に用いるキーを記述。
  3. includeステートメント ----> rndc用のキーは外部ファイルとしてあるので、そのファイルを読み込むよう記述。
  4. zoneステートメント ----> ルートサーバが記述されているファイル指定。
  5. zoneステートメント ----> ループバックアドレスの正引きゾーンファイルを記述。
  6. zoneステートメント ----> ループバックアドレスの正引きゾーンファイルを記述。
  7. zoneステートメント ----> ループバックアドレスの逆引きゾーンファイルを記述。
  8. zoneステートメント ----> ループバックアドレスの逆引きゾーンファイルを記述。
  9. zoneステートメント ----> 0.0.0.0に対する間違った逆引きに対応するためのファイルを記述。
  10. zoneステートメント ----> 255.255.255.255に対する間違った逆引きに対応するためのファイルを記述。
  11. zoneステートメント ----> 独自ドメインの正引きゾーンファイルを記述。
  12. zoneステートメント ----> 独自ドメインの逆引きゾーンファイルを記述。
bindの設定ファイル
各ファイル 内容
named.confbindの設定ファイル
rndc.confnamed制御プログラムrndcの設定ファイル
rndc.keyrndc用の鍵が記述されているファイル

ページトップへTop

bindの設定ファイル(書式)

設定ファイルである「named.conf」は、各ステートメントを利用して記述します。
ステートメントには、aclステートメントや zoneステートメント・optionsステートメントなどが存在します。
また、設定ファイルでのコメントは、"/*"と"*/"で囲むC言語の方法と、"//"から行末までのJAVA言語の方法、又は "#"から行末までのシェルスクリプトの方法が利用できます。

optionsステートメント

namedの動作に関する基本的な設定を行うためのステートメントです。
サブステートメントとして、「directory」「dump-file」「statistics-file」があります。

サブステートメント 内容
directoryゾーンファイルがあるディレクトリを指定
dump-filenamedがキャッシュいるデータのdump先ファイルを指定
statistics-filestatsで統計情報を出力するファイル名を記述


controlsステートメント

rndc(bindの制御用プログラム)の設定を行うステートメントです。
サブステートメントとして、「inet」「allow」「keys」があります。

サブステートメント 内容
inetnamedが動作しているサーバのIPアドレスを記述
allow接続を許可するIPアドレスを記述
keysrndcの鍵の名前を記述


includeステートメント

外部のファイルを読み込み、設定ファイルの一部とする場合に記述します。
rndcで使用するファイルは、セキュリティ対策として別ファイルに保存されていますので、この設定が必要です。

zoneステートメント

ゾーンデータベースの種類とゾーンデータベースのファイル名を記述するステートメントです。
サブステートメントとして、「type」「file」「allow-update」等があります。

サブステートメント 内容
typeゾーンの種類を記述(ルートサーバは「hint」、マスターサーバは「master」、スレーブサーバは「slave」)
fileゾーンデータファイルを指定
allow-update動的更新を許可するIPアドレスを記述

bindには、bindの設定ファイルである「named.conf」の書式をチェックするコマンドが付属しています。
「named-checkconf」コマンドです。書式は、「named-checkconf <設定ファイル>」になります。
書式的なエラーがなければ、"OK"と表示され、エラーがある場合はエラー個所が表示されます。
ページトップへTop

ステートメント一覧

設定ファイル「named.conf」には、複数のステートメントが用意されており、様々な設定が可能です。

ステートメント 内容
acl IPアドレスを指定してアクセス制御を行う
controlsrndcユーティリティとの通信制御
include他のファイルを読み込む
key認証に利用される鍵情報の設定
optionsオプションの設定
serverリモートネームサーバ用のオプション
trusted-keyDNSSECのための鍵の定義
zoneゾーン情報の定義
view特定のクライアントごとに応答を変える場合に使用(インターネット向けとLAN向け)

ページトップへTop

bindの各zoneファイル

bindが使用するZONEファイルは、一般的に「/var/named」ディレクトリ配下に置かれます。
「named.ca」ファイルは、初めての名前解決の時にルートサーバへ尋ねに行くかたちになりますので、ルートサーバの IPアドレスが記述されているファイルになります。また、ごくまれにルートサーバのIPアドレスが変更される場合がありますので、その場合はインターネットより入手します。ファイル名は「named.root」です。googleなどで検索してみてください。
「localdomain.zone」と「localhost.zone」ファイルは、ループバックアドレスの正引きファイルです。
「named.local」と「named.ip6.local」ファイルは、ループバックアドレスの正引きファイルです。
上記のファイルは最初から用意されています。自分で編集する必要はありません。
自分で作成する必要があるファイルは、自ドメインの正引き用と逆引き用のファイル2つです。

各ファイル 内容
named.caルートサーバが記述されているファイル(WEBページよりダウンロード可能)
localdomain.zoneループバックアドレスの正引きファイル
localhost.zoneループバックアドレスの正引きファイル
named.localループバックアドレスの逆引きファイル
named.ip6.localループバックアドレスの逆引きファイル(IPv6用)
named.zero0.0.0.0に対する間違った逆引きに対応するためのファイル
named.broadcast255.255.255.255に対する間違った逆引きに対応するためのファイル
sample.org.zone自ドメインの正引き用ファイル
xxx.xxx.xxx.rev自ドメインの逆引き用ファイル


自分で一から作成するファイルは、自ドメインの正引き用ファイル(sample.org.zone)と逆引き用ファイル(xxx.xxx.xxx.rev)の2つです。

正引き用ファイル例(sample.org.zone)
 1:$TTL 86400
 2: @	IN	SOA	dns1.sample.co.jp.	root.sample.co.jp.  (
 3:		2004112701	; Serial
 4:		10800		; Refresh
 5:		3600		; Retry
 6:		604800		; Expire
 7:		86400	)	; Minimum
 8:
 9:	IN	NS	dns1.sample.co.jp.
10:	IN	NS	dns2.sample.co.jp.
11:	IN	MX 10	mail.sample.co.jp.
12:
13: dns1	IN	A	xxx.xxx.xxx.xxx
14: www	IN	A	xxx.xxx.xxx.xxx
15: mail	IN	A	xxx.xxx.xxx.xxx

  1. $TTL(Time To Live)の値を秒数で指定
  2. SOAレコードの記述。ゾーン名・ネームサーバのホスト名・管理者メールアドレス
  3. ゾーンファイルのシリアル番号を記述。日付+番号
  4. スレーブサーバが、ゾーンファイルの更新を確認する間隔を記述
  5. スレーブサーバが、ゾーンファイルの更新に失敗した場合のリトライ間隔を記述
  6. スレーブサーバが保持しているゾーンファイルの有効期限を記述
  7. ネガティブキャッシュの有効期間を記述
  8. 空白
  9. NSレコード。ゾーンファイルを管理するプライマリDNSサーバを記述
  10. NSレコード。ゾーンファイルを管理するセカンダリDNSサーバを記述
  11. MXレコード。メールサーバを記述
  12. 空白
  13. Aレコード。正引きを指定(dns1.sample.co.jp→xxx.xxx.xxx.xxx)
  14. Aレコード。正引きを指定(www.sample.co.jp→xxx.xxx.xxx.xxx)
  15. Aレコード。正引きを指定(mail.sample.co.jp→xxx.xxx.xxx.xxx)
逆引き用ファイル例(xxx.xxx.xxx.rev)
 1: $TTL 86400
 2: @	IN	SOA	dns1.sample.co.jp. root.sample.co.jp. (
 3:		2004112701	; Serial
 4:		10800		; Refresh
 5:		3600		; Retry
 6:		604800		; Expire
 7:		86400	)	; Minimum
 8:
 9:	IN	NS	dns1.sample.co.jp.
10:	IN	NS	dns2.sample.co.jp.
11:
12: xxx	IN	PTR	dns1.sample.co.jp.
13: xxx	IN	PTR	www.sample.co.jp.
14: xxx	IN	PTR	mail.sample.co.jp.

  1. $TTL(Time To Live)の値を秒数で指定
  2. SOAレコードの記述。ゾーン名・ネームサーバのホスト名・管理者メールアドレス
  3. ゾーンファイルのシリアル番号を記述。日付+番号
  4. スレーブサーバが、ゾーンファイルの更新を確認する間隔を記述
  5. スレーブサーバが、ゾーンファイルの更新に失敗した場合のリトライ間隔を記述
  6. スレーブサーバが保持しているゾーンファイルの有効期限を記述
  7. ネガティブキャッシュの有効期間を記述
  8. 空白
  9. NSレコード。ゾーンファイルを管理するプライマリDNSサーバを記述
  10. NSレコード。ゾーンファイルを管理するセカンダリDNSサーバを記述
  11. 空白
  12. PTRレコード。逆引きを指定(xxx.xxx.xxx.xxx→dns1.sample.co.jp)
  13. PTRレコード。逆引きを指定(xxx.xxx.xxx.xxx→www.sample.co.jp)
  14. PTRレコード。逆引きを指定(xxx.xxx.xxx.xxx→mail.sample.co.jp)
ページトップへTop

bindのzoneファイル(書式)

ZONEファイルは、「ディレクティブ」と「レコード」を用いて記述していきます。
ディレクティブには、$TTLや$ORIGIN等があり、レコードには、NSレコードやAレコード等があります。
また、;(セミコロン)より後はコメントとして解釈されます。

ディレクティブ

zoneファイルの全体的な設定を記述するのが「$」で始まるディレクティブです。
zoneリソースのキャッシュを記述する「$TTL」や、起点名を設定する「$ORIGIN」などがあります。

主なディレクティブ
各ファイル 内容
$TTLゾーンリソースの有効期限を設定(Time To Live)
$ORIGINドットで終わっていない名前に付加する起点名(ドメイン名)
$INCLUDE別のゾーンファイルをインクルードする


SOAレコード

ゾーンデータベースが権威を持つ、ゾーンに対する権威付けの開始を宣言するレコードです。
ゾーン名やマスターサーバのホスト名、管理者のメールアドレスとキャッシュの時間などを記述します。

SOAレコード
各ファイル 内容
Serialシリアルナンバー(通常は日付と更新回数を入力)
Refreshリフレッシュ間隔(セカンダリサーバがリフレッシュ間隔の時間でマスタサーバに問い合わせを行う)
Retryリトライ間隔(セカンダリサーバがリフレッシュ間隔でコピーができない場合にリトライ間隔で問い合わせを行う)
Expire情報破棄時間(ゾーンデータベースを破棄する上限の時間)
Minimum情報有効期限(ゾーンにおける最小のTTL時間)


各レコード(NS,MX,A,PTRなど)

DNSサーバを指定するNSレコード、メールサーバ指定のMXレコード、正引きAレコード、逆引きPTRレコードなどがあります。
各レコード
各ファイル 内容
NSネームサーバを指定
MXメールサーバを指定(MXの後にスペースを空けて優先度を数値で記述する必要がある)
A正引き用のレコード
PTR逆引き用のレコード
CNAME別名を指定する場合のレコード

bindには、bindの各ゾーンファイルの書式をチェックするコマンドが付属しています。
「named-checkzone」コマンドです。書式は、「named-checkconf <ゾーン名> <ゾーンファイル>」になります。
書式的なエラーがなければ、"OK"と表示され、エラーがある場合はエラー個所が表示されます。
ページトップへTop

zoneファイルのサンプル

named.caファイル;ルートサーバの一覧

;
;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;
;                      〜中略〜

;       last update:    Aug 22, 1997
;       related version of root zone:   1997082200
;
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
;
;            〜中略〜
;
; temporarily housed at ISI (IANA)
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
;
;; housed in Japan, operated by WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
; End of File

localhost.zoneファイル:ループバックアドレスの正引きファイル

$TTL	86400
$ORIGIN localhost.
@			1D IN SOA	@ root (
					42		; serial (d. adams)
					3H		; refresh
					15M		; retry
					1W		; expiry
					1D )		; minimum

			1D IN NS	@
			1D IN A		127.0.0.1

named.localファイル:ループバックアドレスの逆引きファイル

$TTL 86400
@	IN	SOA	localhost.  root.localhost.  (
		2004111801	; Serial
		28800		; Refresh
		14400		; Retry
		3600000		; Expire
		86400 )		; Minimum
	IN	NS	localhost.
1	IN	PTR	localhost.

sample.co.jp.zoneファイル:自ドメインの正引きファイル

$TTL 86400
@	IN	SOA	dns1.sample.co.jp.	root.sample.co.jp.  (
		2004112701	; Serial
		10800		; Refresh
		3600		; Retry
		604800		; Expire
		86400	)	; Minimum

	IN	NS	dns1.sample.co.jp.
	IN	NS	dns2.sample.co.jp.
	IN	MX 10	mail.sample.co.jp.
$ORIGIN sample.co.jp.
dns1	IN	A	xxx.xxx.xxx.xxx
www	IN	A	xxx.xxx.xxx.xxx
mail	IN	A	xxx.xxx.xxx.xxx

x.xxx.xxx.revファイル:自ドメインの逆引きファイル

$TTL 86400
@	IN	SOA	dns1.sample.co.jp. root.sample.co.jp. (
		2004112701	; Serial
		10800		; Refresh
		3600		; Retry
		604800		; Expire
		86400	)	; Minimum
	IN	NS	dns1.sample.co.jp.
	IN	NS	dns2.sample.co.jp.

xxx	IN	PTR	dns1.sample.co.jp.
xxx	IN	PTR	www.sample.co.jp.
xxx	IN	PTR	mail.sample.co.jp.

ページトップへTop

 
Copyright (c) 2005 Mukuan All Rights Reserved.