11.2. BIND
DNS サーバーの BIND (Berkeley Internet Name Domain) について説明します。ここでは、その設定ファイルの構造にフォーカスし、ローカルとリモートの両方での管理方法を記述しています。
11.2.1. 空白ゾーン
BIND は多くの「空白ゾーン」を設定し、再帰サーバーが不要なクエリーを、処理できない (このために遅延が発生したり、クエリーを送信したクライアントに SERVFAIL が返される) インターネットサーバーに送信することを防ぎます。これらの空白ゾーンにより、遅延なしで権威のある NXDOMAIN 応答が返されます。設定オプションの empty-zones-enable は空白ゾーンを作成するかどうかを制御し、disable-empty-zone はさらに、使用されるデフォルトの接頭辞のリストから 1 つ以上の空白ゾーンを無効にします。
BIND 9.9 およびそれ以降のユーザーは、empty-zones-enable が未指定の場合 (デフォルトで yes) と明示的に yes に設定されている場合の両方で『RFC 1918』空白ゾーンを目にすることになります。
11.2.2. named サービスの設定
named サービスは起動時に、表11.1「named サービスの設定ファイル」に記載ファイルから設定を読み込みます。
表11.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;
};注記
chroot 環境で実行されます。その場合、初期化スクリプトは mount --bind コマンドを使って上記の設定ファイルをマウントするので、この環境外で設定が管理できます。マウントは自動的に行われるので、/var/named/chroot/ ディレクトリーにはなにもコピーする必要はありません。chroot 環境で BIND が実行されている場合は、この設定ファイルの管理については特別な作業が不要となり、維持が簡単になります。chroot 以外の環境で BIND を実行する際と同様の作業になります。
/var/named/chroot/ 下にある対応するマウントポイントディレクトリーが空の場合、/var/named/chroot/ ディレクトリーに自動的にマウントされます。
/etc/named/etc/pki/dnssec-keys/run/named/var/named/usr/lib64/bindまたは/usr/lib/bind(アーキテクチャーに依存)
/var/named/chroot/ にターゲットファイルがない場合は、以下のファイルもマウントされます。
/etc/named.conf/etc/rndc.conf/etc/rndc.key/etc/named.rfc1912.zones/etc/named.dnssec.keys/etc/named.iscdlv.key/etc/named.root.key
重要
chroot 環境でマウントされたファイルを編集する場合は、バックアップコピーを作成し、その上でオリジナルファイルを編集する必要があります。別の方法では、「edit-a-copy」モードを無効にしてエディターを使います。たとえば、BIND の設定ファイル /etc/named.conf を chroot 環境で実行中に Vim で編集するには、root で以下のコマンドを実行します。
~]# vim -c "set backupcopy=yes" /etc/named.conf
11.2.2.1. chroot 環境で BIND をインストールする
chroot 環境で実行するようにインストールするには、root で以下のコマンドを実行します。
~]# yum install bind-chroot
named-chroot サービスを有効にするには、以下のコマンドを実行して、まず named サービスが実行中かどうかを確認します。
~]$ systemctl status named
実行中の場合は、無効にする必要があります。
named 無効にするには、root で以下のコマンドを実行します。
~]# systemctl stop named
~]# systemctl disable named
その後に named-chroot サービスを有効にするために、root で以下のコマンドを実行します。
~]# systemctl enable named-chroot
~]# systemctl start named-chroot
named-chroot サービスのステータスを確認するには、root で以下のコマンドを実行します。
~]# systemctl status named-chroot
11.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など) または、CIDR (Classless Inter-Domain Routing) ネットワーク表記 (たとえば、10.0.1.0/24) です。定義済みキーワードの一覧については 表11.2「事前定義のアクセス制御リスト」を参照してください。表11.2 事前定義のアクセス制御リスト
キーワード 説明 anyすべての IPアドレスにマッチします。localhostローカルシステムが使用する IPアドレスにマッチします。localnetsローカルシステムが接続しているネットワーク上の IPアドレスにマッチします。noneどの IPアドレスにもマッチしません。aclステートメントはoptionsなどの他のステートメントとの併用すると特に便利です。例11.2「options と併用して acl を使用する」では、black-hatsとred-hatsの 2 つのアクセス制御リストを定義し、red-hatsに通常アクセスを許可する一方でblack-hatsをブラックリストに追加します。例11.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 ステートメント名はファイルへの絶対パスとなります。例11.3 ファイルを /etc/named.conf に含める
include "/etc/named.rfc1912.zones";
-
options optionsステートメントにより、グローバルサーバー設定オプションを定義できるとともに他のステートメントのデフォルトを設定することもできます。これを使うと、namedの作業ディレクトリーの場所、許可されるクエリーのタイプ、その他多くを指定することができます。以下の形式を取ります。options { option; ... };頻繁に使用される option ディレクティブの一覧については、以下の 表11.3「一般的な設定オプション」を参照してください。表11.3 一般的な設定オプション
オプション 説明 allow-query権限のあるリソースレコード用のネームサーバーにクエリーを許可されるホストを指定します。これはアクセス制御リスト、 IPアドレスの集合、または CIDR 表記にあるネットワーク群などを受け付けます。デフォルトではすべてのホストが許可されています。allow-query-cache再帰クエリーなど権限の必要ないデータ用のネームサーバーにクエリーを許可されるホストを指定します。デフォルトでは、 localhostとlocalnetsのみが許可されています。blackholeネームサーバーへのクエリーを許可されないホストを指定します。このオプションは、特定のホストやネットワークがサーバーに要求を集中させる時には使用すべきではありません。デフォルトのオプションは noneです。directorynamedサービス用の作業ディレクトリーを指定します。デフォルトのオプションは/var/named/です。disable-empty-zone使用されるデフォルトの接頭辞リストから空白ゾーンを無効にするために使用します。options ステートメントおよび view ステートメントで指定することができます。複数回の使用が可能です。 dnssec-enableDNSSEC 関連のリソースレコードを返すかどうかを指定します。デフォルトのオプションは yesです。dnssec-validationDNSSEC を介してリソースが本物であることを証明するかどうかを指定します。デフォルトのオプションは yesです。empty-zones-enable空白ゾーンを作成するかどうかを制御します。options ステートメントでのみ、指定可能です。 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ファイルがデフォルトで使用されています。注記
namedがランタイムデータ用に使用するディレクトリーは、BIND のデフォルトの場所である/var/run/named/から新たな場所の/run/named/に移りました。この結果、PID ファイルはデフォルトの/var/run/named/named.pidから新しい場所の/run/named/named.pidに移りました。また、session-key ファイルは/run/named/session.keyに移動しました。これらの場所は、options セクションのステートメントで指定する必要があります。例11.4「オプションステートメントの使用」を参照してください。重要
分散型サービス妨害 (DDoS) 攻撃を阻止するには、allow-query-cacheオプションを使用して、クライアントの特定サブセット用にのみ再帰DNSサービスを制限することが推奨されます。利用可能な全オプションの一覧は、「インストールされているドキュメント」内で参照されている『BIND 9 Administrator Reference Manual』およびnamed.confman ページを参照してください。例11.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 は 表11.4「Zone ステートメントで一般的に使用されるオプション」で説明してあるようにzoneステートメントのオプションです。zone-name 属性は/var/named/ディレクトリーに配置されている該当ゾーンファイル内で使用される$ORIGINディレクティブに割り当てられたデフォルトの値なので、特に重要です。namedデーモンはゾーンの名前を、ゾーンファイル内に一覧表示された非完全修飾型のドメイン名のいずれかに追記します。たとえば、zoneステートメントがexample.com用にネームスペースを定義する場合、example.comを zone-name として使用すると、それをexample.comゾーンファイル内のホスト名の末尾に配置することができます。ゾーンファイルの詳細情報については、「ゾーンファイルの編集」を参照してください。表11.4 Zone ステートメントで一般的に使用されるオプション
オプション 説明 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ステートメントオプションの小さなサブセットのみが、ネームサーバーの効率的な機能のために必要となります。例11.5「プライマリーネームサーバー用の Zone ステートメント」では、ゾーンはexample.comとして識別されており、タイプはmasterにセットされて、namedサービスは/var/named/example.com.zoneファイルを読み込むように指示されています。これはまた、ゾーンの転送にセカンダリーネームサーバー (192.168.0.2) のみを許可します。例11.5 プライマリーネームサーバー用の Zone ステートメント
zone "example.com" IN { type master; file "example.com.zone"; allow-transfer { 192.168.0.2; }; };セカンダリーサーバーのzoneステートメントは少し異なります。タイプはslaveに設定され、mastersディレクティブはnamedにマスターサーバーのIPアドレスを伝えます。例11.6「セカンダリーネームサーバー用の Zone ステートメント」では、namedサービスは、192.168.0.1IPアドレスにあるプライマリーサーバーに対してexample.comゾーンの情報についてクエリーをするように設定されています。受信した情報はその後、/var/named/slaves/example.com.zoneファイルに保存されます。すべてのスレーブゾーンを/var/named/slaves/ディレクトリーに配置する必要があることに注意してください。これを行わないと、サービスはゾーン転送に失敗します。例11.6 セカンダリーネームサーバー用の Zone ステートメント
zone "example.com" { type slave; file "slaves/example.com.zone"; masters { 192.168.0.1; }; };
11.2.2.3. その他のステートメントタイプ
/etc/named.conf 内では通常多くは使用されません。
-
controls controlsステートメントにより各種設定が可能になり、namedサービスを管理するためのrndcコマンドの使用に必要な様々なセキュリティー要件を設定できるようになります。rndcユーティリティーとその使用法の詳細については、「rndc ユーティリティーの使用」を参照してください。-
key keyステートメントを使うと、特定のキーを名前で定義できるようになります。キーは、安全な更新や、あるいは、rndcコマンドの使用など各種動作を認証するために使用されます。2つのオプションがkeyと使用されます。algorithm algorithm-name: 使用されるアルゴリズムのタイプ (たとえば、hmac-md5)。secret "key-value": 暗号化キーです。
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つの応答を受信することができるようになり、他のホストは全く異なる情報を受信することができるようになります。別の観点から、一定のゾーンは特定の信頼されるホストにだけ利用可能であり、信頼できないホストは他のゾーンのクエリーしかできない可能性もあります。view はその名前が一意になっていれば、複数のものを使用できます。match-clientsオプションを使うと、特定の表示に適用するIPアドレスを指定することができます。optionsステートメントが 1 つの表示内で使用された場合は、すでに設定済みのグローバルオプションを上書きします。最後に、ほとんどのviewステートメントは、match-clients一覧に適用される複数のzoneステートメントを含んでいます。viewステートメントが一覧表示される順序が重要であることに留意してください。特定クライアントのIPアドレスにマッチする最初のステートメントが使用されます。このトピックの詳細については、「複数表示」を参照してください。
11.2.2.4. コメントタグ
/etc/named.conf ファイルにはコメントも含まれています。コメントは named サービスには無視されますが、ユーザーに追加情報を提供する時に役に立ちます。以下に有効なコメントタグを示します。
////文字の後のテキストはいずれもその行末までコメントとみなされます。例を示します。notify yes; // notify all secondary nameservers
##文字の後のテキストはいずれもその行末までコメントとみなされます。例を示します。notify yes; # notify all secondary nameservers
/*と*//*と*/によって囲まれたテキストのブロックはコメントとみなされます。例を示します。notify yes; /* notify all secondary nameservers */
11.2.3. ゾーンファイルの編集
/var/named/ にある named 作業ディレクトリーに保存されます。各ゾーンファイルは zone ステートメント内の file オプションに従って命名されます。通常は、example.com.zone などのようにドメインに関連付けられ、ゾーンデータを含むファイルとして識別できる方法で命名されます。
表11.5 named サービスのゾーンファイル
| パス | 説明 |
|---|---|
/var/named/ | named サービスの作業ディレクトリーです。ネームサーバーにはこのディレクトリーに書き込む許可が ありません。 |
/var/named/slaves/ | セカンダリーゾーンのディレクトリーです。このティレクトリは named サービスによる書き込みが可能です。 |
/var/named/dynamic/ | 動的 DNS (DDNS) ゾーンや管理された DNSSEC キーなどの他のファイル用のディレクトリーです。このディレクトリーは named サービスによる書き込みが可能です。 |
/var/named/data/ | 様々な統計とデバッギングファイル用のディレクトリーです。このディレクトリーは named サービスによる書き込みが可能です。 |
11.2.3.1. 一般的なディレクティブ
$) で始まり、その後にディレクティブ名が続きます。通常、ファイルの最上部に現れます。以下のディレクティブは一般的にゾーンファイルで使用されます。
-
$INCLUDE $INCLUDEディレクティブにより、それが出現する場所にもう1つのファイルを含めることができるため、他のゾーンセッティングは別個のゾーンファイルに保存できるようになります。例11.7 $INCLUDE ディレクティブの使用
$INCLUDE /var/named/penguin.example.com
-
$ORIGIN $ORIGINディレクティブを使うと、ホスト名だけの非完全修飾型の記録へドメイン名を追記できるようになります。デフォルトではゾーン名が使用されるので、/etc/named.conf内でゾーンが指定されている場合は、このディレクティブの使用は不要です。例11.8 $ORIGIN ディレクティブの使用
$ORIGIN example.com.
-
$TTL $TTLディレクティブにより、ゾーン用のデフォルト TTL (Time to Live) 値をセットできるようになります。つまり、ゾーン記録が有効である時間の長さのセッティングです。各リソースレコードはそれ自身のTTL 値を含むことができるため、それがこのディレクティブを上書きします。この値を増加させるとリモートのネームサーバーはより長い期間でゾーン情報をキャッシュ化することができるようになり、ゾーンへのクエリー回数が減少し、リソースレコード変更の伝達に必要な時間を延長させることができます。例11.9 $TTL ディレクティブの使用
$TTL 1D
11.2.3.2. 一般的なリソースレコード
-
A - Address レコードは名前に割り当てられる
IPアドレスを指定します。以下の形式を取ります。hostname IN A IP-address
hostname の値ない場合、レコードは最後に指定された hostname を指します。例11.10 リソースレコードの使用
server1 IN A 10.0.1.3 IN A 10.0.1.5 -
CNAME - Canonical Name (別名) レコードはある名前を別の名前にマッピングします。このため、このタイプのレコードは、エイリアスレコードと呼ばれることもあります。以下の形式を取ります。
alias-name IN CNAME real-name
CNAMEレコードは Web サーバー用のwwwのように、共通の命名基準を使用するサービスを指すために最も一般的に使用されます。しかし、それらの使用については複数の制限があります。- CNAME レコードは他の CNAME レコードを指してはいけません。これは主に無限のループの可能性を避けるためです。
- CNAME レコードには他のリソースレコードタイプ (A、NS、MX など) を含めないでください。唯一の例外は、ゾーンが署名されている時の DNSSEC 関連のレコード (RRSIG、NSEC など) です。
- ホストの完全修飾型ドメイン名 (FQDN) を指す他のリソースレコード (NS、MX、PTR) は CNAME レコードを指してはいけません。
例11.11 CNAME リソースレコードの使用
server1 IN A 10.0.1.5 www IN CNAME server1
-
MX - Mail Exchange レコードは、このゾーンで制御されている特定のネームスペースに送信されるメールの行き先を指定します。以下の形式を取ります。
IN MX preference-value email-server-name
email-server-name は完全修飾型ドメイン名 (FQDN) です。preference-value によってネームスペースのメールサーバーの数値ランキングが可能になり、一部のメールシステムに他のシステムよりも優先度を与えます。最小の preference-value を持つMXリソースレコードが他よりも優先されます。しかし複数メールサーバーが同じ値を持つ可能性があり、その場合はメールトラフィックをサーバー間で均等に分配することになります。例11.12「MX リソースレコードの使用」では、example.comドメイン宛のメール受信時には最初のmail.example.comメールサーバーがmail2.example.comメールサーバーよりも優先されます。例11.12 MX リソースレコードの使用
example.com. IN MX 10 mail.example.com. IN MX 20 mail2.example.com. -
NS - Nameserver レコードはある特定のゾーン用に正当なネームサーバーを表明します。以下の形式を取ります。
IN NS nameserver-name
nameserver-name は完全修飾型ドメイン名 (FQDN) である必要があります。ドメインに対して 2 つのネームサーバーが正当だとして一覧表示されている時には、これらのネームサーバーがセカンダリーネームサーバーであるか、またはその 1 つがプライマリーサーバーであるかどうかは重要でありません。両方とも正当と考慮されます。例11.13 NS リソースレコードの使用
IN NS dns1.example.com. IN NS dns2.example.com.
-
PTR - Pointer レコードはネームスペースの別の部分を指します。以下の形式を取ります。
last-IP-digit IN PTR FQDN-of-system
last-IP-digit ディレクティブはIPアドレスの末尾の番号です。FQDN-of-system は完全修飾型ドメイン名 (FQDN) になります。 -
SOA - Start of Authority レコードはネームスペースについての信頼できる重要な情報をネームサーバーに表明します。ディレクティブの後に配置されていて、ゾーンファイルでは最初のリソースレコードです。以下の形式を取ります。
@ IN SOA primary-name-server hostmaster-email ( serial-number time-to-refresh time-to-retry time-to-expire minimum-TTL )ディレクティブは以下の通りです。@シンボルは$ORIGINディレクティブ (または$ORIGINディレクティブがセットされていない場合は、ゾーン名) をこのSOAリソースレコードで定義されたネームスペースとして配置します。- primary-name-server ディレクティブは、このドメインの正式なプライマリーネームサーバーのホスト名です。
- hostmaster-email ディレクティブは、ネームスペースに関して連絡する相手のメールです。
- serial-number ディレクティブは、
namedサービスがゾーンを再ロードする時間であることを示すためにゾーンファイルが変更される度に増加する数値です。 - time-to-refresh ディレクティブは、ゾーンに対して変更がなされたかどうかをプライマリーネームサーバーに尋ねるまで待機する時間の長さを決定するためにセカンダリーネームサーバーが使用する数値です。
- time-to-retry ディレクティブは、プライマリーネームサーバーが応答しない事態にリフレッシュ要求を出すまで待機する時間の長さを決定するためにセカンダリーネームサーバーによって使用される数値です。time-to-expire ディレクティブ内で指定された時間が経過するまでに、プライマリーネームサーバーがリフレッシュ要求に応答しない場合は、セカンダリーサーバーはそのネームスペースに関する要求での権威としての応答を停止します。
- BIND 4 と 8 では、minimum-TTL ディレクティブは他のネームサーバーがゾーンの情報をキャッシュ化する時間の長さになります。BIND 9 では、これは否定的な回答がキャッシュ化される時間の長さを定義します。否定的回答のキャッシュ化は最大で 3 時間に設定できます (
3H)。
BIND の設定時には、すべての時間は秒で指定されます。しかし、秒以外の時間単位を指定するのに短縮形を使用することができます。たとえば、分 (M)、時間 (H)、日 (D)、および週 (W) です。表11.6「秒表示とその他の時間単位」では時間数を秒で示し、さらにその同時間を他の形式で示しています。表11.6 秒表示とその他の時間単位
秒 他の時間単位 60 1M1800 30M3600 1H10800 3H21600 6H43200 12H86400 1D259200 3D604800 1W31536000 365D例11.14 SOA リソースレコードの使用
@ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day
11.2.3.3. コメントタグ
named サービスでは無視されますが、ユーザーに追加情報を提供する際に便利です。セミコロンの後の行末までのテキストはすべてコメントとみなされます。例を示します。
604800 ; expire after 1 week
11.2.3.4. 使用法の例
11.2.3.4.1. 単純なゾーンファイル
SOA 値の使用を提示しています。
例11.15 単純なゾーンファイル
$ORIGIN example.com.
$TTL 86400
@ IN SOA dns1.example.com. hostmaster.example.com. (
2001062501 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
;
;
IN NS dns1.example.com.
IN NS dns2.example.com.
dns1 IN A 10.0.1.1
IN AAAA aaaa:bbbb::1
dns2 IN A 10.0.1.2
IN AAAA aaaa:bbbb::2
;
;
@ IN MX 10 mail.example.com.
IN MX 20 mail2.example.com.
mail IN A 10.0.1.5
IN AAAA aaaa:bbbb::5
mail2 IN A 10.0.1.6
IN AAAA aaaa:bbbb::6
;
;
; This sample zone file illustrates sharing the same IP addresses
; for multiple services:
;
services IN A 10.0.1.10
IN AAAA aaaa:bbbb::10
IN A 10.0.1.11
IN AAAA aaaa:bbbb::11
ftp IN CNAME services.example.com.
www IN CNAME services.example.com.
;
;dns1.example.com と dns2.example.com として設定されており、これらはそれぞれ A レコードを使用して 10.0.1.1 と 10.0.1.2 の IP アドレスに結合されています。
MX レコードで設定されているメールサーバーは、A レコードを介して mail と mail2 に向けられています。これらの名前はトレーリングピリオドで終了していないため、$ORIGIN ドメインがその後に配置されており、それらを mail.example.com および mail2.example.com に広げています。
www.example.com (WWW) などの標準の名前で利用可能なサービスは、CNAME レコードを使用して適切なサービスを指すようにしてあります。
zone ステートメントが /etc/named.conf ファイルに追加される場合に使用されます。
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};11.2.3.4.2. 逆引き名前解決ゾーンファイル
IP アドレスを完全修飾型ドメイン名 (FQDN) に変換するために使用されます。これは標準のゾーンファイルに非常に似ていますが、例11.16「逆引き名前解決ゾーンファイル」にあるように IP アドレスを完全修飾型ドメイン名にリンクするために PTR リソースレコードが使われている点が異なります。
例11.16 逆引き名前解決ゾーンファイル
$ORIGIN 1.0.10.in-addr.arpa.
$TTL 86400
@ IN SOA dns1.example.com. hostmaster.example.com. (
2001062501 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
;
@ IN NS dns1.example.com.
;
1 IN PTR dns1.example.com.
2 IN PTR dns2.example.com.
;
5 IN PTR server1.example.com.
6 IN PTR server2.example.com.
;
3 IN PTR ftp.example.com.
4 IN PTR ftp.example.com.10.0.1.1 から 10.0.1.6 までの IP アドレスは、対応する完全修飾ドメイン名を指しています。
zone ステートメントが /etc/named.conf ファイルに追加される場合に使用されます。
zone "1.0.10.in-addr.arpa" IN {
type master;
file "example.com.rr.zone";
allow-update { none; };
};zone ステートメントにはほとんど違いがありません。逆引き名前解決ゾーンは、IP アドレスの最初の 3 つのブロックが逆になっていて、その後に .in-addr.arpa が続く必要があります。これにより、逆引き名前解決ゾーンファイルで使用される IP 番号のシングルブロックがそのゾーンと関連付けられます。
11.2.4. rndc ユーティリティーの使用
rndc ユーティリティーは、ローカルとリモートマシンの両方から named サービスの管理を可能にするコマンドラインツールです。以下のような使用法になります。
rndc [option...] command [command-option]11.2.4.1. ユーティリティーの設定
named は選択したポート (デフォルトでは 953) をリッスンするように設定し、このサービスとrndc ユーティリティーの両方が同じキーを使用する必要があります。
表11.7 関連ファイル
rndc 設定は /etc/rndc.conf に配置されています。ファイルが存在しない場合は、ユーティリティーは、rndc-confgen -a コマンドを使用してインストールプロセス中に自動的に生成されていて /etc/rndc.key にあるキーを使用します。
named サービスは、「その他のステートメントタイプ」の説明にある /etc/named.conf 設定ファイル内の controls ステートメントを使用して設定されます。このステートメントがない場合、ループバックアドレス (127.0.0.1) からの接続のみが許可されることになり、/etc/rndc.key にあるキーが使用されます。
重要
root のみが /etc/rndc.key ファイルの読み取りをできるようにします。
~]# chmod o-rwx /etc/rndc.key11.2.4.2. サービスステータスの確認
named サービスの現在の状態をチェックするには、以下のコマンドを使用します。
~]# rndc status
version: 9.7.0-P2-RedHat-9.7.0-5.P2.el6
CPUs found: 1
worker threads: 1
number of zones: 16
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running11.2.4.3. 設定とゾーンのリロード
~]# rndc reload
server reload successfulreload コマンドの後にその名前を指定します。例を示します。
~]# rndc reload localhost
zone reload up-to-date~]# rndc reconfig注記
DNS (DDNS) を使用するゾーンを手動で修正する場合は、freeze コマンドを最初に実行してください。
~]# rndc freeze localhostthaw コマンドを実行して DDNS を再度有効にしてゾーンをリロードします。
~]# rndc thaw localhost
The zone reload and thaw was successful.11.2.4.4. ゾーンキーの更新
sign コマンドを使用します。例を示します。
~]# rndc sign localhostauto-dnssec オプションを maintain に設定する必要があることに注意してください。例を示します。
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
auto-dnssec maintain;
};11.2.4.5. DNSSEC 検証の有効化
root で以下のコマンドを実行します。
~]# rndc validation on~]# rndc validation off11.2.4.6. クエリーロギングの有効化
root で以下のコマンドを実行します。
~]# rndc querylogstatus コマンドを使用します。
11.2.5. dig ユーティリティーの使用
dig ユーティリティーは、DNS ルックアップの実行とネームサーバー設定のデバッグを可能にするコマンドラインツールです。これは通常、以下のように使用されます。
dig [@server] [option...] name type11.2.5.1. ネームサーバーのルックアップ
dig name NS例11.17 ネームサーバールックアップのサンプル
~]$ dig example.com NS
; <<>> DiG 9.7.1-P2-RedHat-9.7.1-2.P2.fc13 <<>> example.com NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57883
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN NS
;; ANSWER SECTION:
example.com. 99374 IN NS a.iana-servers.net.
example.com. 99374 IN NS b.iana-servers.net.
;; Query time: 1 msec
;; SERVER: 10.34.255.7#53(10.34.255.7)
;; WHEN: Wed Aug 18 18:04:06 2010
;; MSG SIZE rcvd: 7711.2.5.2. IP アドレスのルックアップ
IP アドレスを検索するには、以下の形式のコマンドを使用します。
dig name A例11.18 IP アドレス検索のサンプル
~]$ dig example.com A
; <<>> DiG 9.7.1-P2-RedHat-9.7.1-2.P2.fc13 <<>> example.com A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4849
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 155606 IN A 192.0.32.10
;; AUTHORITY SECTION:
example.com. 99175 IN NS a.iana-servers.net.
example.com. 99175 IN NS b.iana-servers.net.
;; Query time: 1 msec
;; SERVER: 10.34.255.7#53(10.34.255.7)
;; WHEN: Wed Aug 18 18:07:25 2010
;; MSG SIZE rcvd: 9311.2.5.3. ホスト名の検索
IP アドレスのホスト名を検索するには、以下の形式のコマンドを使用します。
dig-xaddress
例11.19 ホスト名検索のサンプル
~]$ dig -x 192.0.32.10
; <<>> DiG 9.7.1-P2-RedHat-9.7.1-2.P2.fc13 <<>> -x 192.0.32.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29683
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 6
;; QUESTION SECTION:
;10.32.0.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
10.32.0.192.in-addr.arpa. 21600 IN PTR www.example.com.
;; AUTHORITY SECTION:
32.0.192.in-addr.arpa. 21600 IN NS b.iana-servers.org.
32.0.192.in-addr.arpa. 21600 IN NS c.iana-servers.net.
32.0.192.in-addr.arpa. 21600 IN NS d.iana-servers.net.
32.0.192.in-addr.arpa. 21600 IN NS ns.icann.org.
32.0.192.in-addr.arpa. 21600 IN NS a.iana-servers.net.
;; ADDITIONAL SECTION:
a.iana-servers.net. 13688 IN A 192.0.34.43
b.iana-servers.org. 5844 IN A 193.0.0.236
b.iana-servers.org. 5844 IN AAAA 2001:610:240:2::c100:ec
c.iana-servers.net. 12173 IN A 139.91.1.10
c.iana-servers.net. 12173 IN AAAA 2001:648:2c30::1:10
ns.icann.org. 12884 IN A 192.0.34.126
;; Query time: 156 msec
;; SERVER: 10.34.255.7#53(10.34.255.7)
;; WHEN: Wed Aug 18 18:25:15 2010
;; MSG SIZE rcvd: 31011.2.6. BIND の高度な機能
named のみを使用して名前解決サービスを提供したり、特定ドメイン用の権威として機能させます。しかし、BIND バージョン 9 には数種の高度な機能が含まれており、より安全で効率的な DNS サービスを可能にしています。
重要
11.2.6.1. 複数表示
DNS エントリを拒否するために、そしてそれと同時にローカルネットワーク内のクライアントからのクエリを受け付けるために使用されます。
view ステートメントを /etc/named.conf 設定ファイルに追加します。match-clients オプションを使用して IP アドレスかネットワーク全体とマッチするようにし、それらに特別オプションとゾーンデータを与えます。
11.2.6.2. IXFR (Incremental Zone Transfers 差分ゾーン転送)
11.2.6.3. Transaction SIGnatures トランザクション署名 (TSIG)
IP アドレスにアクセスする必要があるだけでなく、秘密鍵を知る必要があるため、これにより標準の IP アドレスベースの転送認証メソッドが強化されます。
重要
IP アドレスベース認証のみに頼らないでください。
11.2.6.4. DNSSEC (DNS Security Extensions)
DNS データの発信元認証、認証による存在否定、およびデータの整合性を提供します。特定のドメインが安全としてマークされている時、検証に失敗した各リソースレコードに SERFVAIL 応答が返されます。
dig ユーティリティーを使用することができます。役に立つオプションとして、+dnssec (DNSSEC OK を設定することで、DNSSEC 関連のリソースレコードを要求)、+cd (応答を検証しないように再帰ネームサーバーに指示)、そして+bufsize=512 (一部のファイヤーウォールを通過するためにパケットサイズを 512B に変更) があります。
11.2.6.5. インターネットプロトコルバージョン 6 (IPv6)
AAAA リソースレコードの使用、および listen-on-v6 ディレクティブを介してサポートされています。
11.2.7. 回避すべき一般的な間違い
- セミコロンと弓形括弧の正しい使用
/etc/named.confファイル内のセミコロンの欠如や、不一致な弓形括弧はnamedサービスの開始を阻止してしまいます。- ピリオド (
.記号) の正しい使用 - ゾーンファイル内では、ドメイン名の末尾のピリオドは完全修飾型ドメイン名を示します。これが欠如していると、
namedサービスはゾーン名、または$ORIGINの値を追記してそれを完結しようとします。 - ゾーンファイルを編集する時のシリアル番号増加
- シリアル番号が増加していない場合、プライマリーネームサーバーは正しくて新しい情報を持ちますが、セカンダリーネームサーバーは決して変更を通知されません。そのため、そのゾーンのデータをリフレッシュする試みをしません。
- ファイヤーウォールの設定
- ファイヤーウォールが、
namedサービスから他のネームサーバーへの接続をブロックしている場合は、ファイヤーウォールの設定変更が推奨されます。警告
DNSクエリに固定UDPソースポートを使用すると、攻撃者がキャッシュポイズニング攻撃をより簡単に実施できるようになるセキュリティー脆弱性につながる可能性があります。これを防止するには、デフォルトでDNSがランダム短期ポートから送信するようにします。ランダムなUDPソースポートからの送信クエリーを許可するようにファイヤーウォールを設定します。デフォルトでは、1024から65535の範囲が使用されます。
11.2.8. その他のリソース
11.2.8.1. インストールされているドキュメント
/usr/share/doc/bind-version/- 最新のドキュメンテーションを格納しているメインのディレクトリーです。ここには、HTML と PDF 形式で『BIND 9 Administrator Reference Manual』を収納しており、BIND のリソース要件、異種タイプのネームサーバーの設定方法、ロードバランシングの実行方法、および他の高度なトピックを説明しています。
/usr/share/doc/bind-version/sample/etc/named設定ファイルのサンプルが格納されているディレクトリーです。
rndc(8)rndcネームサーバー制御ユーティリティーの man ページで、使用法に関するドキュメンテーションが含まれています。named(8)- インターネットドメインネームサーバー
namedの man ページには、BIND ネームサーバーデーモンの制御に使用可能な各種引数についてのドキュメントが含まれています。 lwresd(8)- 軽量のリゾルバーデーモン
lwresdの man ページには、このデーモンとその使用法についてのドキュメントが含まれています。 named.conf(5)- この man ページには、
named設定ファイル内で利用可能なオプションの総合的一覧があります。 rndc.conf(5)- この man ページには、
rndc設定ファイル内で利用可能なオプションの総合的一覧があります。
11.2.8.2. オンラインリソース
- https://access.redhat.com/site/articles/770133
chroot環境で BIND を実行することに関する Red Hat ナレッジベースアーティクルです。Red Hat Enterprise Linux 6 との違いも含まれています。- https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Security_Guide/
- 『Red Hat Enterprise Linux 7 セキュリティーガイド』には、DNSSEC に関する詳細なセクションがあります。
- https://www.icann.org/namecollision
- 『Name Collision Resources and Information』

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.