Linux 上使用 named 进行条件 DNS 转发

Linux 上使用 named 进行条件 DNS 转发

我有一台 Centos 5.2 服务器,它运行了 named 来进行 DNS 解析 - 它不保存任何自己的信息,只是转发所有请求。来自 named.conf:

options {
[...]
        forwarders { 1.1.1.1; 1.1.1.2; };
};

named.conf 中的所有其他行都保留为默认设置。

我想更改配置,以便对 newdomain.com 下的任何请求都会传递到 22.22.22.22,而对任何其他地址的请求都会转到 1.1.1.1 或 1.1.1.2

我该如何配置此服务器上的 DNS 来执行此操作?

答案1

呵呵,在我自己做一些修整之前,我对之前的答案投了赞成票。

好的,因此,如果您编辑named.conf并添加以下内容:

zone "newdomain.com" {
    type forward;
    forward only;
    forwarders { 22.22.22.22; };
};

现在您将无法轻松地进行反向查找,您必须修改以下区域语句以适应域的 IP 地址(这最初是 192.168.80.0/24 的反向)。

zone "80.168.192.in-addr.arpa" {
    type forward;
    forward only;
    forwarders { 22.22.22.22; };
};

做出改变后,你应该

  1. 检查您是否没有弄乱配置文件: named-checkconf

  2. 告诉 bind 重新加载其配置:( rndc reload 更推荐/etc/init.d/bind reload)

请记住,这将返回该域的非权威性答案。解决此问题的方法是(如果远程 DNS 有问题,则可以提供更好的本地缓存)作为该区域的从属服务器。


编辑以添加forward only;语句。这将导致查询在尝试转发器中指定的服务器后失败,而不是失败后再尝试标准查找。还编辑以将 /etc/init.d/bind reload 更改为rndc reload注释中的建议之后。

答案2

如果您正在尝试优化,并且 22.22.22.22 是该区域的授权,那么您也可以使用存根区域:

zone "newdomain.com" {
    type stub;
    masters { 22.22.22.22 };
};

这与转发略有不同。它将查询服务器 22.22.22.22 以获取 NS 记录,并始终将它们保存在缓存中。这将执行几乎相同的操作,但如果还列出了另一个 NS 主机(例如,33.33.33.33),则您的服务器将了解并使用它。

我相信这里的存根区域是比条件转发更好的选择。

答案3

您能作为 newdomain.com 的从属服务器吗?即进行完全传输?

相关内容