7月 092012
 
シェアする

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からエラーメッセージがなくなったのでよしとしましたヽ(*´∀`)ノ

 

以上

このエントリーをはてなブックマークに追加

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