如何禁用外部 DNS 递归?

如何禁用外部 DNS 递归?

我知道要禁用 BIND 中的递归查询,我需要将以下几行添加到/etc/bind/named.conf.options

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

上述配置是否会禁用所有 DNS 递归查询?

如何才能禁用仅对外部网络查询的 DNS 递归,并仅保留对内部网络的递归?

如果我禁用递归,那么 BIND 将执行什么过程来解析名称请求?迭代还是逆向?

答案1

您可以使用视图为某些客户端启用递归,并为其他客户端禁用递归,但不建议这样做,因为这样会失去关闭递归的一些优势。您应该使用不同的名称服务器进行递归解析和权威服务。(如果需要,两个服务器可以在同一台机器上运行。)不过,以下是操作方法:

// 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 将执行什么过程来解析名称请求?迭代还是逆向?”,我不明白这个问题。配置为不提供递归服务的名称服务器将直接拒绝回答递归查询。

相关内容