CentOS6.2にてDNSサーバとなるnamedをインストールしていたところ、/var/log/messagesに以下のエラーを確認した。
Jul 9 17:15:44 hogehoge.com named[5011]: none:0: open: /etc/rndc.key: file not found Jul 9 17:15:44 hogehoge.com named[5011]: couldn't add command channel 127.0.0.1#953: file not found
どうやら、「rndc.key」というファイルがないらしい。
/etc/rndc.key: file not found
DNSの構築は、こちらのページを参考にchroot設定を行なったDNS。
/var/named/chroot/etc/配下(またはどっちみち読み込もうとする/etc/配下)に「rndc.key」がないということらしい。
/etc/sysconfig/namedを見ると以下の記述があり、/etc/配下も観ていることがわかる。
# Those files are mounted as well if target file doesn't exist in # chroot. # - /etc/named.conf # - /etc/rndc.conf # - /etc/rndc.key # - /etc/named.rfc1912.zones # - /etc/named.dnssec.keys # - /etc/named.iscdlv.key
確かに/var/named/chroot/etc/ならびに/etc/配下を確認をしたが 該当するファイルがなかった。
そこで、rndc.keyが無い場合の対応として rndc-confgen コマンドを実行することになったのであった。
whatis コマンドの応答からもわかるとおり、rndc-confgen コマンドは「rndc」キーを作成するコマンドである。
[root@localhost ~]# whatis rndc-confgen
rndc-confgen (8) - rndc key generation tool
[root@localhost ~]#
さて、rndc-confgen コマンドを実行してみたのだが、実行完了までずいぶんと時間がかかった。
というか、一度途中でCtrl+Cして止めてしまうぐらい反応がなかった(笑)
そこで!だ。time コマンドを使って実行完了までの時間を計測。
-cで指定しないと/etc/配下に作成されてしまったので、-cでchroot配下を指定しています。
また、-uで作成されるファイルの所有者をnamedにしてます。
[root@localhost ~]# time rndc-confgen -a -c /var/named/chroot/etc/rndc.key -u named
wrote key file "/var/named/chroot/etc/rndc.key"
real 3m47.345s
user 0m0.000s
sys 0m0.010s
[root@localhost ~]#
なんと、完了までに約3分50秒もかかったではないか!
悔しいので、-hオプションでちょっと使い方をみてみたところ、「randomfile」を指定するオプションがあった。
[root@localhost ~]# rndc-confgen -h
Usage:
rndc-confgen [-a] [-b bits] [-c keyfile] [-k keyname] [-p port] [-r randomfile] [-s addr] [-t chrootdir] [-u user]
-a: generate just the key clause and write it to keyfile (/etc/rndc.key)
-b bits: from 1 through 512, default 128; total length of the secret
-c keyfile: specify an alternate key file (requires -a)
-k keyname: the name as it will be used in named.conf and rndc.conf
-p port: the port named will listen on and rndc will connect to
-r randomfile: source of random data (use "keyboard" for key timing)
-s addr: the address to which rndc should connect
-t chrootdir: write a keyfile in chrootdir as well (requires -a)
-u user: set the keyfile owner to "user" (requires -a)
[root@localhost ~]#
以前、Java関連の問題で/dev/randomを使うと十分な乱数の取得に時間がかかりタイムアウトしたという状態に遭遇したことを思い出して、/dev/randomの代わりに/dev/urandomを指定してみた。
[root@localhost ~]# time rndc-confgen -a -c /var/named/chroot/etc/rndc.key -u named -r /dev/urandom
wrote key file "/var/named/chroot/etc/rndc.key"
real 0m0.005s
user 0m0.000s
sys 0m0.004s
[root@localhost ~]#
直ぐに終わったww
ということで、
rndc-confgen の反応が遅い場合は、/dev/randomから得られる乱数が少ないため。
-rオプションを用いて乱数を取得するファイルを指定してあげましょう。
最後に、この-rオプションの面白いところで、乱数ファイルとしてキーボードからのインプットを利用することもできる。つまりは、がしゃがしゃキーボードをうって、それにより乱数を作成することも出来る。その場合は -r keyboard と指定してあげよう。
[root@localhost ~]# time rndc-confgen -a -c /var/named/chroot/etc/rndc.key -u named -r keyboard start typing: ←これが出たらキーボードをがしゃがしゃ打ちまくる ............................... ........................... ........................... ........................... ←ここらへんで、「がしゃがしゃ」したくなる意味がわかるww ........................... ........................... ........................... ........................... stop typing. ←ここで「がしゃがしゃ」終了 wrote key file "/var/named/chroot/etc/rndc.key" real 0m12.041s user 0m0.001s sys 0m0.008s [root@localhost ~]#
ま、無事に/var/log/messagesからエラーメッセージがなくなったのでよしとしましたヽ(*´∀`)ノ
以上
コメント