QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

BIND(Windows版)の"allow-query"の挙動について

Windows版の質問になってしまいますが、件名についてご教授ください。

BIND9.4.2(Windows版)を用いてキャッシュサーバのテストを
しているのですが、"allow-query"の設定が解らなくなって
しまいました。(私が知らないだけでしたら、すみません。)

named.confファイルは下記の通りです。

-----<named.conf>ここから----------
options {
directory "C:\\windows\\system32\\dns\\etc";
};

zone "." in {
type hint;
file "named.root";
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "0.0.127.in-addr.arpa.zone";
};

logging {
channel "default-log" {
file "C:\\windows\\system32\\dns\\log\\default.log" versions 5 size 10m;
severity debug;
print-time yes;
print-severity yes;
print-category yes;
};

category default { "default-log"; };

};
-----<named.conf>ここまで----------

この状態でクライアントからnslookupでクエリーを投げると
「Query refused」となってしまいます。
ちなみに、BINDが動作しているサーバ上からは名前解決ができます。

BINDには以下のログが記録されており、アクセスが拒否されてしまいます。

14-2-2008 13:06:10.886 security: info: client 172.xx.xx.29#56615: query (cache) 'www.yahoo.co.jp/A/IN' denied

そこで試しにOptionsステートメントに"allow-query { any; };"を
記載して再度クエリーを投げてみると、応答が帰ってきます。

ちなみにBINDのログには下記が記録されていました。

14-2-2008 13:32:00.668 resolver: debug 1: createfetch: ns1.google.com A
14-2-2008 13:32:00.668 resolver: debug 1: createfetch: ns2.google.com A
14-2-2008 13:32:00.668 resolver: debug 1: createfetch: ns3.google.com A
14-2-2008 13:32:00.668 resolver: debug 1: createfetch: ns4.google.com A
14-2-2008 13:32:01.511 resolver: debug 1: createfetch: www.google.com A
14-2-2008 13:32:01.793 resolver: debug 1: createfetch: www.l.google.com A

BINDでは、"allow-query { any; };"がデフォルト値だと思っていたのですが、
Windows版においては、拒否がデフォルト値であったりするのでしょうか。

以上、よろしくお願いします。

質問者:く〜ら

回答

く〜らさんの書き込み (2008-02-14 13:48) より:

BINDでは、"allow-query { any; };"がデフォルト値だと思っていたのですが、

Windows版においては、拒否がデフォルト値であったりするのでしょうか。

デフォルト値は変わっていないみたいですが
allow-query-cacheって設定項目が出来てから挙動がややこしいようです。
文字化けしますが↓が参考になります。
http://ml.gentoo.gr.jp/users/200708.month/2040.html

9.4.1-P1あたりを調べれば情報がありそうです。
_________________桃李不言 下自成蹊

投稿者:anights

編集 履歴 (0)

anightsさんの書き込み (2008-02-14 16:39) より:

デフォルト値は変わっていないみたいですが

allow-query-cacheって設定項目が出来てから挙動がややこしいようです。

anightsさん 情報ありがとうございます。

allow-query-cacheをヒントにというか、BIND9のマニュアルを調べてみました。
(はじめからそうすればよかったのですが、、、すみません。)

調べた限りでは、BIND9における"allow-query"周辺の設定値は以下のようです。

allow-query:
デフォルト値→{ any; }

allow-query-cache:
デフォルト値→{ localnets; localhost; };
ただし、設定されていなければ、"allow-recursion"の設定が適用される。
"allow-recursion"が設定されていなければ、"allow-query"の設定が適用される。
"allow-query"も設定されていなければ、デフォルト値が適用される。

allow-recursion:
デフォルト値→{ localnets; localhost; };
ただし、設定されていなければ、"allow-query-cache"の設定が適用される。
"allow-query-cache"が設定されていなければ、"allow-query"の設定が適用される。
"allow-query"も設定されていなければ、デフォルト値が適用される。

ここでいう設定とは、named.conf上に明記されていなければ、との解釈かなと思います。

つまり、特に明記しなければ、下記の設定値となるということになります。

allow-query { any; }
allow-query-cache { localnets; localhost; };
allow-recursion { localnets; localhost; };

ここまできて、queryとrecursionがごっちゃになっていたのでは、と思い
もう一度試してみました。

■named.confにそれぞれの設定を明記しない場合
 ・自ゾーンに対するquery → OK
 ・再起問い合わせ → 同一セグメントから:OK
           それ以外から:NG

■named.confにallow-query { any; }を明記した場合
 ・自ゾーンに対するquery → OK
 ・再起問い合わせ → OK

■named.confにallow-query { none; }を明記した場合
 ・自ゾーンに対するquery → NG
 ・再起問い合わせ → NG

■named.confにallow-query { none; } 及びallow-recursion { any; };を明記した場合
 ・自ゾーンに対するquery → NG
 ・再起問い合わせ → OK

ご参考までに、こんな感じになりした。

大変勉強になりました。どうもありがとうございました。

投稿者:く〜ら

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。