今まで BIND を「フルリゾルバ」と「DNSコンテンツ・サーバー」で使用していましたが、
- 再帰的な問合せを使ったDDoS攻撃
- BIND自体の脆弱性
上記の対策が繰り返し行われているなど、いずれもキャッシュサーバーに起因する問題が多く、その都度対策をしている状態でした。
コンテンツサーバーには現状では問題はないようですので、キャッシュサーバーは外部から隔離することにしました。最近のBINDにはVIEWという機能があり、問い合わせ元を識別して、キャッシュサーバーまたはコンテンツサーバーとして動作できるのですが、その分設定ファイルも複雑になりますので見送りました。
google-public-dns-(a|b).google.com を利用するというのもあるのですが・・・キャッシュサーバー専用を入れたほうが楽かなと考えました。
$ dig robly.jp を実行してみると
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
まあ、0ミリ秒というのは計測できないぐらい早いですよということでしょうけど・・・速そうです。
参考までに、google-public-dns-(a|b).google.com を使用してみた結果は
$ dig @8.8.8.8 robly.jp
;; Query time: 16 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
でしたので、ローカルのキャッシュサーバーの方が、あたりまえ体操並みに速いようでした。
しかし、google-public-dns 速い!
BIND の queries ログを見ていても、キャッシュへの問い合わせは無くなりました。
以前は query (cache) ‘xx.xx.xx.xx’ /A|ANY|PTR/IN’ denied がたくさん出てたことを考えると、負荷も下がったと考えていいようです!?