bind9 わし、まぬけ

レンタルサーバーのDNS設定で、自サーバー内のドメインの問い合わせは OK で外部のサーバーは不可という現象でずーっと困っていた。

/etc/resolv.conf にプロバイダの DNS も並べておくと、とりあえず、メールなどのDNSを使うプログラムはエラーを出しつつ、何とか動いていたが、なぜ外部サーバーが引けないのか、年末の業務が片付いたのでじっくり調べてみる事にした。

[/etc/named.conf]

recursion yes;
allow-recursion{
localhost;
};

レンタルサーバーで、localhostの問い合わせで再帰検索を許可し、外部からの問い合わせは自サーバーのみで、再帰検索許さないという設定をしたつもりなのだが、localhost から nslookup や dig で外部のドメインを検索すると、SERVFAIL のステータスが帰ってきて再帰検索が行なえない。

ログにも碌に記録が残らず、何が悪いのやらさっぱり分からん。

「なんじゃこれ?パッケージ腐ってんじゃねえの?」

と呟きつつ、冷静に named.conf を見直すと、

zone “.” IN {
type hint;
file “/dev/null”;
};

/dev/null !? …

zone “.” IN {
type hint;
file “named.ca”;
};

と書き直し、 rndc reload で無事、localhost からのみの再帰検索が可能になった。named.ca のファイルがあるから使われているはずだという思い込みがアカンかった。

まあ、DNS キャッシュポイズニングという攻撃がある以上、初期値で named.ca を使って再帰検索ができるようにしておくのは確かに良くないな。