Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

15.2.2.2. 一般的なステートメントのタイプ

/etc/named.conf では、通常、以下のタイプのステートメントが使用されます。
acl
acl (Access Control List) (アクセス制御リスト) ステートメントにより、ホストのグループを定義できるようになるため、それらのホストはネームサーバーへのアクセスを許可/拒否できるようになります。以下の形式を取ります。
acl acl-name {
  match-element;
  ...
};
acl-name ステートメント名はアクセス制御リストの名前です。match-element オプションは、通常 IP アドレスです (10.0.1.1) または Classless Inter-Domain Routing (CIDR) ネットワークノーテーション (例: 10.0.1.0/24)。定義済みのキーワードの一覧は、表15.2「事前定義のアクセス制御リスト」を参照してください。

表15.2 事前定義のアクセス制御リスト

キーワード 説明
any すべての IP アドレスにマッチします。
localhost ローカルシステムが使用する IP アドレスにマッチします。
localnets ローカルシステムが接続しているネットワーク上の IP アドレスにマッチします。
none どの IP アドレスにもマッチしません。
acl ステートメントは、特に オプション などの他のステートメントと併用できます。例15.2「options と併用して acl を使用する」では、black-hatsred-hats の 2 つのアクセス制御リストを定義し、red-hats に通常アクセスを許可する一方で black-hats をブラックリストに追加します。

例15.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 ステートメント名はファイルへの絶対パスとなります。

例15.3 ファイルを /etc/named.conf に含める

include "/etc/named.rfc1912.zones";
options
options ステートメントでは、グローバルサーバー設定オプションや他のステートメントのデフォルトを設定できます。名前付き の作業ディレクトリーの場所、許可されたクエリーのタイプなどを指定できます。以下の形式を取ります。
options {
  option;
  ...
};
よく使用される option ディレクティブの一覧は、表15.3「一般的な設定オプション」を参照してください。

表15.3 一般的な設定オプション

オプション 説明
allow-query 権限のあるリソースレコード用のネームサーバーにクエリーを許可されるホストを指定します。これはアクセス制御リスト、IP アドレスの集合、または CIDR 表記にあるネットワーク群などを受け付けます。デフォルトではすべてのホストが許可されています。
allow-query-cache 再帰クエリーなど権限の必要ないデータ用のネームサーバーにクエリーを許可されるホストを指定します。デフォルトでは、localhostlocalnets のみが許可されています。
blackhole ネームサーバーへのクエリーを許可されないホストを指定します。このオプションは、特定のホストやネットワークがサーバーに要求を集中させる時には使用すべきではありません。デフォルトのオプションは none です。
directory named サービス用の作業ディレクトリーを指定します。デフォルトのオプションは /var/named/ です。
disable-empty-zone 使用されるデフォルトの接頭辞リストから空白ゾーンを無効にするために使用します。options ステートメントおよび view ステートメントで指定することができます。複数回の使用が可能です。
dnssec-enable DNSSEC 関連のリソースレコードを返すかどうかを指定します。デフォルトのオプションは yes です。
dnssec-validation リソースレコードが DNSSEC を通じて本物であることを証明するかどうかを指定します。デフォルトのオプションは yes です。
empty-zones-enable 空白ゾーンを作成するかどうかを制御します。options ステートメントでのみ指定可能です。
forwarders 解決のためにリクエストの転送先となるネームサーバーの有効な IP アドレス一覧を指定します。
forward
forwarders ディレクティブの動作を指定します。以下のオプションを取ります。
  • first: サーバーは、独自の名前の解決を試行する前に、forwarders ディレクティブに一覧表示されるネームサーバーをクエリーします。
  • only: forwarders ディレクティブに一覧表示されるネームサーバーをクエリーできない場合、サーバーは独自の名前の解決を試行しません。
