14.2. BIND
BIND (Berkeley Internet Name Domain) について説明します。ここでは、その設定ファイルの構造に焦点を置いて、ローカルとリモートの両方での管理方法を記述しています。
14.2.1. named サービスの設定
named サービスが始まると、表14.1「named サービスの設定ファイル」 説明してあるように、ファイルから設定を読み込みます。
表14.1 named サービスの設定ファイル
| パス | 詳細 |
|---|---|
/etc/named.conf | 主要設定ファイル |
/etc/named/ | 主要設定ファイル内に含まれている設定ファイル用の補助ディレクトリ |
named サービスは開始しません。標準的な /etc/named.conf ファイルは以下のような構成となります:
statement-1 ["statement-1-name"] [statement-1-class] {
option-1;
option-2;
option-N;
};
statement-2 ["statement-2-name"] [statement-2-class] {
option-1;
option-2;
option-N;
};
statement-N ["statement-N-name"] [statement-N-class] {
option-1;
option-2;
option-N;
};注記
/var/named/chroot 環境内で実行出来ます。その場合、初期化スクリプトが、mount --bind コマンドを使用して上記の設定ファイルをマウントするため、この環境外でも設定の管理ができるようになります。
14.2.1.1. 一般的なステートメントのタイプ
/etc/named.conf で使用されます:
-
acl acl(Access Control List) (アクセス制御リスト) ステートメントにより、ホストのグループを定義できるようになるため、それらのホストはネームサーバーへのアクセスを許可/拒否できるようになります。以下の形式を取ります:acl acl-name { match-element; ... };acl-name ステートメント名はアクセス制御リストの名前です。そして match-element オプションは通常、個別の IP アドレス (10.0.1.1など) または、CIDR (クラスレス ドメイン間ルーティング) ネットワーク表記 (例えば、10.0.1.0/24) です。定義済みキーワードの一覧については 表14.2「事前定義のアクセス制御一覧」 を参照してください。表14.2 事前定義のアクセス制御一覧
キーワード 詳細 anyすべての IP アドレスに一致 localhostローカルシステムで使用中のすべての IP アドレスに一致 localnetsローカルシステムが接続しているすべてのネットワーク上の IP アドレスに一致 noneいずれの IP アドレスにも一致しない aclステートメントはoptionsなどの他のステートメントとの併用で特に便利です。例14.2「options との併用で acl の使用」 はblack-hatsとred-hatsの2つのアクセス制御一覧を定義して、red-hatsに通常アクセスを許可する一方でblack-hatsをブラックリストに追加します。例14.2 options との併用で acl の使用
acl black-hats { 10.0.2.0/24; 192.168.0.0/24; 1234:5678::9abc/24; }; acl red-hats { 10.0.1.0/24; }; options { blackhole { black-hats; }; allow-query { red-hats; }; allow-query-cache { red-hats; }; };-
include includeステートメントにより、ファイルを/etc/named.conf内に含むことが出来るため、機密性のあるデータを制限付き権限で別のファイルに配置することができます。以下の形式を取りますinclude "file-name"
file-name ステートメント名はファイルへの絶対パスとなります。例14.3 /etc/named.conf へファイルをインクルードする
include "/etc/named.rfc1912.zones";
-
options optionsステートメントにより、グローバルサーバー設定オプションを定義できると共に他のステートメントのデフォルトをセットすることも出来ます。これはnamedの作業ディレクトリの場所、許可されるクエリのタイプ、及びその他多くを指定するのに使用されます。以下の形式を取ります:options { option; ... };頻繁に使用される option 指示文の一覧については、以下の 表14.3「一般的に使用されるオプション」 をご覧下さい。表14.3 一般的に使用されるオプション
オプション 詳細 allow-query権限のあるリソースレコード用のネームサーバーにクエリを許可されるホストを指定します。これはアクセス制御一覧、IP アドレスの集合、または CIDR 表記にあるネットワーク群などを受け付けます。デフォルトではすべてのホストが許可されています。 allow-query-cache回帰的クエリなど権限の必要ないデータ用のネームサーバーにクエリを許可されるホストを指定します。デフォルトでは、 localhostとlocalnetsのみが許可されています。blackholeネームサーバーにクエリを許可されないホストを指定します。このオプションは、特定のホストやネットワークがサーバーに要求を集中させる時には使用すべきではありません。デフォルトのオプションは noneです。directorynamedサービス用の作業ディレクトリを指定します。デフォルトのオプションは/var/named/です。dnssec-enableDNSSEC 関連のリソースレコードを返すかどうかを指定します。デフォルトのオプションは yesです。dnssec-validationDNSSEC を介してリソースが純正であることを証明するかどうかを指定します。デフォルトのオプションは yesです。forwarders解決の為に要求を転送すべき相手のネームサーバーの有効な IP アドレス一覧を指定します。 forwardforwarders指示文の動作を指定します。以下のオプションを受け付けます:first— サーバーは、それ自身で名前の解決を試行する前にforwarders指示文に一覧表示されているネームサーバーにクエリします。only—forwarders指示文に一覧表示されたネームサーバーにクエリすることが出来ない時は、サーバーはそれ自身での名前解決を試行しません。
listen-onクエリのリッスン先として IPv4 ネットワークインターフェイスを指定します。ゲートウェイとして機能する DNS サーバー上では、このオプションを使用することで単独ネットワークから由来するクエリのみに応答することができます。すべての IPv4 インターフェイスがデフォルトで使用されています。 listen-on-v6クエリのリッスン先として IPv6 ネットワークインターフェイスを指定します。ゲートウェイとして機能する DNS サーバー上では、このオプションを使用することで単独ネットワークから由来するクエリのみに応答することができます。すべての IPv6 インターフェイスがデフォルトで使用されています。 max-cache-sizeサーバー用キャッシュとして使用されるメモリーの最大容量を指定します。最大値に到達すると、その限度を超過しないようにサーバーは記録が早期期限切れになるようにします。複数表示を持つサーバーでは、この制限は各表示のキャッシュ毎に別々に適用されます。デフォルトのオプションは 32Mです。notifyあるゾーンが更新された時にセカンダリネームサーバーに通知するかどうかを指定します。以下のオプションを受け付けます:yes— サーバーはすべての セカンダリネームサーバーに通知します。no— サーバーはいずれの セカンダリネームサーバーにも通知しません。master-only— サーバーはゾーン用のプライマリサーバーにのみ通知します。explicit— サーバーは、ゾーンステートメント内のalso-notify一覧に指定してあるセカンダリサーバーにのみ通知します。
pid-filenamedサービスで作成されたプロセス ID ファイルの場所を指定します。recursion再帰的なサーバーとして動作するかどうかを指定します。デフォルトのオプションは yesです。statistics-file統計ファイルの代替の場所を指定します。デフォルトでは、 /var/named/named.statsファイルがデフォルトで使用されています。重要
配信されるサービス拒否 (DDoS) 攻撃を阻止するために、allow-query-cacheオプションを使用することで、クライアントの特定サブセット用にのみ再帰的な DNS サービスを制限することをお薦めします。利用可能なオプションの完全な一覧を見るには 「インストールされているドキュメント」 内で参照されている『BIND 9 Administrator Reference Manual』 及びnamed.confman ページを参照して下さい。例14.4 オプションステートメントの使用
options { allow-query { localhost; }; listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; max-cache-size 256M; directory "/var/named"; statistics-file "/var/named/data/named_stats.txt"; recursion yes; dnssec-enable yes; dnssec-validation yes; };-
zone zoneステートメントにより、その設定ファイルの場所やゾーン特有のオプションなどのゾーンの特性を定義できるようになり、グローバルoptionsステートメントを上書きするのに使用することができます。以下の形式を取ります:zone zone-name [zone-class] { option; ... };zone-name 属性はゾーンの名前であり、zone-class はゾーンのオプションクラスであり、そして option は 表14.4「一般的に使用されるオプション」 で説明してあるようにzoneステートメントのオプションです。zone-name 属性は特に重要です。それは、/var/named/ディレクトリに配置されている該当ゾーンファイル内で使用される$ORIGIN指示文に割り当てられたデフォルトの値だからです。namedデーモンはゾーンの名前を、ゾーンファイル内に一覧表示された非完全修飾型のドメイン名のいずれかに追記します。例えば、zoneステートメントがexample.com用にネームスペースを定義する場合、example.comを zone-name として使用すると、それをexample.comゾーンファイル内のホスト名の末尾に配置することができます。ゾーンファイルの詳細情報については、「ゾーンファイルの編集」 を参照して下さい。表14.4 一般的に使用されるオプション
オプション 詳細 allow-queryこのゾーンに関する情報要求が出来るクライアントを指定します。このオプションは、グローバル allow-queryオプションを上書きします。デフォルトではすべてのクエリ要求が許可されます。allow-transferゾーン情報の転送要求を許可されるセカンダリサーバーを指定します。デフォルトでは、すべての転送要求が許可されています。 allow-update自身のゾーン内で動的な情報更新を許可されるホストを指定します。デフォルトオプションでは、すべての動的更新要求は拒否されます。そのゾーンに関してホストの情報更新の許可には注意が必要です。サーバーが信頼できるネットワークにある場合意外は、このオプションで IP アドレスをセットしないで下さい。その代わりに、「Transaction SIGnatures トランザクション署名 (TSIG)」 で説明してあるように TSIG キーを使用します。fileゾーンの設定データを収納している named作業ディレクトリ内のファイル名を指定します。masters信頼できるゾーン情報の要求先の IP アドレスを指定します。このオプションは、ゾーンが typeslaveとして定義されている場合にのみ使用されます。notifyあるゾーンが更新された時にセカンダリネームサーバーに通知するかどうかを指定します。以下のオプションを受け付けます:yes— サーバーはすべての セカンダリネームサーバーに通知します。no— サーバーはいずれの セカンダリネームサーバーにも通知しません。master-only— サーバーはゾーン用のプライマリサーバーにのみ通知します。explicit— サーバーは、ゾーンステートメント内のalso-notify一覧に指定してあるセカンダリサーバーにのみ通知します。
typeゾーンのタイプを指定します。以下のオプションを受け付けます:delegation-only— COM、NET、ORG などのインフラストラクチャゾーンの委任ステータスを強制します。明示的あるいは暗示的な委任の無い受信回答はNXDOMAINとして取り扱われます。このオプションは、再帰的あるいはキャッシング実装で使用される TLD もしくは root のゾーンのファイルにのみ適用されます。forward— このゾーンに関する情報へのすべての要求を他のネームサーバーに転送します。hint— ゾーンが他の方法で認知されていない時にクエリを解決する root ネームサーバーへポイントするために使用される特殊タイプのゾーンです。master— このゾーン用の権威としてネームサーバーを指名します。ゾーンの設定ファイルがシステム上に存在する場合は、ゾーンはmasterとしてセットされる必要があります。slave— このゾーン用のスレーブとしてネームサーバーを指名します。マスターサーバーはmasters指示文内に指定されています。
プライマリまたはセカンダリのネームサーバーの/etc/named.confファイルに対するほとんどの変更には、zoneステートメントの追加、修正、または削除が含まれ、通常はzoneステートメントオプションの小さなサブセットのみが、ネームサーバーの良好な機能のために必要となります。例14.5「プライマリネームサーバー用のゾーンステートメント」 では、ゾーンはexample.comとして識別されており、タイプはmasterにセットされて、namedサービスは/var/named/example.com.zoneファイルを読み込むように指示されています。これはまた、ゾーンの転送にセカンダリネームサーバー (192.168.0.2) だけを許可します。例14.5 プライマリネームサーバー用のゾーンステートメント
zone "example.com" IN { type master; file "example.com.zone"; allow-transfer { 192.168.0.2; }; };セカンダリサーバーのzoneステートメントは少し異なります。タイプはslaveにセットされて、masters指示文はnamedにマスターサーバーの IP アドレスを伝えています。例14.6「セカンダリネームサーバー用のゾーンステートメント」 では、namedサービスは、192.168.0.1IP アドレスにあるプライマリサーバーに対してexample.comゾーンの情報についてクエリをするように設定されています。受信した情報はその後、/var/named/slaves/example.com.zoneファイルに保存されます。すべてのスレーブゾーンを/var/named/slavesディレクトリに配置することに注意して下さい。そうしないとサービスはゾーンの転送に失敗します。例14.6 セカンダリネームサーバー用のゾーンステートメント
zone "example.com" { type slave; file "slaves/example.com.zone"; masters { 192.168.0.1; }; };
14.2.1.2. その他のステートメントタイプ
/etc/named.conf 内では通常多くは使用されません:
-
controls controlsステートメントにより各種設定が可能になり、namedサービスを管理するためのrndcコマンドの使用に必要な様々なセキュリティ要件を設定できるようになります。rndcユーティリティとその使用法の詳細については、「rndc ユーティリティの使用」 を参照してください。-
key keyステートメントによって、特定のキーを名前で定義できるようになります。キーは、安全な更新や、あるいは、rndcコマンドの使用など各種動作を認証するために使用されます。2つのオプションがkeyと一緒に使用されます:algorithm アルゴリズム名— 使用されるアルゴリズムのタイプ (例えば、hmac-md5)。secret "キー値"— 暗号化キーです。
rndcユーティリティとその使用法の詳細については、「rndc ユーティリティの使用」 を参照してください。-
logging loggingステートメントにより、チャンネル (channels) と呼ばれる複数のログタイプを使用できるようになります。channelオプションをステートメント内で使用すると、それ自身のファイル名 (file)、サイズ制限 (size)、バージョン制御 (version)、及び重要度レベル (severity) などを持つカスタマイズしたログのタイプを構築することが出来ます。カスタムチャンネルが定義されると、categoryオプションの使用でチャンネルが分類化されて、namedサービスが再開始した時にロギングが始まります。デフォルトでは、namedは標準メッセージをrsyslogデーモンに送信して、受信したデーモンはメッセージを/var/log/messagesに配置します。数種類の標準チャンネルが各種重要度レベルで BIND に組み込まれています。それらの重要度レベルとして、default_syslog(情報ロギングメッセージを処理) とdefault_debug(特にデバッギングメッセージを処理) などがあります。defaultと呼ばれるデフォルトカテゴリは組み込み型チャンネルを使用して特別な設定無しで普通のロギングを行います。ロギングプロセスのカスタマイズは入り込んだプロセスとなるため、この章の範囲外になります。カスタム BIND ログ作成の詳細については、「インストールされているドキュメント」 で参照してある 『BIND 9 Administrator Reference Manual (BIND 9 管理者リファレンスマニュアル)』 をご覧下さい。-
server serverステートメントにより、namedサービスがリモートのネームサーバーに対しての反応の仕方に影響する、特に通知とゾーン転送に関して影響するオプションを指定できるようになります。transfer-formatオプションは、各メッセージと共に送信されるリソースレコードの数量を制御します。これは、one-answer(1つのリソースレコードのみ)、かまたはmany-answers(複数のリソースレコード) のいずれかになります。many-answersオプションがより効率的ですが、BIND の旧バージョンではサポートされていないことに注意して下さい。-
trusted-keys trusted-keysステートメントにより、安全な DNS (DNSSEC) 用に使用される各種パブリックキーを指定できるようになります。このトピックの詳細については、「DNSSEC (DNS Security Extensions)」 を参照して下さい。-
view viewステートメントにより、ネームサーバーをクエリしているホストが存在するネットワークに応じて特別な表示を作成できるようになります。これによって、一部のホストはゾーンに関して1つの応答を受信することが出来て、他のホストは全く異なる情報を受信することが出来るようになります。別の観点から、一定のゾーンは特定の信頼されるホストにだけ利用可能であり、信頼できないホストは他のゾーンのクエリしかできない可能性もあります。複数表示はその名前が特有である限り使用できます。match-clientsオプションにより、特定の表示に適用する IP アドレスを指定できるようになります。optionsステートメントが 1つの表示内で使用された場合は、既に設定済みのグローバルオプションを上書きします。最後に、ほとんどのviewステートメントは、match-clients一覧に適用される複数のzoneステートメントを含んでいます。viewステートメント群が一覧表示されている順序が重要になることに注意して下さい。特定クライアントの IP アドレスにマッチする最初のステートメントが使用されます。このトピックの詳細については、「複数表示」 を参照して下さい。
14.2.1.3. コメントタグ
/etc/named.conf ファイルはコメントも含んでいます。コメントは named サービスには無視されますが、ユーザーに追加情報を提供する時に役に立ちます。以下に有効なコメントタグを示します:
////文字の後のテキストはいずれもその行末までコメントと考慮されます。例えば:notify yes; // すべてのセカンダリネームサーバーに通知します
##文字の後のテキストはいずれもその行末までコメントと考慮されます。例えば:notify yes; # すべてのセカンダリネームサーバーに通知します
/*と*//*と*/によって囲まれたテキストのブロックはコメントと考慮されます。例えば:notify yes; /* すべてのセカンダリネームサーバーに通知します */

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.