一个 DNS 服务器托管两个具有相同 NS 记录的不同域?

一个 DNS 服务器托管两个具有相同 NS 记录的不同域?

我在 Debian 8 x64 上运行 bind9,并想为我的网站托管两个区域:

example.com
example.net

我配置了 named.conf.* 文件,在区域目录中设置了 db.example.com 和 db.example.net,然后尝试加载两者。.com 成功,但 .net 失败。它说没有 NS 记录。

我对具有相同 IP 的两台设备使用以下 NS 记录。这不可能吗?

ns1.example.com IN NS 1.1.1.1
ns2.example.com IN NS 1.1.1.2

答案1

原则上,您尝试做的事情是完全可行的,但我发现您的区域文件片段存在 4 个问题。如果您发布完整的区域文件,我可以提供更好的指导,但您的区域文件完全错误。有效的区域文件(用于执行您要做的事情)可能如下所示:

@   IN SOA   ns1.example.com. soa.example.com. (
                        2016010401 ; serial
                        3600; refresh
                        600;  retry
                        86400 ; expire
                        3600 ) ; min TTL

     IN  NS ns1
     IN  NS ns2
     IN  A  33.33.33.33

ns1  IN A   1.1.1.1
ns2  IN A   2.2.2.2
www  IN CNAME www.provider.domain.

这里有几个重要的部分 -
请注意“@”是区域文件中的第一个字符 - 这意味着这个域名从 /etc/named.conf 中的引用中获取我们所引用的域名的队列 - 这允许我们对其他域使用相同的域结构。

IN NS nsX 记录前面没有任何内容 - 这是因为我们正在为整个区域设置 NS 记录。“nsX”位是相对寻址 - 即 equivalnet 到 ns1.@ = ns1.example.com 或 ns1.example.net,具体取决于 named.conf 中的条目

A 1.1.1.1 中的 ns1 行指定了 ns1 的 IP 地址。这确实会造成循环引用 - 即,为了解析 ns1.example.com,您需要知道名称服务器 example.com 的 IP 地址,而后者又需要知道 ns1.example.com。Bind 可以自行解决此问题 - 但互联网的其余部分无法解决 - 因此,您需要在注册域名时向注册商指定 IP 地址和域名 [因此可以在根/父名称服务器中创建“Glue”记录]

请注意,如果您指定 smtp.example.com IN A 20.20.20.20 之类的内容,这将无法按预期工作。正确的做法是“smtp.example.com. IN A 20.20.20.20”(请注意 . 字符 - 如果您省略它,Bind 会将您的意思解释为 smtp.example.com.example.com

为了完整起见,您当然需要在 /etc/named.conf 或等效文件中指定区域文件。您可以按如下方式执行此操作:

zone "example.com"
{
     type master;
     file "/path/to/zone.file";
};


zone "example.net"
{
     type master;
     file "/path/to/zone.file";
};

相关内容