BINDには、コマンド行ステートメントでnamedデーモンをローカルに管理できるか、リモートに管理することのできるrndcと呼ばれるユーティリティが含まれています。rndcプログラムはその設定オプションに/etc/rndc.confファイルを利用しますが、これはコマンド行オプションで無効にすることができます。
他のシステムの権限のないユーザーによってサーバーのBINDが制御されるのを防ぐため、共有秘密鍵方法を使用して、特定のホストに明示的に特権を与えます。rndcが任意のnamedにコマンドを発行できるようにするため、たとえローカルマシンであっても/etc/named.confと/etc/rndc.confで使用されている鍵は一致しなくてはなりません。
rndcコマンドを使用する前に、必要なファイル内で適切な設定行が所定の位置にあるかどうかを検証します。rndcを実行して以下のメッセージが表示された場合には、ユーザーの設定ファイルが適切に設定されていない場合が多いと考えられます。
rndc: connect: connection refused |
rndcがユーザーのnamedサービスに接続できるようにするには、namedが起動したときに/etc/named.confファイルにcontrolsステートメントがなくてはなりません。図14-21に示されるサンプルのcontrolsステートメントを使用すれば、ローカルにrndcコマンドを実行することができます。
controls {
inet 127.0.0.1 allow { localhost; } keys { <key-name>; };
}; |
図 14-21. /etc/named.confのcontrolsステートメントのサンプル
このステートメントはnamedにループバックアドレスのデフォルトTCPポート953を聞くよう知らせ、適切な鍵が与えられた場合にローカルホストからのrndcコマンドを許可します。<key-name>は、keyステートメントのことですが、これも/etc/named.confファイル内にあります。図14-22にサンプルのkeyステートメントが示されます。
この場合、<key-value>はHMAC-MD5鍵です。ユーザーは以下のコマンドで自分自身のHMAC-MD5鍵を作成することができます。
dnssec-keygen -a hmac-md5 -b <bit-length> -n HOST <key-file-name> |
鍵は256ビット長以上ある方がいいでしょう。<key-value>領域に置くべき実際の鍵は、<key-file-name>にあります。
/etc/named.confで使用される鍵の名前は、key以外でなくてはなりません。
rndcを設定して、/etc/named.confで指定される鍵をローカルホスト用に自動的に使用するには、3つのステートメントが必要です。optionsステートメントを使用すると、図14-23に示すとおり、デフォルトサーバーとrndcが使用する鍵を設定することができます。
options {
default-server localhost;
default-key "<key-name>";
}; |
図 14-23. サンプルの/etc/rndc.conf内のoptionsステートメント
図14-24に示すように、特定のサーバーにアクセスするときにオプションとしてデフォルト鍵を使用するようrndcコマンドに命令することができます。
しかし、rndcで複数のサーバーに接続する場合、このserverステートメントは極めて役に立ちます。
keyは、/etc/rndc.confでもっとも重要なステートメントです。
key "<key-name>" {
algorithm hmac-md5;
secret "<key-value>";
}; |
図 14-25. サンプルの/etc/rndc.conf内のkeyステートメント
<key-name>と<key-value>は/etc/named.conf内での設定とまったく同じでなくてはなりません。
設定をすべてテストするには、rndc reloadを実行してみてください。以下のような応答が表示されます。
rndc: reload command successful |
コマンドが成功しなかった場合、/etc/named.confファイルと/etc/rndc.confファイルをよく調査してエラーを探し出します。
![]() | 重要 |
|---|---|
特権を与えられていないユーザーは、/etc/rndc.confファイルを読み書きできないようにしてください。 |
rndcコマンドは以下のような形態をとります。
<options>領域は必要ではありません。そしてまたコマンドの要求がない場合には、<command-options>も必要ありません。
rndcを適切に設定されたローカルホストで実行する場合、以下のコマンドが利用できます。
halt namedサービスをただちに停止します。
querylog クライアントからこのネームサーバーに行われるすべてのクエリのロギングをオンにします。
refresh ネームサーバーのデータベースをリフレッシュします。
reload ゾーンファイルをリロードするが、以前キャッシュされたすべての他の応答は保持するようネームサーバーに命令します。この方法により、ゾーンファイルの変更を行い、なおかつすべての保存された名前解決を失うことなく変更されたゾーンファイルがマスターサーバーとスレーブサーバーで有効になるようにすることができます。
変更が特定のゾーンだけに影響を与える場合、namedにその1つのゾーンだけをリロードするよう命令することができます。reloadコマンドの後にゾーンの名前をタイプ入力してください。
stats 現在のnamedステートメントを/var/named/named.statsファイルにダンプします。
stop サーバーをゆったりと停止し、終了前に動的な更新やIXFRデータを保存します。
ときには、/etc/rndc.confファイル内のデフォルト設定を無効にしたい場合があるかもしれません。そのような場合には、以下のようなオプションが利用できます。
-c <configuration-file> rndcにデフォルトの/etc/rndc.conf以外の設定ファイルを使用するよう命令します。
-p <port-number> デフォルトの953以外のrndc接続用ポート番号を指定します。
-s <server> このコマンドを/etc/rndc.confファイルのdefault-serverオプション以外のサーバーに送るようrndcに命令します。
これが機能するようにするには、他のnamedサービスを設定してホストからのコマンドを受け入れ、そのネームサービスの鍵を持たなくてはなりません。
-y <key-name> /etc/rndc.confファイルのdefault-keyオプション以外の鍵を指定することができます。
これらのオプションについてのさらに詳しい情報は、rndcmanページに記載されています。