私有 DNS 区域,用于解析私有子域名,并将现有公共子域名转发到公共名称服务器

私有 DNS 区域,用于解析私有子域名,并将现有公共子域名转发到公共名称服务器

我有一个 TLD,其中包含一系列公共子域名,例如*.example.com。我还有一个用作 SVN 存储库的私有服务器,我希望在 上可用svn.example.com,但仅限于私有网络上。目前,我已通过创建区域文件并使用以下声明实现了此svn.example.com.zone目标:

zone "svn.example.com" IN {
    type master;
    file "/etc/named/svn.example.com.zone";
};

在区域文件中:

@                IN  NS  svn.example.com.
svn.example.com. IN  A   10.200.1.1

所有其他域名都转发到公共名称服务器。这可行,但并不理想,因为如果我想添加新的私有子域,就需要创建一个全新的区域。如果我将此区域设为整个 TLD 的主记录example.com,那么我认为对当前公共的请求*.example.com将不再适用于使用私有 DNS 的客户端(除非它们在私有 DNS 的区域文件中重复)。

有没有办法让我提供一个区域文件,该文件指定一个或多个私有子域,但仍会转发无法解析到公共名称服务器的请求?我尝试使用forward区域类型,但我无法指定自己的区域文件,它只能转发。

更新

火箭科学家的 DNS 第 6 章给出了以下 DNS 配置示例内部网络上的隐形 DNS 服务器。这似乎与我想要实现的目标相当吻合,并且特别建议在私有 DNS 区域中复制公共 DNS 记录。显然,我想要解决的问题是记录重复,所以这更像是一种变通方法。

答案1

实现此目的的典型方法是:

  • 拆分 DNS - 在内部 DNS 服务器上拥有不同的 DNS 记录...但内部 DNS 服务器必须具有全部记录,并需要在内部和外部服务器之间同步
  • 委派 - 创建 svn.example.com 区域,并让您的 example.com DNS 服务器在 svn.example.com 上查找与 *.svn.example.com 相关的任何内容(包括 svn.example.com 本身)

一种方法是将“internal.example.com”之类的子域名委托给您的 LAN 的 DNS 服务器。在这些 DNS 服务器上,您可以为 internal.example.com(或 i.example.com(如果您希望更短))配置一个区域,并添加所需的任何记录。

您可能能够自动同步您的内部和公共 DNS 服务器以使用拆分 DNS,具体取决于您在每个服务器上使用的软件。

第三个选项是将内部 IP 地址放入公共 DNS 中。这可能存在安全隐患(如果您不在 LAN 上,有人可能会利用它诱骗您连接到他们的服务器),但应该可行,而且设置起来非常简单。

答案2

最终我选择了这里描述的解决方案:http://www.zytrax.com/books/dns/ch6/#stealth。 那是:

  • 设置一个隐身 DNS 服务器,其中包含以下记录公共和私人主机

主要原因是,根据我所在组织的需求,复制少量公共 DNS 记录可带来以下好处:

  • 容易明白
  • 快速初始设置

主要缺点是冗余以及需要手动将隐形服务器与我们的公共 DNS 同步。

答案3

解决这个问题最简单的方法是将所有内部地址放在内部子域下,例如*.internal.example.com。这还可以消除任何歧义,即您访问的主机名仅限于内部,并且不会从外部解析。

答案4

阅读有关绑定视图的内容。例如:http://oreilly.com/pub/a/oreilly/networking/news/views_0501.html。您可以限制谁(源 IP)有权访问哪个区域,并且可以拥有给定区域的多个版本。

相关内容