我为我的本地域 (mydomain.local) 设置并运行了一个 Microsoft DNS 服务器。从那时起,我设置了一个公共域 (mydomain.com),并希望我的所有本地客户端在本地网络上时为 mydomain.com 拥有不同的 A 主机。如果它们是远程的,我希望它们获得任何人都可以从公共 DNS 服务器(托管在其他地方)在互联网上获得的解析。
场景 1:内部
client1.mydomain.local 是我本地网络上的一台 PC,它尝试解析 test.mydomain.com。该客户端应该返回 192.168.1.100。当客户端尝试解析 test2.mydomain.com 时,它应该返回 192.168.1.101。最后,当客户端尝试解析 test3.mydomain.com 时,它应该返回 8.8.3.6。
场景 2:外部
client2 是世界其他地方的一台 PC,它尝试解析 test.mydomain.com。该客户端应该返回 8.8.3.4。当客户端尝试解析 test2.mydomain.com 时,它应该返回 8.8.3.5。最后,当客户端尝试解析 test3.mydomain.com 时,它应该返回 8.8.3.6。
目前,我已经在新域 (mydomain.com) 上设置了本地 DNS 服务器 (mydomain.local),其中只有几个选定的 A 主机(test、test2,但没有 test3)。我的目标是以某种方式将 DNS 请求转发到不在我的 (mydomain.com) 区域内的特定 DNS 服务器。此时,当我尝试解析 test1.mydomain.com 和 test2.mydomain.com 时,它们解析得很好!但是当我尝试解析 test3.mydomain.com 时,它失败了,无法解析。
答案1
好的,我找到了两种可以做我想做的事情的方法......
方法 1:按主机划分区域
如果您需要使用很多主机,这种方法会比较粗糙并且有些混乱,但就我而言,我只有几个主机,因此这种方法对我来说非常有效,这就是我采用的方法......
首先,您需要将您的 DNS 区域托管在第三方(我使用的是 GoDaddy)。这是供公众(互联网)解析 test.mydomain.com 使用的,互联网端的客户端将返回 8.8.3.4。这就是我已经拥有的,现在我需要我的内部网络以不同的方式解析这些主机。所以我做了以下事情...
在本地网络 DC 上创建一个名为“test.mydomain.com”的新区域。在该区域中创建一个“A-Host”记录,不要在第一个名为“名称”的字段中输入任何内容,只需将其留空即可。然后在“IP 地址”字段中输入您的本地内部 IP。在我的情况下,我使用了“192.168.1.100”。
现在我使用互联网上的客户端(办公室外)进行测试,test.mydomain.com 解析为 8.8.3.4!而我本地网络上的客户端将 test.mydomain.com 解析为 192.168.1.100!!!
方法 2:两个区域,一个用于内部,一个用于外部
这种方法比较省事,但需要更多维护。使用这种方法,您需要让多个位置的多个区域保持最新状态。我选择不走这条路,只是因为维护。如果您有很多主机,并且想要一个干净的外观,这种方法可能适合您。
在本地网络 DC 上创建一个新区域。将该区域命名为“mydomain.com”。现在手动将所有记录从(在我的情况下由 GoDaddy 托管)区域复制到本地 DC 中新创建的区域。完成此操作后,只需更改您想要用于内部使用的记录即可。这实质上是一种劫持区域。因此,如果您跳转到 godaddy 并使用新的 a-host 更新区域或更改现有区域,则需要在本地 DC 服务器上执行相同操作以反映更改。