禁用环回地址(本地主机、计算机名称等)上的 IPv6

禁用环回地址(本地主机、计算机名称等)上的 IPv6

我们尝试在新的 Windows Server 2008 R2 计算机上安装第三方软件产品,发现除了通过环回地址(例如localhost或计算机名称(例如VPS-Web解析为localhost))访问本地服务外,一切正常。我们没有使用 IPv6,并且希望禁用它,直到软件兼容为止。

我尝试使用这些说明在 Windows 2008 R2 上禁用 IPv6但它没有禁用 协议localhost。PinglocalhostVPS-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,请将 的值设置DisabledComponents0xff。我在我管理的每台未明确使用 IPv6 的机器上都执行此操作。它具有显著缩短命令输出的良好副作用ipconfig

答案4

您还可以进入 NIC 本身的属性,取消选中 IPv6 框,保留启用 IPv4。应该可以解决问题。

相关内容