在 Windows 上使用了 18 年的 hosts 文件后,我很惊讶地在 Windows 7 build 7100 中看到了这一点:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
有谁知道为什么要引入此更改?我敢肯定,一定有某种合理的推理。
而且,也许更相关的是,Windows 7 中是否还有其他与 DNS 相关的重要更改?想到像 localhost 名称解析这样基本的东西已经改变,我有点害怕……让我觉得 Win7 中的 DNS 堆栈还有其他微妙但重要的变化。
我咨询了 Windows 团队的开发人员,实际答案比这篇文章的其他答案更无害:)
在未来的某个时刻,随着世界从 IPV4 过渡到 IPV6,希望在其环境中简化网络管理的公司最终将禁用/卸载 IPV4。
在 Windows Vista 中,当卸载 IPv4 并启用 IPv6 时,对 A (IPv4) 地址的 DNS 查询会导致 IPv4 环回(来自 hosts 文件)。这当然会在未安装 IPv4 时引起问题。修复方法是将始终存在的 IPv4 和 IPv6 环回条目从主机移动到 DNS 解析器,在那里它们可以被独立禁用。
-肖恩
Windows 7 引入了(可选)对DNSSEC验证的支持。这些控件可以在“本地组策略”插件 (
c:\windows\system32\gpedit.msc
)中的“名称解析策略”下找到不幸的是,它 (AFAIK) 不支持RFC 5155
NSEC3
记录,许多大型区域运营商(包括.com
)在未来几年与 DNSSEC 一起上线时将使用这些记录。鉴于 Windows 上越来越多的应用程序使用 IP 与自己对话,可能包括许多 Windows 服务,我可以看到有人将 localhost 更改为指向其他地方,这是一个有趣的攻击媒介。我的猜测是它作为 Microsoft 的SDL的一部分进行了更改。
我可以看到这也是一种加强他们安全的尝试。通过“修复” localhost 始终指向环回,他们可以避免 DNS 中毒攻击,这些攻击开始在野外出现。
我确实同意,但在某些层面上有点令人不安......
我很想知道是否可以在 DNS 本身中重新定义 localhost。使用明文文件来管理这些设置可能从未被视为安全最佳实践。在我看来,微软的新安全措施不仅仅是阻止 root 访问,而是更深入地研究了细微的漏洞。无论如何,我不确定一个人可以在多大程度上领先于积极主动的黑帽子。
我认为这与 Microsoft 为目标 IP 地址选择实施 RFC 3484 有关。这是一个反向移植到 IPv4 的 IPv6 功能,影响 Vista/Server 2008 及更高版本。此更改破坏了循环 DNS,因此即使这不能回答您的问题,这绝对是一个需要了解的重大 DNS 更改。
Microsoft 企业网络博客中的更多信息。