web-dev-qa-db-ja.com

外部DNS再帰を無効にする方法

BINDで再帰クエリを無効にするには、/etc/bind/named.conf.optionsのオプションセクションに次の行を追加する必要があることを知っています。

allow-transfer {"none";};
allow-recursion {"none";};
recursion no;

上記の構成はすべてのDNS再帰クエリを無効にしますか?

外部ネットワーククエリに対してのみDNS再帰を無効にし、内部ネットワークに対してのみ再帰を保持するにはどうすればよいですか?

再帰を無効にすると、BINDによってどのようなプロセスが実行されて名前要求が解決されますか?反復または逆ですか?

6

一部のクライアントでは再帰を有効にし、ビューを使用して他のクライアントでは再帰を無効にできますが、そもそも再帰をオフにする利点の一部が失われるため、お勧めしません。再帰的な解決と信頼できるサービスには、異なるネームサーバーを使用する必要があります。 (必要に応じて、2台のサーバーを同じマシンで実行できます。)それでも、次のように行うことができます。

// global options apply to external clients
options {
    recursion no;
    additional-from-auth no;
    additional-from-cache no;
};

view "local" in {
    // view options enable recursion only for local clients
    match-clients { 172.16.45.80/23; 192.168.12.0/24; 127.0.0.1/8; ::1; };
    recursion yes;
    additional-from-auth yes;
    additional-from-cache yes;

    zone "." in {
            type hint;
            file "/etc/bind/db.root";
    };

    // put definitions for zones like "localhost" and "127.in-addr.arpa" here
}

// put definitions for real authoritative zones here.

最後の文の質問「BINDによって実行されるプロセスは、名前要求を解決しますか?反復または逆ですか?」については、質問がわかりません。再帰サービスを提供しないように構成されたネームサーバーは、単に再帰クエリへの応答を拒否します。

7
Celada