我有一个Windows Server 2008 R2服务器托管公共网站。我最近通过跟随方法:
在我的 DNS 服务器属性中,在服务器选项下的“高级”选项卡中,我选中了以下选项:禁用递归。
现在我遇到的问题是 DNS 名称无法在本地解析。因此我无法打开 google.com 或 microsoft.com 或任何其他网站。
现在我发现我必须配置一个拆分 DNS 配置,这样我就有了:
- 一个区域仅回答本地 DNS 查询并允许递归
- 一个区域仅回答外部 DNS 查询并且不允许递归。
我当前的设置如下:
我有一个名为WIN-FOOBAR的服务器和一个名为foo.bar.com的域,因此有两个条目_msdcs.foo.bar.com和foo.bar.com。
现在我有两个问题:
如果我在服务器选项中禁用递归(例如在名为 WIN-FOOBAR 的父节点中),那么我如何才能拥有两个区域,其中一个允许递归,另一个不允许?前瞻区域entry 是 WIN-FOOBAR 的子节点。但我没有看到针对各个区域禁用递归的选项。
我应该如何命名第二个区域,该区域在内部使用?当前区域是
foo.bar.com
,我可以创建第二个区域并为其命名foo.bar.com
吗?还是必须将其命名为不同的名字?如果我将其命名为foo.local
,它是否仍能解析查询foo.bar.com
?
答案1
递归是服务器设置,而不是区域设置。
如果 DNS 服务器仅可供内部客户端访问和使用,那么您可以保持递归启用。
如果 DNS 服务器用于您的公共域名/区域并且未被内部客户端使用,那么您可以完全禁用递归,并且您不需要做任何事情,只需为您的公共域名创建一个区域并确保在您的注册商处注册了正确的 NS 记录。
如果 DNS 服务器既被内部客户端使用,又托管您的公共 DNS 区域,那么您的操作就错了,您应该将两者分开。
此外,_msdcs 区域的存在告诉我该服务器是您的 AD 域的 DNS 服务器,在这种情况下,我强烈建议您不要使用该服务器来托管您的公共 DNS 区域,并且不要让外部可以访问该服务器。
答案2
你不能这样做Microsoft DNS 服务器。
您可以在绑定使用 acls 来指定谁被允许进行递归查询。
BIND9 配置代码片段示例:
acl "internal" {
10.0.0.0/8;
192.168.0.0/16;
172.16.0.0/12;
}
allow-query: 0.0.0.0/0;
allow-recursion: "internal";