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


15

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

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


您是否尝试过与供应商联系以查看他们是否有解决方法?Ping请求IPv6地址,因此它将得到:: 1,但是不支持IPv6的应用程序将不会获得这些地址。
克里斯·S

该软件是各种组件(JAVA,Tomcat,Apache,MSSQL,SAP,JDBC,WMI)的混合体,其中任何一个都可能是问题所在。我没有使用IPv6,所以我想禁用它。同样令我担心的是,对于环回适配器,似乎没有选择这样做。
格雷格布雷

Answers:


12

我最初按照SilverbackNet的建议检查了主机文件,但是在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

这是否删除了netstat中监听的ipv6([::])?
Jared Burrows

它不是。[::]是IPv6的0.0.0.0等效项,代表系统上所有可用的IP地址。上面的修复程序专门针对localhost回送地址。我同时具有上述设置以及DisabledComponents = 0xffffffff注册表项,我仍然看到应用程序在[::]上侦听。我不知道是否有任何方法可以完全禁用IPv6。
格雷格布雷2013年

感谢您确认我的问题!我只是确保:)
Jared Burrows 2013年

这对我不起作用。我刷新了dns缓存并重新启动,但是它仍然返回IPv6地址...
jj_

5

在下面设置“ DisabledComponents” = 0x20

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters \

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

如果不存在,请创建注册表项。


2

有关使用DisabledComponents注册表值的初始ServerFault线程确实是执行此操作的最佳方法。在运行良好的网络中,主机文件调整永远是没有必要的。如果您有Active Directory,则通过组策略也可以轻松地进行注册表调整。

它不起作用的原因是因为该DisabledComponents注册表设置被读取为一组位标志,而不仅仅是打开或关闭。这是Microsoft的官方文档,主题是:
如何在Windows 7,Windows Vista,Windows Server 2008 R2和Windows Server 2008中禁用IP版本6(IPv6)或其特定组件。

简短的版本是要在Vista / 2008及更高版本上完全禁用IPv6,请将的值设置DisabledComponents0xff。我在管理的每台未明确使用IPv6的计算机上执行此操作。它的副作用是大大缩短了ipconfig命令的输出。


2
根据您的链接(support.microsoft.com/kb/929852#letmefixit),此注册表项允许在除回送之外的许多地方禁用IPv6 ...
Frank Nocke 2013年

1
你是对的。但是,有些值可以更改默认网络功能,以优先使用IPv4而不是IPv6,这将有效解决OP连接到本地主机或NetBIOS计算机名称的问题。
Ryan Bolger 2013年

这些都没有在Windows Server 2012R2中真正为我工作。这包括尝试修改主机,DisabledComponents注册表设置以及我在其他地方看到的许多其他想法。可在Windows Server 2008上运行,但我没有针对2012R2的解决方案。
斯科特·怀特

修改DisabledComponents值后,需要重新启动。如果将其设置为0xffffffff,则即使在2012R2上也无法使用。运行ipconfig的结果应该不会返回与IPv6相关的任何内容,因此ping localhost应该ping v4地址。
Ryan Bolger 2015年

新发现表明,正确的值应为0xFF而不是0xFFFFFFF,以避免5秒的启动延迟。请参阅更新的Microsoft KB929852(尽管这仍然不会禁用环回)
wandersick

2

您是否尝试过从%systemroot%\ system32 \ drivers \ etc中的主机文件中删除条目?如果只需要“ localhost”始终为IPv4,就应该这样做。但是,如果它基于服务器名称,则可能无法使用。


1
Windows上的主机文件位于%systemroot%\ system32 \ drivers \ etc下,即使该文件不包含localhost的ipv6引用,也可以pinging localhost :: 1响应。
Helvick'1

如果将localhost映射到该主机(并且仅映射到该主机,而不是IPv6),则会收到127.0.0.1响应
Frank Nocke 2013年

0

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


3
不适用于环回地址...
Greg Bray

啊!:(哈哈!
JohnThePro

这只会禁用LAN接口。隧道和环回仍在此处连接(通过netsh接口ipv6> show interface进行验证)
Chadddada 2011年

-3

尝试在主机文件中添加一行,例如:

::1 VPW-Web

这应该使解析器可以VPW-Web作为IPv6环回的名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.