4

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

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

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

我曾尝试设置转发器,但我认为这仅适用于不同的区域而不是同一个区域。

有任何想法吗?

4

3 回答 3

5

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
于 2017-10-03T17:43:13.910 回答
4

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

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

命名的.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
于 2013-09-09T23:23:06.633 回答
0

您也可以尝试使用绑定转发器。基本上,您的 DNS 服务器(如果它不知道答案)会向转发器请求 IP 解析。

IE:

# 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;
      };
};
于 2015-06-25T08:40:00.490 回答