当正向查找区域不包含请求的子域时如何使用外部 DNS 转发器

当正向查找区域不包含请求的子域时如何使用外部 DNS 转发器

使用 Windows 2008 R2 DNS:

我们有一个正向查找区域:

somerealdomain.com

us-wil    |    A    |    10.10.0.1
us-chi    |    A    |    10.10.0.2
us-day    |    A    |    10.10.0.3
us-sea    |    A    |    10.10.0.4
us-sf     |    A    |    10.10.0.5
us-ny     |    A    |    10.10.0.6
give      |    A    |    10.10.0.7
me        |    A    |    10.10.0.8
test      |    A    |    10.10.0.9

如果我对其中任何一个执行操作NSLookup,它们显然会正确指向内部 IP。

现在,如果我想使用我们的转发器 8.8.8.8、8.8.4.4 等提供的外部 DNS 来解析任何不存在的子域,我该怎么做?比如说,我想解析未包含在正向查找区域中但可在公共 DNS 服务器上解析的 get.somerealdomain.com?

我需要这个,这样如果有人搜索我们未包含在正向查找区域中的子域,它将转到公共 DNS 服务器并进行解析。我假设这会默认发生,就像我们没有为其写入记录的任何其他域一样,但是由于我们将 somrealdomain.com 作为正向查找区域,因此任何未写入记录的子域都会死掉,而不是询问外部 DNS。为什么?我该如何解决这个问题?

答案1

DNS 要求给定区域只有一个实例(该区域可以由多个权威服务器提供服务,但只允许一个区域实例)。您根本无法让 DNS 服务器首先查询本地正向区域(即本地定义的主区域或从属区域),然后在未找到匹配条目时查询另一个 DNS 服务器。您实际上是在覆盖本地服务器上 somerealdomain.com 的定义(因此就它而言,该区域的公共版本不存在)。

有许多可能的解决方法。如果您有权访问公共区域文件(直接或通过区域传输),那么合适的脚本可以使用未被本地覆盖的公共条目回填您的本地区域。这并不容易,需要一些深入的知识。

另一种方法是在您的 DNS 服务器前面放置一个过滤 DNS 代理 - 这种 DNS 代理用于渗透测试,可以配置为根据查询的内容将查询转发到不同的 DNS 服务器(或者直接转发虚假答案 - 这实际上就是您正在做的事情)。

最后,你可以使用 DNS 缓存,例如 dnsmasq(与过滤 DNS 代理的原理相同) - 请参阅此回答了解详情。

答案2

  1. 删除 somerealdomain.com 区域
  2. 创建 us-wil.somerealdomain.com 区域
  3. 向 us-wil.somerealdomain.com 区域添加 A 记录,并将主机名留空(使用内部 IP 地址)。
  4. 对所有内部主机名重复步骤 2 和 3

答案3

通常,子域名指向的是上级域名。您的 DNS 服务器认为它是 somerealdomain.com 的授权机构。当收到对 subdomain.somerealdomain.com 的请求时,它会检查自己的记录并说“该域名不存在。我应该知道我是父域名”。

您需要一条记录来指向子域的 DNS 服务器。通常,这涉及将子域(或子区域)委托给另一个 DNS 服务器。我相信您在 DNS 控制台中右键单击域并选择“新委托”。也可以使用 dnscmd 命令完成。

相关内容