在 SBS 2008 中,首次安装或重新启动时,DNS 查询成功,但大约 1 天后,用户报告他们无法访问某些网站。检查后,可能会发现无法访问的网站位于 .uk 和 .eu 顶级域名 (TLD) 或美国境外的某些其他 TLD 中。
如果放置几天,问题可能会自行解决,然后过一天左右再次出现。
如果重新启动DNS服务器服务,或者清除服务器上的DNS缓存,那么问题会暂时得到解决,但大约一天之后又会再次出现。
答案1
导致此问题的原因是,在欧盟国家(以及美国以外的某些其他 TLD),名称服务器记录通常缓存超过 1 天。SBS2008 对允许名称服务器记录缓存的最大时间有一个上限,默认为 1 天。此默认设置在美国运行良好,但当 .uk 和 .eu 记录过期时,它们不会从缓存中删除,但不再作为有效记录返回。因此,它们有效地阻止了这些 TLD 中的 DNS 查找成功,直到记录过期并从缓存中删除,或者 DNS 服务器服务重新启动。
解决方法是增加 DNS 服务器中的最大生存时间 (TTL) 设置,以便它能够识别超过 1 天的记录。经验表明,将该值设置为 4 天通常就足够了,但最大设置为 30 天。
解决方法
可以通过重新启动DNS服务器服务或者清除DNS服务器上的DNS缓存来暂时解决该问题。
永久解决方案包括 - 增加最大 DNS 缓存 TTL 值。 - 重新配置 DNS 服务器以使用 DNS 转发器而不是依赖根提示。
解决方案
为了永久解决问题,需要将 MaxCacheTTL 值更改为大于 TLD TTL 的值(默认值为 1 天,最大值为 30 天)。在 SBS2008 上没有负面影响,因为这是资源记录缓存的 TTL。这只是它将存储在 DNS 服务器上的最大值。如果实际 TTL 更短,则将使用更短的值。
- 启动注册表编辑器 (Regedit.exe)。
- 找到以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters 在“编辑”菜单上,单击“新建”,单击“DWORD(32 位)值”,然后添加以下值:
值:MaxCacheTtl
数据类型:DWORD
数据值:0x69780(十进制 432000 = 5 天)单击“确定”。
- 退出注册表编辑器。
- 重新启动 DNS 服务器。
作为额外的预防措施,使用以下方法清除 DNS 解析器缓存
IPCONFIG /FlushDNS
更改后,应监控服务器以检查问题是否再次发生。由于此值不会影响 SBS2008 上的正常行为,因此如果问题仍然存在,我们可以将此值增加到更大的值。