listen-on クエリーをリッスンする IPv4 ネットワークインターフェースを指定します。ゲートウェイとしても機能する DNS サーバー上では、このオプションを使用して単一ネットワークから発信するクエリーにのみ応答することができます。デフォルトで、すべての IPv4 インターフェースが使用されます。
listen-on-v6 クエリーをリッスンする IPv6 ネットワークインターフェースを指定します。ゲートウェイとしても機能する DNS サーバー上では、このオプションを使用して単一ネットワークから発信するクエリーにのみ応答することができます。デフォルトで、すべての IPv6 インターフェースが使用されます。
max-cache-size サーバー用キャッシュとして使用されるメモリーの最大容量を指定します。最大値に到達すると、その限度を超過しないようにサーバーは記録が早期期限切れになるようにします。複数表示を持つサーバーでは、この制限は各表示のキャッシュ毎に別々に適用されます。デフォルトのオプションは 32M です。
notify
あるゾーンが更新された時にセカンダリーネームサーバーに通知するかどうかを指定します。以下のオプションを取ります。
  • yes: サーバーはすべての セカンダリーネームサーバーに通知します。
  • no: サーバーはいずれの セカンダリーネームサーバーにも通知しません
  • master-only: サーバーはゾーン用のプライマリーサーバーにのみ通知します。
  • 明示的な: サーバーは、ゾーンステートメント内の also-notify 一覧で指定したセカンダリーサーバーのみを通知します。
pid-file named サービスで作成されたプロセス ID ファイルの場所を指定します。
recursion 再帰的なサーバーとして動作するかどうかを指定します。デフォルトのオプションは yes です。
statistics-file 統計ファイルの代替の場所を指定します。デフォルトでは、/var/named/named.stats ファイルがデフォルトで使用されています。
注記
named がランタイムデータ用に使用するディレクトリーは、BIND のデフォルトの場所である /var/run/named/ から新たな場所の /run/named/ に移りました。この結果、PID ファイルはデフォルトの /var/run/named/named.pid から新しい場所の /run/named/named.pid に移りました。また、session-key ファイルは /run/named/session.key に移動しました。これらの場所は、options セクションのステートメントで指定する必要があります。例15.4「オプションステートメントの使用」を参照してください。
重要
配信されるサービス拒否 (DDoS) 攻撃を阻止するために、allow-query-cache オプションを使用することで、クライアントの特定サブセット用にのみ再帰的な DNS サービスを制限することをお薦めします。
利用可能な全オプションの一覧は、「インストールされているドキュメント」内で参照されている『BIND 9 Administrator Reference Manual』および named.conf man ページを参照してください。

例15.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;

  pid-file          "/run/named/named.pid";
  session-keyfile   "/run/named/session.key";
};
zone
zone ステートメントでは、設定ファイルやゾーン固有のオプションなど、ゾーンの特性を定義でき、グローバル options ステートメントを上書きするのに使用できます。以下の形式を取ります。
zone zone-name [zone-class] {
  option;
  ...
};
zone-name 属性はゾーン の名前で、zone-class はゾーンの オプション です。option は、表15.4「Zone ステートメントで一般的に使用されるオプション」で説明されているように zone ステートメントオプションになります。
zone-name 属性は、/var/named/ ディレクトリーにある対応するゾーンファイル内で使用される $ORIGIN ディレクティブに割り当てられたデフォルト値であるため、特に重要になります。named デーモンはゾーンの名前を、ゾーンファイル内に一覧表示された非完全修飾型のドメイン名のいずれかに追記します。たとえば、zone ステートメントが example.com の名前空間を定義する場合は、zone-name として example.com を使用し、example.com ゾーンファイル内のホスト名の最後に配置されるようにします。
ゾーンファイルの詳細は、「ゾーンファイルの編集」を参照してください。

表15.4 Zone ステートメントで一般的に使用されるオプション

