不分割DNS,但closures

我已经阅读了关于split-DNS的这篇文章: http : //www.isaserver.org/tutorials/You_Need_to_Create_a_Split_DNS.html 。 我想我理解这个概念,但是要设置文章中build议的最佳解决scheme,我需要控制“外部”(我不能在我的情况下)的DNS服务器。

我的情况如下:一个名为corp.local的内部域。 一个叫做corp.com的公共领域。 我在地址www.corp.com上有一个网站,它实际上指向域corp.local上的已发布服务器。 我想将这个Web服务器发布到内部客户端(域名corp.local上的客户端),而不需要去外部IP地址。 所以我只是在内部客户端( corp.local )使用的DNS服务器上设置了一个叫做corp.com的新域,并为www.corp.com添加一个条目,这次指向一个内部IP地址。

对我的问题:我有很多外部Web服务器上的其他条目应该保持原样。 我知道我可以复制和维护两台DNS服务器,但理想情况下我想这样做:

情况1

  1. 内部客户要求www.corp.com。
  2. 内部DNS服务器查看是否有www.corp.com条目。
  3. 它已经,所以它回答www.corp.com的内部IP地址。

案例2

  1. 内部客户要求someother.corp.com。
  2. 内部DNS服务器查看它是否具有someother.corp.com的条目, 并且它找不到
  3. 然后将请求转发到外部DNS服务器 ,查看是否有一个为someother.corp.com定义的条目。
  4. 外部DNS服务器使用外部IP为someother.corp.com响应内部DNS服务器。
  5. 内部DNS服务器回应内部客户端。

情况2在现实中发生的情况是,内部DNS服务器认为它对区域corp.com是有权限的(这种情况是这样的),并且如果它没有为其他某个.corp.comfindlogging,它将响应客户端与否定答案。

希望我自己清楚,期待你的投入! 提前致谢! 另外,我使用Windows DNS服务器运行Windows域(Windows Server 2008)。

这是一个小黑客 – 我只做了绑定,但它的工作原理。

创build一个名为www.corp.com的新区域,然后为该区域创build和@logging为您网站的内部IP地址。

这将使DNS服务器认为它是权威的“区” www.corp.com和返回@logging时,请求www.corp.com 。 它会将* .corp.com的其余部分传递给正常的公共DNS服务器进行recursion查找并返回外部IP。

如果使用Unbound作为recursion服务器,则可以使用local-zonelocal-data指令回复特定本地数据,并将所有未知条目转发给外部服务器。

 local-zone: corp.com. transparent local-data: "www.corp.com. IN A www.xxx.yyy.zzz" 

手册页在http://www.unbound.net/documentation/unbound.conf.html