最終更新日 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つの動作(働き)があります。一つは、自分自身のドメインの問い合わせに応じます。 もう一つは、クライアントが名前解決として利用します。前者を「ゾーンサーバ」、後者を「キャッシュサーバ」と呼びます。 また、「ゾーンサーバ」は、「マスターサーバ」と「スレーブサーバ」があります。
「マスターサーバ」は、オリジナルのゾーン情報を保持し、スレーブサーバはマスターサーバのゾーン情報をコピーしてバックアップサーバとしての働きをします。
bindのパッケージ
バイナリ(RPM)版は、各ディストリビューションのホームページ又はCDROMから入手可能です。bind9関連パッケージ(Fedora Core3)
| パッケージ | 内容 |
| bind-x.x.x-x.i386.rpm | bind本体のパッケージ |
| bind-libs-x.x.x-x.i386.rpm | bindのパッケージに関するライブラリ群 |
| caching-nameserver-x.x-x.noarch.rpm | キャッシングサーバのパッケージ |
| bind-chroot-x.x.x-x.i386.rpm | bindをchroot環境で動かす為のパッケージ |
| bind-utils-x.x.x-x.i386.rpm | クライアント用のプログラム(digやhostなどのコマンド) |
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 |
bindの起動確認・制御パラメータ
namedの起動(RPM)
RPMからインストールした場合はbindの起動・停止・再起動などの操作は、「service named 引数」という形で行います。または、「/etc/rc.d/init.d/named 引数」と実行をします。
起動 # /service named start 停止 # /service named stop 再起動 # /service named restart |
bind制御のパラメータ
| パラメータ | 動作 |
| start | bindの起動 |
| stop | bindの停止 |
| restart | bindの再起動 |
| reload | bindの設定ファイルの再読み込み |
| graceful | 現在のリクエストを処理した後に停止 |
| condrestart | bindのプロセスが動作していれば再起動 |
| status | bindの状態を表示(簡易) |
| fulstatus | bindの状態を表示(すべて) |
| configtest | bindの設定ファイルの文法チェック |
| help | bindのコマンドライン引数の表示 |
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";
};
|
- optionsステートメント ----> ゾーンファイルがあるディレクトリを絶対パスで記述。ダンプファイル名などを記述。
- controlsステートメント ----> 制御ツールのrndcとの通信ができるIPアドレスと、通信の際に用いるキーを記述。
- includeステートメント ----> rndc用のキーは外部ファイルとしてあるので、そのファイルを読み込むよう記述。
- zoneステートメント ----> ルートサーバが記述されているファイル指定。
- zoneステートメント ----> ループバックアドレスの正引きゾーンファイルを記述。
- zoneステートメント ----> ループバックアドレスの正引きゾーンファイルを記述。
- zoneステートメント ----> ループバックアドレスの逆引きゾーンファイルを記述。
- zoneステートメント ----> ループバックアドレスの逆引きゾーンファイルを記述。
- zoneステートメント ----> 0.0.0.0に対する間違った逆引きに対応するためのファイルを記述。
- zoneステートメント ----> 255.255.255.255に対する間違った逆引きに対応するためのファイルを記述。
- zoneステートメント ----> 独自ドメインの正引きゾーンファイルを記述。
- zoneステートメント ----> 独自ドメインの逆引きゾーンファイルを記述。
| 各ファイル | 内容 |
| named.conf | bindの設定ファイル |
| rndc.conf | named制御プログラムrndcの設定ファイル |
| rndc.key | rndc用の鍵が記述されているファイル |
bindの設定ファイル(書式)
設定ファイルである「named.conf」は、各ステートメントを利用して記述します。ステートメントには、aclステートメントや zoneステートメント・optionsステートメントなどが存在します。
また、設定ファイルでのコメントは、"/*"と"*/"で囲むC言語の方法と、"//"から行末までのJAVA言語の方法、又は "#"から行末までのシェルスクリプトの方法が利用できます。
optionsステートメント
namedの動作に関する基本的な設定を行うためのステートメントです。サブステートメントとして、「directory」「dump-file」「statistics-file」があります。
| サブステートメント | 内容 |
| directory | ゾーンファイルがあるディレクトリを指定 |
| dump-file | namedがキャッシュいるデータのdump先ファイルを指定 |
| statistics-file | statsで統計情報を出力するファイル名を記述 |
| サブステートメント | 内容 |
| inet | namedが動作しているサーバのIPアドレスを記述 |
| allow | 接続を許可するIPアドレスを記述 |
| keys | rndcの鍵の名前を記述 |
| サブステートメント | 内容 |
| type | ゾーンの種類を記述(ルートサーバは「hint」、マスターサーバは「master」、スレーブサーバは「slave」) |
| file | ゾーンデータファイルを指定 |
| allow-update | 動的更新を許可するIPアドレスを記述 |
bindには、bindの設定ファイルである「named.conf」の書式をチェックするコマンドが付属しています。
「named-checkconf」コマンドです。書式は、「named-checkconf <設定ファイル>」になります。
書式的なエラーがなければ、"OK"と表示され、エラーがある場合はエラー個所が表示されます。
ステートメント一覧
設定ファイル「named.conf」には、複数のステートメントが用意されており、様々な設定が可能です。| ステートメント | 内容 |
| acl | IPアドレスを指定してアクセス制御を行う |
| controls | rndcユーティリティとの通信制御 |
| include | 他のファイルを読み込む |
| key | 認証に利用される鍵情報の設定 |
| options | オプションの設定 |
| server | リモートネームサーバ用のオプション |
| trusted-key | DNSSECのための鍵の定義 |
| zone | ゾーン情報の定義 |
| view | 特定のクライアントごとに応答を変える場合に使用(インターネット向けとLAN向け) |
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.zero | 0.0.0.0に対する間違った逆引きに対応するためのファイル |
| named.broadcast | 255.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 |
- $TTL(Time To Live)の値を秒数で指定
- SOAレコードの記述。ゾーン名・ネームサーバのホスト名・管理者メールアドレス
- ゾーンファイルのシリアル番号を記述。日付+番号
- スレーブサーバが、ゾーンファイルの更新を確認する間隔を記述
- スレーブサーバが、ゾーンファイルの更新に失敗した場合のリトライ間隔を記述
- スレーブサーバが保持しているゾーンファイルの有効期限を記述
- ネガティブキャッシュの有効期間を記述
- 空白
- NSレコード。ゾーンファイルを管理するプライマリDNSサーバを記述
- NSレコード。ゾーンファイルを管理するセカンダリDNSサーバを記述
- MXレコード。メールサーバを記述
- 空白
- Aレコード。正引きを指定(dns1.sample.co.jp→xxx.xxx.xxx.xxx)
- Aレコード。正引きを指定(www.sample.co.jp→xxx.xxx.xxx.xxx)
- Aレコード。正引きを指定(mail.sample.co.jp→xxx.xxx.xxx.xxx)
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. |
- $TTL(Time To Live)の値を秒数で指定
- SOAレコードの記述。ゾーン名・ネームサーバのホスト名・管理者メールアドレス
- ゾーンファイルのシリアル番号を記述。日付+番号
- スレーブサーバが、ゾーンファイルの更新を確認する間隔を記述
- スレーブサーバが、ゾーンファイルの更新に失敗した場合のリトライ間隔を記述
- スレーブサーバが保持しているゾーンファイルの有効期限を記述
- ネガティブキャッシュの有効期間を記述
- 空白
- NSレコード。ゾーンファイルを管理するプライマリDNSサーバを記述
- NSレコード。ゾーンファイルを管理するセカンダリDNSサーバを記述
- 空白
- PTRレコード。逆引きを指定(xxx.xxx.xxx.xxx→dns1.sample.co.jp)
- PTRレコード。逆引きを指定(xxx.xxx.xxx.xxx→www.sample.co.jp)
- PTRレコード。逆引きを指定(xxx.xxx.xxx.xxx→mail.sample.co.jp)
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"と表示され、エラーがある場合はエラー個所が表示されます。
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