我需要为一系列Linux容器运行本地BIND DNS服务器。假设该区域是example.com
我的基础架构中已经有一个example.com域,我想使用我的本地DNS服务器覆盖一些记录(它必须是DNS而不是本地主机)。
有没有办法告诉BIND检查我的本地DNS服务器,如果没有找到记录,则查找另一台DNS服务器上同一区域的记录。
我尝试过设置转发器,但我觉得这只适用于不同的区域而不是同一区域。
有什么想法吗?
答案 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;
};
};