bind9 区域文件中的 NS 记录

bind9 区域文件中的 NS 记录

我今天遇到了一个奇怪的情况。

通常,当我们设置 bind9 区域记录时,我们会将 NS 记录与我们的 ORIGIN 相同。但是今天我在生产站点中发现了一个有效的 bind9 设置,其中的 NS 记录指向另一个域:

[数据/cat_com.zone]

$ORIGIN cat.com.
$TTL 600
@       IN      SOA     ns.tree.com.    hostmaster.cat.com. (
                        2015030200
                        21600
                        3600
                        604800
                        86400 )

        IN      NS      ns.tree.com.
        IN      NS      ns2.tree.com.
        IN      MX      10      cat.com.

ns      IN      A       1.2.3.124
ns2     IN      A       1.2.3.124


host19  IN      A       1.2.3.66

而在tree.com的记录中:[data/tree_com.zone]

$TTL 600

@   IN  SOA ns.tree.com. hostmaster.tree.com. (
      2015030200 ; serial
      28800 ; refresh
      7200 ; retry
      3600000 ; expire
      86400 ; default_ttl
      )
@   IN  NS      ns.tree.com.
@   IN  NS      ns2.tree.com.
@   IN  MX  10  mail.tree.com.



tree.com.              IN  A 1.2.3.66

ns.tree.com.           IN A 1.2.3.124
ns2.tree.com.          IN A 1.2.3.124

在named.conf中,有以下内容:

zone "tree.com" {
        type master;
        file "data/tree_com.zone";
};


zone "cat.com"  {
        type master;
        file "data/cat_com.zone";
};

因此,当我尝试解析 cat.com 中的 A 记录(假设为 host19.cat.com)时,我可以获取记录 1.2.3.66。这很奇怪,因为根据 SOA 区域文件,NS 记录指向 ns.tree.com,而在 tree.com 的 SOA 区域文件中,没有 host19.cat.com 的信息。在这种情况下,dns 解析过程如何才能无错误地工作?NS 记录在这里是否起作用,或者只有 named.conf 决定应使用哪个 SOA 区域文件(在这种情况下,cat.com 将引用 cat_com.zone 文件),而 cat.com SOA 中的 NS 记录没有任何意义?

答案1

让域名/区域文件指向该域之外的名称服务器是完全可以的,即将其用作ns1.example.com该域的名称服务器是完全可以的example.org

不仅意味着你不需要胶水记录example.org区域内,管理通常也更容易。

我认为你犯了一个概念上的小错误,认为外部 NS 记录(例如)ns1.example.com意味着example.org域的资源记录也应该从区域数据中检索example.com。事实并非如此,NS 记录仅指向主持人运行该域的名称服务,但资源记录将来自该example.org域特定的区域数据。

相关内容