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

DrS*_*ker 5 networking domain-name-system linux bind named-conf

我有一个以 DNS 解析命名的 Centos 5.2 服务器 - 它不保存自己的任何信息,只是转发所有请求。从named.conf:

options {
[...]
        forwarders { 1.1.1.1; 1.1.1.2; };
};
Run Code Online (Sandbox Code Playgroud)

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

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

如何在此服务器上配置 DNS 以执行此操作?

Bui*_*ots 17

呵呵,我在自己整理之前对之前的答案投了赞成票。

是的,所以,如果您编辑named.conf并添加以下内容:

zone "newdomain.com" {
    type forward;
    forward only;
    forwarders { 22.22.22.22; };
};
Run Code Online (Sandbox Code Playgroud)

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

zone "80.168.192.in-addr.arpa" {
    type forward;
    forward only;
    forwarders { 22.22.22.22; };
};
Run Code Online (Sandbox Code Playgroud)

进行更改后,您应该

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

  2. 告诉 bind 重新加载它的配置:( rndc reload 更喜欢/etc/init.d/bind reload

请记住,这将返回域的非权威答案。解决此问题的方法(并在远程 DNS 出现问题时提供更好的本地缓存)将充当该区域的从属设备。


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

  • 命令 'rndc reload' 是重新加载绑定配置文件的首选方法,而不是使用 init 脚本重新启动守护程序 (3认同)