如何配置 DNS 服务器以转发有关特定域及其所有子域的查询

如何配置 DNS 服务器以转发有关特定域及其所有子域的查询

我有 DNS 服务器(带有 bind9 的 Linux 机器),它对某些域具有权威性,并将所有其他查询转发到我的 ISP 提供商的外部 DNS 服务器。

到目前为止还没有问题。

现在我希望将有关某些特定域的查询转发到我的内部 DNS 服务器,例如:

zone "some_domain" {
       type    forward;
        forwarders {
                some_internal_dns_ip;
        };
};

到目前为止仍然没有问题,一切正常。

但是,我还想将一些反向 DNS 查询转发到我的内部 DNS。因此,我添加了:

zone "16.172.in-addr.arpa" {
        type    forward;
        forwarders {
                some_internal_dns_ip;
        };
};

但这并没有像我预期的那样工作。关于“ 16.172.in-addr.arpa”(例如 1.16.172.in-addr.arpa)的查询可以正确解析,但关于完整地址(例如1.1.16.172.in-addr.arpa)的反向查询则不能。我知道我的服务器应该在这里使用一些递归查询,但无法配置它。我已经尝试添加以下选项

recursion yes;
allow-recursion { 127.0.0.1; };
allow-recursion-on { 127.0.0.1; };

但没有成功。(我在这里使用了环回地址,因为我只需要对我的 DNS 主机使用此功能,而不需要对其客户端使用此功能)有什么建议吗?

答案1

这是因为 bind 默认会创建“空区域”。因此,您的名称服务器是“16.172.in-addr.arpa.”区域的主服务器,并返回“NXDomain”作为您的答案。

如果您在named.conf中定义“empty-zones-enable no;”,它将按预期工作。

答案2

我遇到了同样的问题,你只是在 named.conf 语法中缺少 IN:

zone "5.10.in-addr.arpa." IN {

    type forward;
    forwarders {10.5.0.1;};
};

zone "6.10.in-addr.arpa." IN {

    type forward;
    forwarders {10.6.0.1;};
};

这很令人困惑,因为主/从区域不需要它。无论如何,这就是为我修复它的方法。

答案3

两种方法...

  1. 将 BIND 设为 16.172.in-addr.arpa 的主服务器。在区域文件中,使用 NS 记录委派给其他内部服务器。

或者

  1. 将 BIND 设为 16.172.in-addr.arpa 的从属服务器。将另一个内部服务器设置为主服务器。

相关内容