bindを作動させるためには共通鍵による認証が必要です。といっても何のことだかさっぱりわからないと思いますので説明します。rndc(remote named deamon controller)はリモートホスト(別のサーバー)からbindを操作する際に必要とされる認証方式です。これがあると安全にbindにアクセスできるというわけです。実際にはrndcがなくてもbindは作動します。しかし複雑な設定をしてゆくさいにある時点から「認証できません!」という風にエラーになってしまいます。そういうわけなので結局のところ設定しなければならないハメになります。
およそbindに関する解説本では、dnssec-keygenとかrndc-confgen -r /dev/randomを使ってくださいという風になっていますが、Ubuntuではダメみたいです。
注意事項ですが、後々設定すべきことなのですが、このrndc.confなるファイルは先の共通鍵認証の比較対象になる片方のファイルになります。このファイルは、/etc/rndc.confに置くことになるので、
作成されたファイル(rndc.conf)の内容は以下のようになります。
rndc.confが正しく/etc以下に置かれているか確認してください。
rndc.confに書かれているkeyのブロックが正しくnamed.conf内に書かれていることを確認してください。
そもそも/etc/bind9/rndc.keyファイルが存在するかどうか、また正しいファイル名になっているか確認してください。
設定が間違っていると以下のようなエラーが出ます。
rndc-keyの作成
つまりは鍵の作成をしなくてはなりません。その鍵(key)は、共通鍵として作成されるのでシステムはその鍵を見比べてみて同じだったら「OK」といい、違ったら「ダメ」といいます。およそbindに関する解説本では、dnssec-keygenとかrndc-confgen -r /dev/randomを使ってくださいという風になっていますが、Ubuntuではダメみたいです。
rndc-confgen -r /dev/urandom > rndc.confこれだとイケます。なので上記を使ってみてください。
注意事項ですが、後々設定すべきことなのですが、このrndc.confなるファイルは先の共通鍵認証の比較対象になる片方のファイルになります。このファイルは、/etc/rndc.confに置くことになるので、
rndc-confgen -r /dev/urandom > /etc/rndc.confか、またはそのディレクトリに移動して作成してください。パスが合っていればいいわけですので後からでもよいのですが。自分は、/etc/bind/rndc.confに置いてしまってエラーが出つづけて途方に暮れてしまいました。
作成されたファイル(rndc.conf)の内容は以下のようになります。
key "rndc-key" {このファイルはとりあえず、/etc/rndc.confに置いてそのままにしておきます。
algorithm hmac-md5;
secret "rN0pQ9++9xxxxxxxxxxxxxxx";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
# algorithm hmac-md5;
# secret "rN0pQ9++9bUkwPHRAPowjA==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
named.confの設定
今度は先の共通鍵認証に比較対象になるもう一つのファイルなるものの作成をします。named.confを開いてrndc.confの以下の部分をコピーしてnamed.conf内に貼り付けます。key "rndc-key" {named.conf内であればどこに貼り付けても大丈夫です。最後でも最初でも大丈夫です。貼り付けたら保存します。最後に/etc/init.d/bind9 restartでエラーが出なければ成功です。
algorithm hmac-md5;
secret "rN0pQ9++9xxxxxxxxxxxxxxx";
};
エラーのいろいろ
設定を間違うといろいろなエラーが出ます。まずは、rndc.confが正しく/etc以下に置かれているか確認してください。
rndc.confに書かれているkeyのブロックが正しくnamed.conf内に書かれていることを確認してください。
そもそも/etc/bind9/rndc.keyファイルが存在するかどうか、また正しいファイル名になっているか確認してください。
設定が間違っていると以下のようなエラーが出ます。
rndc: connection to remote host closed
This may indicate that
* the remote server is using an older version of the command protocol,
* this host is not authorized to connect,
* the clocks are not synchronized, or
* the key is invalid.
rndc: connect failed: 127.0.0.1#953: connection refused
rndc: no server specified and no defaultそもそも953のUDPポートが開いていないなんてことはありませんでしょうか。


