我已经问过一个类似的问题,但问题太具体了(命名用于内部使用并转发特定子域)。对于这个问题,我找到了一种不太好的解决方法。
现在我问一个更普遍的问题。问题是为什么解析其他区域依赖于区域“。”配置?
我们有一个无法访问互联网的 DNS,因为我们希望它仅解析本地域名。我们只希望它解析一个外部域。我们将其称为 dmz.example.com。/etc/named.conf 中该区域的配置为:
zone "dmz.example.com" in
{
type forward;
forwarders { 10.100.1.1; 10.100.1.2; }; // DMZ DNSes
};
由于我们不希望 DNS 解析外部/互联网域,因此我们使用空的 root.servers 文件完成了此操作,如下所示:
zone "."
{
type hint;
file "root.servers"; // root.server is empty file
};
当 DNS 被要求提供互联网域名时,它会立即返回无答案,因为 root.servers 为空。对于它是主服务器或从服务器的域,它会正常解析它们。使用此配置,DNS 不会解析 dmz.example.com。
然后我们更改了区域“。”的配置。我们将其设置为“。”的转发区域,但转发器是一个不存在或无法访问的 IP。就像这样:
zone "." in
{
type forward;
forwarders { 10.100.100.100; }; // non-existent IP
};
当我们对区域“.”使用此配置时,DNS 会解析 dmz.example.com,但不会立即响应对互联网域的查询。它会等待转发器响应的超时时间。
我不喜欢这样,原因有二:
- DNS 现在会对不存在的 IP 进行不必要的查询。
- 互联网域名不再立即得到解决并给出无答案。
我如何才能使 DNS 解析 dmz.example.com 并像以前一样响应互联网域(立即响应,没有不必要的网络流量)?