以下是Server 2008 DNS的一个Bug,在Server 2008 R2 DNS中已经修正。

我们可能会设置这样的配置场景

当一个域名需要解析
1. 先用本地区域的DNS做解析
2. 假如本地DNS解析失败,就转到转发器解析
3. 假如转发器解析失败,就转到根提示服务器做解析


那实现这样的功能,我们会在DNS管理控制台勾选“如果没有转发器可用,请使用根提示”

分享:在Server 2008 DNS遇到的Bug_第1张图片

分享:在Server 2008 DNS遇到的Bug_第2张图片

 

但实际上,假如你用的还是Server 2008 系统而不是Server 2008 R2,这里的选择框的作用刚好是适得其反。

假如你想转发器解析失败就转到根提示服务器做解析,那应该把这个勾去掉,其实这是Server 2008 DNS的一个bug.

为什么会这样呢,据我观察,这里的勾选和去勾,相当于系统帮你在注册表中改以下一个键值


Value Name: IsSlave
Value Path: HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters
Value Type: REG_DWORD

如果 IsSlave 键为0,DNS 转发查询在查询失败时会继续去找根提示服务器做查询,
如果 IsSlave 键为1,DNS 转发查询在查询失败时就直接发 SERVER_FAILURE 的响应,不再继续转到根提示服务器做查询了。 


实际上,勾选“如果没有转发器可用,请使用根提示”,IsSlave键值为0才对,可是在Server 2008中,勾选了后,你可以发现注册表的IsSlave 键值为1,刚好相反了。

分享:在Server 2008 DNS遇到的Bug_第3张图片


在使用Server 2008 DNS时,这是一个小Bug, 做选择时注意一下勾选的方向,这个问题在Server 2008 R2中得到了解决。

Microsoft KB 有详细的说明。
http://support.microsoft.com/kb/2001154