在环回地址上禁用IPv6(本地主机,计算机名称…)

我们尝试在新的Windows Server 2008 R2计算机上安装第三方软件产品,并发现除了通过本地localhost或计算机名称(例如:parsing为localhost VPS-Web )之类的环回地址访问本地服务外,所有工作都可以正常工作。 我们不使用IPv6,并希望在软件兼容之前将其禁用。

我尝试使用这些说明来禁用Windows 2008 R2上的IPv6,但并未禁用localhost的协议。 Ping localhostVPS-Web仍将返回::1:而不是127.0.0.1 。 我可以使用ping localhost -4来获取正确的地址,但IPv6优先于IPv4,因此第三方软件只能获得IPv6地址。

我最初检查了SilverbackNetbuild议的主机文件,但在Windows 2008 R2服务器上,这是默认文件:

 # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost 

#表示主机文件中的注释,因此所有条目都被注释掉了,第一行有点混乱。 然后我注意到,有两个localhost的条目被注释掉了,所以我尝试去注释一个IPv4,它的工作! 我应该先尝试一下,但是我被第一线抛弃了。 使用下面的主机文件ping计算机名称或本地主机将始终返回一个IPv4地址,它解决了第三方软件的问题!

 # localhost name resolution is handled within DNS itself. # ::1 localhost 127.0.0.1 localhost 127.0.0.1 VPS-Web 

设置“DisabledComponents”= 0x20下

HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\ TCPIP6 \参数\

将设置该机器在前缀策略中使用IPv4而不是IPv6。

创buildregistry项,如果它不存在。

有关使用DisabledComponentsregistry值的初始ServerFault线程确实是实现此目的的最佳方法。 主机文件的调整不应该在运行良好的networking中进行。 如果您拥有Active Directory,registry调整也容易通过组策略进行部署和恢复。

它没有工作的原因是因为DisabledComponentsregistry设置被读为一组位标志,而不是简单地打开或closures。 这里是微软关于这个主题的官方文档:
如何在Windows 7,Windows Vista,Windows Server 2008 R2和Windows Server 2008中禁用IP版本6(IPv6)或其特定组件

简短的版本是,要在Vista / 2008及更高版本上完全禁用IPv6,请将DisabledComponents的值设置为0xff 。 我在我们没有明确使用IPv6的每台机器上都这样做。 它具有显着缩短ipconfig命令的输出的好的副作用。

您是否尝试从%systemroot%\ system32 \ drivers \ etc中的主机文件中删除条目? 这应该做到这一点,如果你只是需要“localhost”永远是IPv4。 但是,如果它是基于服务器名称,这可能不会工作。

您也可以进入NIC本身的属性,取消选中IPv6框,从而启用IPv4。 应该做的伎俩。

尝试添加一行到你的主机文件,如:

::1 VPW-Web

这应该使parsing器能够获得VPW-Web作为IPv6回送的名称。