bind9:如何在本地区域配置中查询外部名称服务器

bind9:如何在本地区域配置中查询外部名称服务器

我已经在安装中配置了一个区域 bind9。它应该是一个公共名称服务器,我通过 dyndns 子域的 python 脚本对其进行管理。但我的主要网站由第三方托管在其他地方,在不久的将来我也想在本地托管它们。现在我希望 bind9 查看本地数据库以进行名称解析,并在失败的情况下重定向到(或从中获取)外部 dns。这是我的配置,但它不适用于外部查询(example.com 和 www.example.com)。

$ cat /etc/bind/named.conf.local
include "/etc/bind/zones.rfc1918";
zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { any; };
    update-policy local;
};

$ cat /etc/bind/zones/db.example.com
$ORIGIN .
$TTL 172800     ; 2 days
example.com               IN SOA  ns1.example.com. hostmaster.example.com. (
                          116        ; serial
                          7200       ; refresh (2 hours)
                          900        ; retry (15 minutes)
                          1857600    ; expire (3 weeks 12 hours)
                          8400       ; minimum (2 hours 20 minutes)
                          )
                    NS      ns1.example.com.
                    NS      ns1.external-host.com.
                    NS      ns2.external-host.com.
ns1.external-host.com      A       1.2.3.1
ns2.external-host.com      A       1.2.3.2

$ORIGIN example.com.
ns1                     A       1.1.1.1
@            IN         NS      ns1.external-host.com.
@            IN         NS      ns2.external-host.com.
www            IN         NS      ns1.external-host.com.
www           IN         NS      ns2.external-host.com.
clients                 A       1.1.1.1
$ORIGIN clients.example.com.
$TTL 3600       ; 1 hour
test                    A       2.2.2.2

答案1

我认为这是不可能的,因为您的一个名称服务器是本地的(无法从另一个名称服务器访问)。从技术上讲,您可以尝试转发器或多主选项。但即使它有效,对于小型设置来说,这也不是好方法。

DNS 基于哪个服务器是区域主服务器的信息 - 这是由类型设置的。区域master负责获取当前信息,因此应该只有一个(因为实例之间可能存在差异)。区域slave知道主服务器,可以直接向其询问整个区域。如果主服务器也知道它的从服务器,它也可以传输整个区域。这就是你应该做的。

将公共名称服务器保留在原处,并将其作为主服务器。在本地环境中安装第二个绑定,并将区域添加为从属服务器。还要将从属服务器添加到主服务器,以便自动更新正常工作。为了查看两者的日志,应该发出 AXFR 或 IXFR 请求。

因此,您的区域定义可能看起来像这样,假设主区域是 1.2.3.4,从区域是 5.6.7.8:

掌握:

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    also-notify { 5.6.7.8; };
    notify yes;
};

奴隶:

zone "example.com" {
    type slave;
    file "/etc/bind/zones/db.example.com"; // this is the file updated.
    allow-notify { 1.2.3.4; };
    allow-transfer { 1.2.3.4; };
};

如您所见,从设备需要从主设备可访问,因为它的地址是静态配置的。

相关内容