rndcの使用法

BINDには、コマンド行ステートメントでnamedデーモンをローカルに管理できるか、リモートに管理することのできるrndcと呼ばれるユーティリティが含まれています。rndcプログラムはその設定オプションに/etc/rndc.confファイルを利用しますが、これはコマンド行オプションで無効にすることができます。

他のシステムの権限のないユーザーによってサーバーのBINDが制御されるのを防ぐため、共有秘密鍵方法を使用して、特定のホストに明示的に特権を与えます。rndcが任意のnamedにコマンドを発行できるようにするため、たとえローカルマシンであっても/etc/named.conf/etc/rndc.confで使用されている鍵は一致しなくてはなりません。

設定ファイル

rndcコマンドを使用する前に、必要なファイル内で適切な設定行が所定の位置にあるかどうかを検証します。rndcを実行して以下のメッセージが表示された場合には、ユーザーの設定ファイルが適切に設定されていない場合が多いと考えられます。

rndc: connect: connection refused

/etc/named.conf

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.confcontrolsステートメントのサンプル

このステートメントはnamedにループバックアドレスのデフォルトTCPポート953を聞くよう知らせ、適切な鍵が与えられた場合にローカルホストからのrndcコマンドを許可します。<key-name>は、keyステートメントのことですが、これも/etc/named.confファイル内にあります。図14-22にサンプルのkeyステートメントが示されます。

key "<key-name>" {
  algorithm hmac-md5;
  secret "<key-value>";
};

図 14-22. /etc/named.confのサンプル

この場合、<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以外でなくてはなりません。

/etc/rndc.conf

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コマンドに命令することができます。

server localhost {
  key  "<key-name>";
};

図 14-24. サンプルの/etc/rndc.conf内のserverステートメント

しかし、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コマンドは以下のような形態をとります。

rndc <options> <command> <command-options>

図 14-26. rndcコマンドの構造

<options>領域は必要ではありません。そしてまたコマンドの要求がない場合には、<command-options>も必要ありません。

rndcを適切に設定されたローカルホストで実行する場合、以下のコマンドが利用できます。

ときには、/etc/rndc.confファイル内のデフォルト設定を無効にしたい場合があるかもしれません。そのような場合には、以下のようなオプションが利用できます。

これらのオプションについてのさらに詳しい情報は、rndcmanページに記載されています。