オプション 説明
allow-query このゾーンに関する情報要求が出来るクライアントを指定します。このオプションはグローバル allow-query オプションを上書きします。デフォルトではすべてのクエリー要求が許可されます。
allow-transfer ゾーン情報の転送要求を許可されるセカンダリーサーバーを指定します。デフォルトでは、すべての転送要求が許可されています。
allow-update
自身のゾーン内で動的な情報更新を許可されるホストを指定します。デフォルトオプションでは、すべての動的更新要求は拒否されます。
ホストがゾーンについての情報を更新可能とするには注意が必要です。サーバーが信頼できるネットワークなければ、このオプションで IP アドレスを設定しないでください。代わりに、「Transaction SIGnatures トランザクション署名 (TSIG)」の説明に従って TSIG キーを使用します。
file ゾーンの設定データを収納している named 作業ディレクトリー内のファイル名を指定します。
masters 信頼できるゾーン情報の要求元となる IP アドレスを指定します。このオプションは、ゾーンが type slave として定義されている場合にのみ使用されます。
notify
あるゾーンが更新された時にセカンダリーネームサーバーに通知するかどうかを指定します。以下のオプションを取ります。
  • yes: サーバーはすべてのセカンダリーネームサーバーに通知します。
  • no: サーバーはセカンダリーネームサーバーに通知し ません
  • master-only: サーバーはゾーンに対してのみプライマリーサーバーに通知します。
  • explicit: サーバーは、ゾーンステートメント内の also-notify 一覧で指定したセカンダリーサーバーのみを通知します。
type
ゾーンのタイプを指定します。以下のオプションを取ります。
  • delegation-only: COM、NET、ORG などのインフラストラクチャーゾーンの委譲ステータスを強制します。明示的あるいは暗示的な委任のない受信回答は NXDOMAIN として扱われます。このオプションは、再帰的あるいはキャッシング実装で使用される TLD もしくは root のゾーンのファイルにのみ適用されます。
  • forward: このゾーンに関する情報へのすべての要求を他のネームサーバーに転送します。
  • hint: ゾーンが不明な場合にクエリーを解決するルートネームサーバーをポイントする特別な種類のゾーン。hint ゾーンでは、デフォルト以外の設定は必要ありません。
  • master: このゾーンに対してネームサーバーを権威として指定します。ゾーンの設定ファイルがシステムに存在する場合は、ゾーンを master として設定する必要があります。
  • slave: このゾーンに対してネームサーバーをスレーブサーバーとして指定します。マスターサーバーは masters ディレクティブで指定します。
プライマリーまたはセカンダリーのネームサーバーの /etc/named.conf ファイルに対するほとんどの変更には、zone ステートメントの追加、修正、または削除が含まれ、通常は zone ステートメントオプションの小さなサブセットのみが、ネームサーバーの効率的な機能のために必要となります。
例15.5「プライマリーネームサーバー用の Zone ステートメント」では、ゾーンは example.com として識別されており、タイプは master にセットされて、named サービスは /var/named/example.com.zone ファイルを読み込むように指示されています。これはまた、ゾーンの転送にセカンダリーネームサーバー (192.168.0.2) のみを許可します。

例15.5 プライマリーネームサーバー用の Zone ステートメント

zone "example.com" IN {
  type master;
  file "example.com.zone";
  allow-transfer { 192.168.0.2; };
};
セカンダリーサーバーの zone ステートメントは、若干異なります。タイプは slave に設定され、masters ディレクティブは named にマスターサーバーの IP アドレスを伝えます。
例15.6「セカンダリーネームサーバー用の Zone ステートメント」では、named サービスは、192.168.0.1IP アドレスにあるプライマリーサーバーに対して example.com ゾーンの情報についてクエリーをするように設定されています。受信した情報はその後、/var/named/slaves/example.com.zone ファイルに保存されます。すべてのスレーブゾーンを /var/named/slaves/ ディレクトリーに配置する必要があることに注意してください。これを行わないと、サービスはゾーン転送に失敗します。

例15.6 セカンダリーネームサーバー用の Zone ステートメント

zone "example.com" {
  type slave;
  file "slaves/example.com.zone";
  masters { 192.168.0.1; };
};