相変わらずのチラ裏で申し訳ない。
相変わらず設定値を変更して動作検証してみたりしていますが、Internalでしか使用しないとはいえ、Security周りの設定を無効化するのは良くないよなぁと思いつつ設定を見なおしております。
そもそもSERVFAIL
ということは応答を返してこない、ということなので以下のパラメータが関連しているということになると思います。
forward-zones-recurse
再帰問い合わせを行う、つまり別のキャッシュサーバにForwardする先の設定値です。
私の環境では主に、ISPのDNSではなく、「DNS Advantage」というところのFree Public DNSを利用していました。
http://www.neustar.biz/services/dns-services/free-recursive-dns
つまり以下の様な設定値です。
forward-zones-recurse=.=156.154.70.1;156.154.71.1
とりあえずこちらを無効、すなわちデフォルトではroot Serverに問い合わせを行う挙動をするのでそちらに戻しました。
サンプル的には以下の様な感じです。ほぼデフォルトです。
dont-query=127.0.0.0/8, ::1/128
local-address=<InterfaceのIPアドレス>
query-local-address=0.0.0.0
query-local-address6=::
setgid=pdns-recursor
setuid=pdns-recursor
で、これで確認したところ、SERVFAIL
は収まった模様で、今までさんざん騒いでいた問い合わせが止まる挙動は収まった感じです。
ただし再設定から数十分程度なので再発?することもあるかと思いますが・・・
たぶん確証を得るにはコードとかの突き合わせだったり他にもあるPublicなDNSなんかを全部検証するべきなのでしょうが、そこまで気力が・・・
ちなみにPublicなDNSとしてはよく使用されるGoogle Public DNSですが、そちらを設定した感じでは一覧の挙動への影響は無いようで(つまるところ正しく?問い合わせの返してきている?)問い合わせの動作が一定時間止まるようなことはありませんでした。
途中経過としては・・・
- やはりFreeなPublic DNSは挙動が色々と違うらしい・・・(OpenDNSなども一部のサイトの問い合わせには返事を返さないとか聞いたことはあります)
- 素直にISPのDNSを使ったほうがよい
- 最悪、ルートDNSに問い合わせ(ただ、これって本当は良くないと思いますが、どうなんでしょう?)
- 先に設定している内容そのものを疑え(プログラム自体はその次)
ISPやらルートDNS、その他PublicなDNSなどでの差異について検証したほうがいいんですかね・・・
また、今まで運用してたUnboundなんかはSERVFAIL
とDoS攻撃対策まわりはどうなってるんですかね(PowerDNS recursorとの違いという意味で)
(たぶん続く)