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