2008年7月31日木曜日

dnssec-keygenコマンドが終わらない

メモエントリ
 
bind9のユーティリティdnssec-keygenで鍵を生成する際に、待てど暮らせど完了しないことがある。
 
どうもデフォルトでは乱数の生成に "/dev/random" を使う、randomの出力はセキュアだけど色々な要素がないと十分な長さの文字列を作るのに時間が掛かる模様。
 
dnssec-keygenが止まっている裏でlsofしてみる
# lsof | grep dnssec
(出力一部省略)
dnssec-ke 32108 root 3r CHR 1,8 1125 /dev/random

 
確かにrandomやってますね、こんなときrandomは何をかえしているの?
試しに手で叩いてみる。
# cat /dev/random
(省略)
'Ggd0**__
(4文字くらい出力されて、放っておくと数秒おきに数文字徐々に増える)

Σ(-_-)しょぼっ! これが1024字になるまで鍵が完成しないのではコマンドが終わる訳ない。
 
dnssec-keygenは "-r" オプション で乱数の生成デバイスを指定できるので(-r <randomdev>)
"-r /dev/urandom" を指定すればあっという間に鍵ファイルができる。
 
 
randomとurandomの違いはMan参照、urandomでも困りはしないでしょう。
/dev/randomのManpage
 
 
ちなみにWindowsバイナリ版bindについてくる dnssec-keygen.exe は特に待ったりしないです。
 
 
こちらの情報を参考にさせて頂きました。