基于 DNS 的环境确定

基于 DNS 的环境确定

发现以下内容这里问题是:我在哪里可以找到有关如何确切地在 Windows 上实现这个吗?有没有人有指南或指南?或者也许能提供您宝贵的建议吗?

具体来说,我该如何做到“所有 QA 服务器首先解析 qa.example.com 中的条目,然后如果查找失败,它们将尝试 example.com”(我是一名开发人员,而不是 DNS 专家,但我们的 IT 支持拒绝在这方面提供帮助:()

为您的服务器使用基于 DNS 的环境确定。首先根据顶级域的功能将其拆分为多个子域,然后在每个子域中创建指向该服务的相关服务器的 DNS 服务名称。根据上面的列表,我们将获得:

* clientdb.prod.example.com for Production
* clientdb.perf.example.com for Performance Testing
* clientdb.qa.example.com for QA
* clientdb.dev.example.com for Development

然后,服务器根据功能解析其相关子域中的条目。也就是说,所有 QA 服务器将首先解析 qa.example.com 中的条目,然后如果该查找失败,它们将尝试 example.com。这样,您就可以为客户端数据库主机名 (clientdb) 创建一个配置条目,该条目将在所有环境中正确解析。此技术的另一个优点是仍然可以在公共顶级域中定义全局服务。

这似乎与提供“水平分割”DNS服务。读完后,我发现我可能需要为每个环境单独设置 DNS 服务器。这是真的吗?还是 Windows Server 2k8 DNS 支持根据请求者的 IP 以某种形式“标记”记录以使其可见?

答案1

在 Windows 客户端上,在 NIC 设置中,在 TCP、高级、DNS 选项卡下;有一个用于搜索各种域的选项。默认情况下,它设置为仅使用主连接后缀(域);但您可以将其切换为使用您设置的列表(确保您包括全部您希望它搜索的域名)。

Windows Server 无法标记记录,因此只有某些客户端才能进行查找。您可以完全阻止某些客户端访问 DNS 服务器,但不能比这更细致。

在 DNS 中,您可以创建规范名称记录来指向您想要访问的实际服务器名称。在内部网络中使用这种技术并不常见,但在面向互联网的部署中却很常见。

答案2

这通常通过编辑 DNS 搜索列表来处理。这因平台而异,但您可以配置 DNS 以查询一系列域以获取无域名称。在解析没有任何域的“clientdb”时,它会遍历列表,直到找到解析结果。如果您的搜索列表如下:

prod.example.com
qa.example.com
dev.example.com

您的 DNS 客户端应该通过查询以下内容来搜索正确的 IP:

clientdb.prod.example.com
clientdb.qa.example.com

等等。当然,如果您为服务提供完整的 FQDN,则此方法不起作用。但在 Windows 上,您可以提供子域(例如 clientdb.us)。它会搜索该存根(因此最好无法解析),但随后会遍历搜索列表(clientdb.us.prod.example.com)。这是黑客行为,您不应该这样做,但它在 Windows 上可以工作。不知道 Unix 的情况。

这是每个客户端的设置。

相关内容