如何解析本地未找到但在另一个DNS服务器上存在的同一区域的DNS名称?

时间:2013-09-09 11:13:26

标签: dns bind

我需要为一系列Linux容器运行本地BIND DNS服务器。假设该区域是example.com

我的基础架构中已经有一个example.com域,我想使用我的本地DNS服务器覆盖一些记录(它必须是DNS而不是本地主机)。

有没有办法告诉BIND检查我的本地DNS服务器,如果没有找到记录,则查找另一台DNS服务器上同一区域的记录。

我尝试过设置转发器,但我觉得这只适用于不同的区域而不是同一区域。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

没有简单的方法可以做你想做的事。

对于繁琐的解决方案,您可以为要在父区域内覆盖的每个DNS名称定义区域文件,例如:

的named.conf:

zone "foo.domain" {
    type master;
    file "foo.domain";
}

zone "bar.domain" {
    type master;
    file "bar.domain";
}

foo.domain:

foo.domain. SOA ...
            NS  foo.domain.
            A   1.2.3.4

bar.domain:

bar.domain. SOA ...
            NS  foo.domain.
            A   2.3.4.5

答案 1 :(得分:3)

您可以使用响应策略区域(以下称为rpz),该区域允许覆盖通过绑定服务器查询的任何名称。

路径是指Debian。

options部分/etc/bind/named.conf.options中,添加:

options {
    # Create a response-policy zone to allow overrides
    response-policy { zone "rpz"; };
};

rpz中添加/etc/bind/named.conf.local区域:

zone rpz {
    type master;
    file "/etc/bind/db.rpz";
    allow-query { none; };
};

最后,rpz区域文件/etc/bind/db.rpz

; BIND zone file for rpz zone
;
$TTL    600
@               SOA     localhost.        root.localhost. (
                            2017100300      ; Serial
                            86400           ; Refresh
                            10800           ; Retry
                            3600000         ; Expire
                            600             ; Negative Cache TTL
                    )
            NS      localhost.

google.com      CNAME   forcesafesearch.google.com.
example.com     A       192.0.2.123

答案 2 :(得分:0)

您也可以尝试使用bind forwarders。 基本上你的DNS服务器(如果它不知道答案)将要求转发器进行IP解析。

I.e。:

# vi /etc/bind/named.conf.options
options {
      directory "/var/cache/bind";

      auth-nxdomain no; # conform to RFC1035
      listen-on-v6 { any; };
      listen-on { 127.0.0.1; 192.168.1.0/24; };

      forwarders {
         10.138.27.194;
      };
};