我们尝试在新的 Windows Server 2008 R2 计算机上安装第三方软件产品,发现除了通过环回地址(例如localhost
或计算机名称(例如VPS-Web
解析为localhost
))访问本地服务外,一切正常。我们没有使用 IPv6,并且希望禁用它,直到软件兼容为止。
我尝试使用这些说明在 Windows 2008 R2 上禁用 IPv6但它没有禁用 协议localhost
。Pinglocalhost
或VPS-Web
仍将返回::1:
而不是127.0.0.1
。我可以使用ping localhost -4
来获取正确的地址,但 IPv6 优先于 IPv4,因此第三方软件只能获取 IPv6 地址。
答案1
我最初按照 SilverbackNet 的建议检查了主机文件,但在 Windows 2008 R2 服务器上,这是默认文件:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
#
表示主机文件中的注释,因此所有条目都被注释掉了,第一行有点令人困惑。然后我注意到有两个 localhost 条目被注释掉了,所以我尝试取消注释 IPv4 条目,结果成功了!我应该先尝试一下,但第一行让我偏离了轨道。使用下面的主机文件 ping 计算机名称或 localhost 将始终返回 IPv4 地址,这解决了第三方软件的问题!
# localhost name resolution is handled within DNS itself.
# ::1 localhost
127.0.0.1 localhost
127.0.0.1 VPS-Web
答案2
设置“DisabledComponents”= 0x20
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\参数\
将在前缀策略中将该机器设置为使用 IPv4 而不是 IPv6。
如果不存在则创建注册表项。
答案3
关于使用注册表值的初始 ServerFault 线程DisabledComponents
确实是实现此目的的最佳方法。在运行良好的网络中,永远不需要调整主机文件。注册表调整也是很多如果您有 Active Directory,则更容易通过组策略进行部署和恢复。
它不起作用的原因是DisabledComponents
注册表设置被读取为一组位标志,而不是简单的打开或关闭。以下是 Microsoft 关于此主题的官方文档:
如何在 Windows 7、Windows Vista、Windows Server 2008 R2 和 Windows Server 2008 中禁用 IP 版本 6 (IPv6) 或其特定组件
简而言之,要在 Vista/2008 及更高版本上完全禁用 IPv6,请将 的值设置DisabledComponents
为0xff
。我在我管理的每台未明确使用 IPv6 的机器上都执行此操作。它具有显著缩短命令输出的良好副作用ipconfig
。
答案4
您还可以进入 NIC 本身的属性,取消选中 IPv6 框,保留启用 IPv4。应该可以解决问题。