我有一个顶级域名(TLD),有一系列公开的子域名,例如*.example.com 。 我也有一个私人服务器,用作SVN仓库,我希望可以在svn.example.com ,但只能在私人networking。 目前我已经通过创build区域文件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
所有其他域都被转发到公共域名服务器。 这个工作,但它不是理想的,因为它需要创build一个全新的区域,如果我想添加一个新的私人子域名。 如果我将该区域作为整个example.com TLD的主logging,那么我认为对当前公共*.example.com请求将不再适用于使用私有DNS的客户端(除非它们在私有DNS区域文件中重复)。
有没有办法让我提供一个区域文件,指定一个或多个私人子域名,但仍然转发无法parsing到公共名称服务器的请求? 我尝试使用forward区域types,但是我不能指定我自己的区域文件,只能转发。
火箭科学家的DNS第6章给出了一个内部networking上的隐形DNS服务器的 DNSconfiguration示例。 这似乎与我想要达到的合理匹配,特别是build议复制私有DNS区域中的公共DNSlogging。 显然,虽然我想解决的问题是logging的重复,所以这是更多的解决方法。
实现这一目标的典型方法是:
一种方法是将一个像“internal.example.com”这样的子域名委托给你的局域网的DNS服务器。 在这些DNS服务器上,您可以为internal.example.com(或i.example.com)(如果您希望缩短)configuration一个区域,并添加所需的任何logging。
您可能能够自动同步您的内部和公共DNS服务器以使用拆分DNS,具体取决于您在每个DNS上使用的软件。
第三种方法是将内部IP地址放在公共DNS中。 这可能有安全隐患(如果你不在你的局域网上,有人可以用它来欺骗你连接到他们的服务器),但是应该工作,而且安装起来很简单。
最终,我最终用这里描述的解决scheme: http : //www.zytrax.com/books/dns/ch6/#stealth 。 那是:
主要的原因是,对于我的组织的需求,复制less量的公共DNSlogging提供了以下好处:
主要缺点是冗余,需要手动同步隐身服务器与我们的公共DNS。
最简单的方法是将所有内部地址放在内部子域下,例如*.internal.example.com 。 这也消除了您访问的主机名只是内部的任何歧义,并且不会从外部解决。
阅读关于绑定视图。 例如: http : //oreilly.com/pub/a/oreilly/networking/news/views_0501.html 。 您可以限制谁(源IP)可以访问哪个区域,并且可以有给定区域的多个版本。