先日、自宅のキャッシュサーバの1台を試験的にUnboundからPowerDNS Recursorへ変更したのですが、ブラウザ閲覧中になぜか1分ほど応答がなくなる現象に遭遇しました。
何か設定が間違っているのか色々と探し回ったのですが、どうやらこれが原因のよう。
DoSおよびDNS Amp向け対策が施されていることから、Throttlingと呼ばれる実装がなされているとのこと。
If a remote server indicates that it is lame for a zone, the exact question won’t be repeated in the next 60 seconds.
https://doc.powerdns.com/md/recursor/security/
– After 4 ServFail responses in 60 seconds, the query gets throttled too.
– 5 timeouts in 20 seconds also lead to query suppression.
query logを見ながら確認したところ、所々にSERVFAILになっているところがありました。
60秒で4つのSERVFAILが発生した段階で絞られる、という動作に繋がるのかPowerDNSは応答を1分ほど返さなくなります。またrecursor.conf
内にも該当する設定値がありました。
# recursor.conf server-down-max-fails=64 server-down-throttle-time=60
また全体で64個のSERVFAILが発生した場合にもThrottlingの対象になるみたいです。
とりあえず今回は宅内でのネットワーク接続環境ではしか接続されるものはないので、server-down-max-fails=0
(つまるところdisable
)にて様子を見ることにしました。
今のところはThrottlingは発生していないようです。
ただし、参照先にもあるようにこの設定値はセキュリティのことを念頭において設定されているものなので、多くのアクセスがあるようなところは設定値を勘案しながらの設定にするようにしてください。
今回そもそもSERVFAILが発生している原因については掴めていません。ただ、ISPのDNSにForwardしてるだけなんですけどねぇ・・・
間違い等あればご指摘ください。